diff --git a/openlane/marmot_no_sram/Makefile b/openlane/marmot_no_sram/Makefile
new file mode 100644
index 0000000..f4f5e53
--- /dev/null
+++ b/openlane/marmot_no_sram/Makefile
@@ -0,0 +1,12 @@
+TARGET = macro_obs.tcl macro_pdn.tcl
+
+all: $(TARGET)
+
+macro_obs.tcl: macro.cfg
+	../../../script/mk_obstruction.py $< > $@
+
+macro_pdn.tcl: macro.cfg
+	../../../script/mk_pdn_macro_hooks.py $< > $@
+
+clean:
+	rm -f $(TARGET)
diff --git a/openlane/marmot_no_sram/base.sdc b/openlane/marmot_no_sram/base.sdc
new file mode 100644
index 0000000..f208423
--- /dev/null
+++ b/openlane/marmot_no_sram/base.sdc
@@ -0,0 +1,153 @@
+# JTAG port
+set TDO_port io_out[1]
+set TDI_port io_in[2]
+set TMS_port io_in[3]
+set TCK_port io_in[4]
+
+# create clock
+create_clock [get_ports wb_clk_i] -name wb_clk_i -period $::env(CLOCK_PERIOD)
+
+create_generated_clock -name tag_array_ext_ram_clk -add \
+  -source [get_ports wb_clk_i] -master_clock [get_clocks wb_clk_i] -divide_by 1 \
+  -comment {D-Cache Tag RAM clk} [get_ports tag_array_ext_ram_clk]
+
+create_generated_clock -name data_arrays_0_ext_ram_clk -add \
+  -source [get_ports wb_clk_i] -master_clock [get_clocks wb_clk_i] -divide_by 1 \
+  -comment {D-Cache Data RAM clk} [get_ports data_arrays_0_ext_ram_clk[*]]
+
+create_generated_clock -name tag_array_0_ext_ram_clk -add \
+  -source [get_ports wb_clk_i] -master_clock [get_clocks wb_clk_i] -divide_by 1 \
+  -comment {I-Cache Tag RAM clk} [get_ports tag_array_0_ext_ram_clk]
+
+create_generated_clock -name data_arrays_0_0_ext_ram_clk -add \
+  -source [get_ports wb_clk_i] -master_clock [get_clocks wb_clk_i] -divide_by 1 \
+  -comment {I-Cache Data RAM clk} [get_ports data_arrays_0_0_ext_ram_clk[*]]
+
+create_generated_clock -name slow_clock -add \
+  -source [get_ports wb_clk_i] -master_clock [get_clocks wb_clk_i] -divide_by 4 \
+  -comment {AON clk} [get_nets \MarmotCaravelChip.clockToggleReg ]
+
+create_clock [get_ports $TCK_port] -name jtag_TCK -period 100.0
+
+# clock groups
+set_clock_groups -name async_clock -asynchronous \
+ -group [get_clocks {wb_clk_i tag_array_ext_ram_clk data_arrays_0_ext_ram_clk tag_array_0_ext_ram_clk data_arrays_0_0_ext_ram_clk slow_clock}] \
+ -group [get_clocks {jtag_TCK}]\
+
+# max delay for RAM clocks
+#set MAX_DELAY_RAM_CLOCK 6.0
+#set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports tag_array_ext_ram_clk]
+#set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports data_arrays_0_ext_ram_clk]
+#set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports tag_array_0_ext_ram_clk]
+#set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports data_arrays_0_0_ext_ram_clk]
+
+# input/output delay
+set input_delay_value [expr $::env(CLOCK_PERIOD) * $::env(IO_PCT)]
+set output_delay_value [expr $::env(CLOCK_PERIOD) * $::env(IO_PCT)]
+puts "\[INFO\]: Setting output delay to: $output_delay_value"
+puts "\[INFO\]: Setting input delay to: $input_delay_value"
+
+set input_delay_value_ram [expr $::env(CLOCK_PERIOD) * $::env(IO_PCT_RAM)]
+set output_delay_value_ram [expr $::env(CLOCK_PERIOD) * $::env(IO_PCT_RAM)]
+puts "\[INFO\]: Setting output delay for RAM to: $output_delay_value_ram"
+puts "\[INFO\]: Setting input delay for RAM to: $input_delay_value_ram"
+
+set all_inputs_wo_clk [all_inputs]
+set clk_indx [lsearch $all_inputs_wo_clk [get_port wb_clk_i]]
+set all_inputs_wo_clk [lreplace [all_inputs] $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port $TCK_port]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port tag_array_ext_ram_clk]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port data_arrays_0_ext_ram_clk[0]]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port data_arrays_0_ext_ram_clk[1]]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port tag_array_0_ext_ram_clk]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port data_arrays_0_0_ext_ram_clk[0]]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port data_arrays_0_0_ext_ram_clk[1]]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port data_arrays_0_0_ext_ram_clk[2]]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set clk_indx [lsearch $all_inputs_wo_clk [get_port data_arrays_0_0_ext_ram_clk[3]]]
+set all_inputs_wo_clk [lreplace $all_inputs_wo_clk $clk_indx $clk_indx]
+
+set_input_delay  $input_delay_value  -clock [get_clocks wb_clk_i] $all_inputs_wo_clk
+set_output_delay $output_delay_value -clock [get_clocks wb_clk_i] [all_outputs]
+
+# D-Cache Tag RAM port
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_ext_ram_clk] [get_ports tag_array_ext_ram_csb0]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_ext_ram_clk] [get_ports tag_array_ext_ram_web0]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_ext_ram_clk] [get_ports tag_array_ext_ram_wmask0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_ext_ram_clk] [get_ports tag_array_ext_ram_addr0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_ext_ram_clk] [get_ports tag_array_ext_ram_din0[*]]
+set_input_delay  $input_delay_value_ram  -clock [get_clocks tag_array_ext_ram_clk] [get_ports tag_array_ext_ram_dout0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_ext_ram_clk] [get_ports tag_array_ext_ram_csb1]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_ext_ram_clk] [get_ports tag_array_ext_ram_addr1[*]]
+
+# D-Cache Data RAM port
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_ext_ram_clk] [get_ports data_arrays_0_ext_ram_csb0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_ext_ram_clk] [get_ports data_arrays_0_ext_ram_web0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_ext_ram_clk] [get_ports data_arrays_0_ext_ram_wmask0*[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_ext_ram_clk] [get_ports data_arrays_0_ext_ram_addr0*[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_ext_ram_clk] [get_ports data_arrays_0_ext_ram_din0*[*]]
+set_input_delay  $input_delay_value_ram  -clock [get_clocks data_arrays_0_ext_ram_clk] [get_ports data_arrays_0_ext_ram_dout0*[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_ext_ram_clk] [get_ports data_arrays_0_ext_ram_csb1[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_ext_ram_clk] [get_ports data_arrays_0_ext_ram_addr1*[*]]
+
+# I-Cache Tag RAM port
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_0_ext_ram_clk] [get_ports tag_array_0_ext_ram_csb0]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_0_ext_ram_clk] [get_ports tag_array_0_ext_ram_web0]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_0_ext_ram_clk] [get_ports tag_array_0_ext_ram_wmask0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_0_ext_ram_clk] [get_ports tag_array_0_ext_ram_addr0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_0_ext_ram_clk] [get_ports tag_array_0_ext_ram_din0[*]]
+set_input_delay  $input_delay_value_ram  -clock [get_clocks tag_array_0_ext_ram_clk] [get_ports tag_array_0_ext_ram_dout0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_0_ext_ram_clk] [get_ports tag_array_0_ext_ram_csb1]
+set_output_delay $output_delay_value_ram -clock [get_clocks tag_array_0_ext_ram_clk] [get_ports tag_array_0_ext_ram_addr1[*]]
+
+# I-Cache Data RAM port
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_0_ext_ram_clk] [get_ports data_arrays_0_0_ext_ram_csb0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_0_ext_ram_clk] [get_ports data_arrays_0_0_ext_ram_web0[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_0_ext_ram_clk] [get_ports data_arrays_0_0_ext_ram_wmask0*[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_0_ext_ram_clk] [get_ports data_arrays_0_0_ext_ram_addr0*[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_0_ext_ram_clk] [get_ports data_arrays_0_0_ext_ram_din0*[*]]
+set_input_delay  $input_delay_value_ram  -clock [get_clocks data_arrays_0_0_ext_ram_clk] [get_ports data_arrays_0_0_ext_ram_dout0*[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_0_ext_ram_clk] [get_ports data_arrays_0_0_ext_ram_csb1[*]]
+set_output_delay $output_delay_value_ram -clock [get_clocks data_arrays_0_0_ext_ram_clk] [get_ports data_arrays_0_0_ext_ram_addr1*[*]]
+
+# JTAG port
+set_input_delay  $input_delay_value  -clock [get_clocks jtag_TCK] [get_ports $TMS_port]
+set_input_delay  $input_delay_value  -clock [get_clocks jtag_TCK] [get_ports $TDI_port]
+set_output_delay $output_delay_value -clock [get_clocks jtag_TCK] [get_ports $TDO_port]
+
+# max fanout
+set_max_fanout $::env(SYNTH_MAX_FANOUT) [current_design]
+
+# TODO set this as parameter
+set_driving_cell -lib_cell $::env(SYNTH_DRIVING_CELL) -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
+set cap_load [expr $::env(SYNTH_CAP_LOAD) / 1000.0]
+puts "\[INFO\]: Setting load to: $cap_load"
+set_load  $cap_load [all_outputs]
+
+puts "\[INFO\]: Setting clock uncertainity to: $::env(SYNTH_CLOCK_UNCERTAINITY)"
+set_clock_uncertainty $::env(SYNTH_CLOCK_UNCERTAINITY) [all_clocks]
+
+puts "\[INFO\]: Setting clock transition to: $::env(SYNTH_CLOCK_TRANSITION)"
+set_clock_transition $::env(SYNTH_CLOCK_TRANSITION) [all_clocks]
+
+set_propagated_clock [all_clocks]
+
+puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
+set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
+set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
diff --git a/openlane/marmot_no_sram/config.tcl b/openlane/marmot_no_sram/config.tcl
new file mode 100644
index 0000000..69b96a6
--- /dev/null
+++ b/openlane/marmot_no_sram/config.tcl
@@ -0,0 +1,119 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+set script_dir [file dirname [file normalize [info script]]]
+source $::env(CARAVEL_ROOT)/openlane/user_project_wrapper/fixed_wrapper_cfgs.tcl
+source $::env(CARAVEL_ROOT)/openlane/user_project_wrapper/default_wrapper_cfgs.tcl
+set ::env(PDK) $::env(PDK)
+set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd"
+
+
+set ::env(DESIGN_NAME) Marmot
+
+set ::env(FP_PDN_CHECK_NODES) 0
+set ::env(FP_PDN_ENABLE_RAILS) 1 
+
+set ::env(CLOCK_PORT) "wb_clk_i"
+
+set ::env(CLOCK_PERIOD) "40"
+
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 1059 2096"
+
+#set ::env(PL_OPENPHYSYN_OPTIMIZATIONS) 0
+set ::env(DIODE_INSERTION_STRATEGY) 5
+
+set ::env(MAGIC_WRITE_FULL_LEF) 0
+
+set ::env(SYNTH_FLAT_TOP) 1
+#set ::env(SYNTH_NO_FLAT) 1
+set ::env(CLOCK_TREE_SYNTH) 1
+set ::env(DESIGN_IS_CORE) 1
+set ::env(FP_PDN_CORE_RING) 0
+set ::env(STA_REPORT_POWER) 0
+set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS"
+set ::env(VDD_NETS) {vccd1}
+set ::env(GND_NETS) {vssd1}
+set ::env(VDD_PIN) "vccd1"
+set ::env(GND_PIN) "vssd1"
+set ::env(PL_TARGET_DENSITY) 0.55
+set ::env(PL_SKIP_INITIAL_PLACEMENT) 1
+set ::env(DECAP_CELL) {sky130_ef_sc_hd__decap_*  sky130_fd_sc_hd__decap_*}
+#set ::env(FILL_CELL) {sky130_fd_sc_hd__fill_}
+#set ::env(CTS_TARGET_SKEW) 200
+#set ::env(CTS_SINK_CLUSTERING_SIZE) 100
+#set ::env(CTS_SINK_CLUSTERING_MAX_DIAMETER) 1000
+set ::env(FP_IO_VLENGTH) 1
+set ::env(FP_IO_HLENGTH) 1
+set ::env(ROUTING_CORES) 4
+set ::env(GLB_RT_ALLOW_CONGESTION) 1
+#set ::env(GLB_RT_MAXLAYER) 5
+set ::env(RT_MAX_LAYER) {met4}
+set ::env(FP_PDN_CHECK_NODES) 0
+set ::env(RUN_KLAYOUT_XOR) 0
+set ::env(KLAYOUT_XOR_GDS) 0
+set ::env(KLAYOUT_XOR_XML) 0
+set ::env(FP_PDN_IRDROP) 0
+set ::env(RUN_CVC) 0
+set ::env(RUN_MAGIC_DRC) 0
+#set ::env(TAKE_LAYOUT_SCROT) 1
+
+
+## Source Verilog Files
+set ::env(SYNTH_DEFINES) "SYNTHESIS RAM_ON_TOP"
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
+
+set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../../verilog/rtl/marmot_no_sram]
+set ::env(VERILOG_FILES) "\
+	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
+	[glob $script_dir/../../../verilog/rtl/marmot_no_sram/*.v]"
+
+## SDC
+set ::env(IO_PCT)     0.2
+set ::env(IO_PCT_RAM) 0.3
+set ::env(BASE_SDC_FILE) $script_dir/../../../openlane/marmot_no_sram/base.sdc
+
+
+## Internal Macros
+### Black-box verilog and views
+#set ::env(VERILOG_FILES_BLACKBOX) "\
+#  $::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
+#  $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \
+#  $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/verilog/sky130_sram_1kbyte_1rw1r_32x256_8.v"
+#
+#set ::env(EXTRA_LEFS) "\
+#  $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \
+#  $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/lef/sky130_sram_1kbyte_1rw1r_32x256_8.lef"
+#
+#set ::env(EXTRA_GDS_FILES) "\
+#  $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds \
+#  $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/gds/sky130_sram_1kbyte_1rw1r_32x256_8.gds"
+#
+#set ::env(EXTRA_LIBS) "\
+#  $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/lib/sky130_sram_1kbyte_1rw1r_32x256_8_TT_1p8V_25C.lib \
+#  $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/lib/sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C.lib"
+
+### Macro Placement
+#set ::env(MACRO_PLACEMENT_CFG) $script_dir/../../../openlane/marmot_no_sram/macro.cfg
+
+### Macro PDN Connections
+#source $script_dir/../../../openlane/marmot_no_sram/macro_pdn.tcl
+
+### Obstruction over SRAMs
+#source $script_dir/../../../openlane/marmot_no_sram/macro_obs.tcl
+
+# Pin order
+set ::env(FP_PIN_ORDER_CFG) $script_dir/../../../openlane/marmot_no_sram/pin_order.cfg
+
diff --git a/openlane/marmot_no_sram/pin_order.cfg b/openlane/marmot_no_sram/pin_order.cfg
new file mode 100644
index 0000000..6a52637
--- /dev/null
+++ b/openlane/marmot_no_sram/pin_order.cfg
@@ -0,0 +1,228 @@
+#BUS_SORT
+#NR
+data_arrays_0_0_ext_ram_clk\[2\]
+data_arrays_0_0_ext_ram_csb0\[2\]
+data_arrays_0_0_ext_ram_web0\[2\]
+data_arrays_0_0_ext_ram_wmask02.*
+data_arrays_0_0_ext_ram_addr02.*
+data_arrays_0_0_ext_ram_din02.*
+data_arrays_0_0_ext_ram_dout02.*
+data_arrays_0_0_ext_ram_csb1\[2\]
+data_arrays_0_0_ext_ram_addr12.*
+analog_io\[8\]
+io_in\[15\]
+io_out\[15\]
+io_oeb\[15\]
+analog_io\[9\]
+io_in\[16\]
+io_out\[16\]
+io_oeb\[16\]
+analog_io\[10\]
+io_in\[17\]
+io_out\[17\]
+io_oeb\[17\]
+analog_io\[11\]
+io_in\[18\]
+io_out\[18\]
+io_oeb\[18\]
+analog_io\[12\]
+io_in\[19\]
+io_out\[19\]
+io_oeb\[19\]
+analog_io\[13\]
+io_in\[20\]
+io_out\[20\]
+io_oeb\[20\]
+analog_io\[14\]
+io_in\[21\]
+io_out\[21\]
+io_oeb\[21\]
+analog_io\[15\]
+io_in\[22\]
+io_out\[22\]
+io_oeb\[22\]
+analog_io\[16\]
+io_in\[23\]
+io_out\[23\]
+io_oeb\[23\]
+tag_array_0_ext_ram_clk
+tag_array_0_ext_ram_csb0
+tag_array_0_ext_ram_web0
+tag_array_0_ext_ram_wmask0.*
+tag_array_0_ext_ram_addr0.*
+tag_array_0_ext_ram_din0.*
+tag_array_0_ext_ram_dout0.*
+tag_array_0_ext_ram_csb1
+tag_array_0_ext_ram_addr1.*
+
+#S
+wb_.*
+wbs_.*
+la_.*
+user_clock2
+user_irq.*
+tag_array_ext_ram_clk
+tag_array_ext_ram_csb0
+tag_array_ext_ram_web0
+tag_array_ext_ram_wmask0.*
+tag_array_ext_ram_addr0.*
+tag_array_ext_ram_din0.*
+tag_array_ext_ram_dout0.*
+tag_array_ext_ram_csb1
+tag_array_ext_ram_addr1.*
+
+#E
+data_arrays_0_ext_ram_clk\[0\]
+data_arrays_0_ext_ram_csb0\[0\]
+data_arrays_0_ext_ram_web0\[0\]
+data_arrays_0_ext_ram_wmask00.*
+data_arrays_0_ext_ram_addr00.*
+data_arrays_0_ext_ram_din00.*
+data_arrays_0_ext_ram_dout00.*
+data_arrays_0_ext_ram_csb1\[0\]
+data_arrays_0_ext_ram_addr10.*
+io_in\[0\]
+io_out\[0\]
+io_oeb\[0\]
+io_in\[1\]
+io_out\[1\]
+io_oeb\[1\]
+io_in\[2\]
+io_out\[2\]
+io_oeb\[2\]
+io_in\[3\]
+io_out\[3\]
+io_oeb\[3\]
+io_in\[4\]
+io_out\[4\]
+io_oeb\[4\]
+io_in\[5\]
+io_out\[5\]
+io_oeb\[5\]
+data_arrays_0_ext_ram_clk\[1\]
+data_arrays_0_ext_ram_csb0\[1\]
+data_arrays_0_ext_ram_web0\[1\]
+data_arrays_0_ext_ram_wmask01.*
+data_arrays_0_ext_ram_addr01.*
+data_arrays_0_ext_ram_din01.*
+data_arrays_0_ext_ram_dout01.*
+data_arrays_0_ext_ram_csb1\[1\]
+data_arrays_0_ext_ram_addr11.*
+io_in\[6\]
+io_out\[6\]
+io_oeb\[6\]
+analog_io\[0\]
+io_in\[7\]
+io_out\[7\]
+io_oeb\[7\]
+analog_io\[1\]
+io_in\[8\]
+io_out\[8\]
+io_oeb\[8\]
+analog_io\[2\]
+io_in\[9\]
+io_out\[9\]
+io_oeb\[9\]
+analog_io\[3\]
+data_arrays_0_0_ext_ram_clk\[3\]
+data_arrays_0_0_ext_ram_csb0\[3\]
+data_arrays_0_0_ext_ram_web0\[3\]
+data_arrays_0_0_ext_ram_wmask03.*
+data_arrays_0_0_ext_ram_addr03.*
+data_arrays_0_0_ext_ram_din03.*
+data_arrays_0_0_ext_ram_dout03.*
+data_arrays_0_0_ext_ram_csb1\[3\]
+data_arrays_0_0_ext_ram_addr13.*
+io_in\[10\]
+io_out\[10\]
+io_oeb\[10\]
+analog_io\[4\]
+io_in\[11\]
+io_out\[11\]
+io_oeb\[11\]
+analog_io\[5\]
+io_in\[12\]
+io_out\[12\]
+io_oeb\[12\]
+analog_io\[6\]
+io_in\[13\]
+io_out\[13\]
+io_oeb\[13\]
+analog_io\[7\]
+io_in\[14\]
+io_out\[14\]
+io_oeb\[14\]
+
+#WR
+data_arrays_0_0_ext_ram_clk\[1\]
+data_arrays_0_0_ext_ram_csb0\[1\]
+data_arrays_0_0_ext_ram_web0\[1\]
+data_arrays_0_0_ext_ram_wmask01.*
+data_arrays_0_0_ext_ram_addr01.*
+data_arrays_0_0_ext_ram_din01.*
+data_arrays_0_0_ext_ram_dout01.*
+data_arrays_0_0_ext_ram_csb1\[1\]
+data_arrays_0_0_ext_ram_addr11.*
+analog_io\[17\]
+io_in\[24\]
+io_out\[24\]
+io_oeb\[24\]
+analog_io\[18\]
+io_in\[25\]
+io_out\[25\]
+io_oeb\[25\]
+analog_io\[19\]
+io_in\[26\]
+io_out\[26\]
+io_oeb\[26\]
+analog_io\[20\]
+io_in\[27\]
+io_out\[27\]
+io_oeb\[27\]
+analog_io\[21\]
+io_in\[28\]
+io_out\[28\]
+io_oeb\[28\]
+analog_io\[22\]
+io_in\[29\]
+io_out\[29\]
+io_oeb\[29\]
+analog_io\[23\]
+io_in\[30\]
+io_out\[30\]
+data_arrays_0_0_ext_ram_clk\[0\]
+data_arrays_0_0_ext_ram_csb0\[0\]
+data_arrays_0_0_ext_ram_web0\[0\]
+data_arrays_0_0_ext_ram_wmask00.*
+data_arrays_0_0_ext_ram_addr00.*
+data_arrays_0_0_ext_ram_din00.*
+data_arrays_0_0_ext_ram_dout00.*
+data_arrays_0_0_ext_ram_csb1\[0\]
+data_arrays_0_0_ext_ram_addr10.*
+io_oeb\[30\]
+analog_io\[24\]
+io_in\[31\]
+io_out\[31\]
+io_oeb\[31\]
+analog_io\[25\]
+io_in\[32\]
+io_out\[32\]
+io_oeb\[32\]
+analog_io\[26\]
+io_in\[33\]
+io_out\[33\]
+io_oeb\[33\]
+analog_io\[27\]
+io_in\[34\]
+io_out\[34\]
+io_oeb\[34\]
+analog_io\[28\]
+io_in\[35\]
+io_out\[35\]
+io_oeb\[35\]
+io_in\[36\]
+io_out\[36\]
+io_oeb\[36\]
+io_in\[37\]
+io_out\[37\]
+io_oeb\[37\]
diff --git a/verilog/rtl/marmot_no_sram/Makefile b/verilog/rtl/marmot_no_sram/Makefile
new file mode 100644
index 0000000..094958a
--- /dev/null
+++ b/verilog/rtl/marmot_no_sram/Makefile
@@ -0,0 +1,13 @@
+MARMOT_RTL_DIR = /home/shc/Development/RISC-V/chipyard/vlsi/rtl
+VSRCS = $(MARMOT_RTL_DIR)/MarmotCaravelChip.vc
+
+copy:
+	@for v in `egrep \.v$$ $(VSRCS) | egrep -ve '^ *(\+|-|//)'` ; do \
+    cp -p $(MARMOT_RTL_DIR)/$$v . ; \
+  done
+	diff user_project_wrapper.v ..
+	rm -f user_project_wrapper.v
+	
+clean:
+	rm -f *.v
+
diff --git a/verilog/rtl/marmot_no_sram/Marmot.v b/verilog/rtl/marmot_no_sram/Marmot.v
new file mode 100644
index 0000000..fb76137
--- /dev/null
+++ b/verilog/rtl/marmot_no_sram/Marmot.v
@@ -0,0 +1,532 @@
+// SPDX-FileCopyrightText: 2020 Efabless Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+
+`default_nettype none
+
+module Marmot
+(
+`ifdef USE_POWER_PINS
+    inout vdda1,  // User area 1 3.3V supply
+    inout vdda2,  // User area 2 3.3V supply
+    inout vssa1,  // User area 1 analog ground
+    inout vssa2,  // User area 2 analog ground
+    inout vccd1,  // User area 1 1.8V supply
+    inout vccd2,  // User area 2 1.8v supply
+    inout vssd1,  // User area 1 digital ground
+    inout vssd2,  // User area 2 digital ground
+`endif
+
+    // Wishbone Slave ports (WB MI A)
+    input wb_clk_i,
+    input wb_rst_i,
+    input wbs_stb_i,
+    input wbs_cyc_i,
+    input wbs_we_i,
+    input [3:0] wbs_sel_i,
+    input [31:0] wbs_dat_i,
+    input [31:0] wbs_adr_i,
+    output wbs_ack_o,
+    output [31:0] wbs_dat_o,
+
+    // Logic Analyzer Signals
+    input  [127:0] la_data_in,
+    output [127:0] la_data_out,
+    input  [127:0] la_oenb,
+
+    // IOs
+    input  [`MPRJ_IO_PADS-1:0] io_in,
+    output [`MPRJ_IO_PADS-1:0] io_out,
+    output [`MPRJ_IO_PADS-1:0] io_oeb,
+
+    // Analog (direct connection to GPIO pad---use with caution)
+    // Note that analog I/O is not available on the 7 lowest-numbered
+    // GPIO pads, and so the analog_io indexing is offset from the
+    // GPIO indexing by 7 (also upper 2 GPIOs do not have analog_io).
+    inout [`MPRJ_IO_PADS-10:0] analog_io,
+
+    // Independent clock (on independent integer divider)
+    input   user_clock2,
+
+    // User maskable interrupt signals
+    output [2:0] user_irq
+
+`ifdef RAM_ON_TOP
+    // RAM signals
+    // D-Cache tag
+  , output        tag_array_ext_ram_clk,
+    output        tag_array_ext_ram_csb0,
+    output        tag_array_ext_ram_web0,
+    output [3:0]  tag_array_ext_ram_wmask0,
+    output [7:0]  tag_array_ext_ram_addr0,
+    output [31:0] tag_array_ext_ram_din0,
+    input  [31:0] tag_array_ext_ram_dout0,
+    output        tag_array_ext_ram_csb1,
+    output [7:0]  tag_array_ext_ram_addr1,
+    // D-Cache data
+    output [1:0]  data_arrays_0_ext_ram_clk,
+    output [1:0]  data_arrays_0_ext_ram_csb0,
+    output [1:0]  data_arrays_0_ext_ram_web0,
+    output [3:0]  data_arrays_0_ext_ram_wmask00,
+    output [3:0]  data_arrays_0_ext_ram_wmask01,
+    output [8:0]  data_arrays_0_ext_ram_addr00,
+    output [8:0]  data_arrays_0_ext_ram_addr01,
+    output [31:0] data_arrays_0_ext_ram_din00,
+    output [31:0] data_arrays_0_ext_ram_din01,
+    input  [31:0] data_arrays_0_ext_ram_dout00,
+    input  [31:0] data_arrays_0_ext_ram_dout01,
+    output [1:0]  data_arrays_0_ext_ram_csb1,
+    output [8:0]  data_arrays_0_ext_ram_addr10,
+    output [8:0]  data_arrays_0_ext_ram_addr11,
+    // I-Cache tag
+    output        tag_array_0_ext_ram_clk,
+    output        tag_array_0_ext_ram_csb0,
+    output        tag_array_0_ext_ram_web0,
+    output [7:0]  tag_array_0_ext_ram_wmask0,
+    output [7:0]  tag_array_0_ext_ram_addr0,
+    output [63:0] tag_array_0_ext_ram_din0,
+    input  [63:0] tag_array_0_ext_ram_dout0,
+    output        tag_array_0_ext_ram_csb1,
+    output [7:0]  tag_array_0_ext_ram_addr1,
+    // I-Cache data
+    output [3:0]  data_arrays_0_0_ext_ram_clk,
+    output [3:0]  data_arrays_0_0_ext_ram_csb0,
+    output [3:0]  data_arrays_0_0_ext_ram_web0,
+    output [7:0]  data_arrays_0_0_ext_ram_wmask00,
+    output [7:0]  data_arrays_0_0_ext_ram_wmask01,
+    output [7:0]  data_arrays_0_0_ext_ram_wmask02,
+    output [7:0]  data_arrays_0_0_ext_ram_wmask03,
+    output [8:0]  data_arrays_0_0_ext_ram_addr00,
+    output [8:0]  data_arrays_0_0_ext_ram_addr01,
+    output [8:0]  data_arrays_0_0_ext_ram_addr02,
+    output [8:0]  data_arrays_0_0_ext_ram_addr03,
+    output [63:0] data_arrays_0_0_ext_ram_din00,
+    output [63:0] data_arrays_0_0_ext_ram_din01,
+    output [63:0] data_arrays_0_0_ext_ram_din02,
+    output [63:0] data_arrays_0_0_ext_ram_din03,
+    input  [63:0] data_arrays_0_0_ext_ram_dout00,
+    input  [63:0] data_arrays_0_0_ext_ram_dout01,
+    input  [63:0] data_arrays_0_0_ext_ram_dout02,
+    input  [63:0] data_arrays_0_0_ext_ram_dout03,
+    output [3:0]  data_arrays_0_0_ext_ram_csb1,
+    output [8:0]  data_arrays_0_0_ext_ram_addr10,
+    output [8:0]  data_arrays_0_0_ext_ram_addr11,
+    output [8:0]  data_arrays_0_0_ext_ram_addr12,
+    output [8:0]  data_arrays_0_0_ext_ram_addr13
+`endif  // RAM_ON_TOP
+);
+
+`ifndef MARMOT_EMPTY
+    //------------------------------------------------------------------------------
+    // Clock and Reset to MarmotCaravelChip
+    wire clk;
+    wire rst_n;
+    reg  [31:0] reg_val;  // Wishbone register value
+
+    assign clk   = wb_clk_i;
+    assign rst_n = reg_val[0];
+
+    //------------------------------------------------------------------------------
+    // Wishbone slave port & register
+    wire        valid;
+    wire [3:0]  wstrb;
+    reg         ready;
+
+    assign valid = wbs_cyc_i & wbs_stb_i; 
+    assign wstrb = wbs_sel_i & {4{wbs_we_i}};
+    assign wbs_ack_o = ready;
+    assign wbs_dat_o = reg_val;
+
+    always @(posedge clk) begin
+      if (wb_rst_i) begin
+        reg_val <= 32'h00000000;
+        ready <= 1'b0;
+      end
+      else begin
+        if (valid && !ready) begin
+          ready <= 1'b1;
+          if (wstrb[0]) reg_val[7:0]   <= wbs_dat_i[7:0];
+          if (wstrb[1]) reg_val[15:8]  <= wbs_dat_i[15:8];
+          if (wstrb[2]) reg_val[23:16] <= wbs_dat_i[23:16];
+          if (wstrb[3]) reg_val[31:24] <= wbs_dat_i[31:24];
+        end
+        else begin
+          ready <= 1'b0;
+        end
+      end
+    end
+
+    //------------------------------------------------------------------------------
+    // Logic Analyzer Signals
+    // la_data_out[127:32] <- 0
+    //            [ 31: 0] <- gpio_out[31:0]
+    assign la_data_out[127:32] = 96'd0;
+
+    wire [127:0] la_data_input; // [127:32] -> not in use
+                                // [ 31: 0] -> gpio_in[31:0]
+    assign la_data_input = ~la_oenb & la_data_in;
+
+    //------------------------------------------------------------------------------
+    // IRQ
+    assign user_irq = 3'b000;
+
+    //------------------------------------------------------------------------------
+    // MarmotCaravelChip
+`ifdef RAM_ON_TOP
+    wire [5:0]  tag_array_ext_RW0_addr;
+    wire        tag_array_ext_RW0_en;
+    wire        tag_array_ext_RW0_clk;
+    wire        tag_array_ext_RW0_wmode;
+    wire [20:0] tag_array_ext_RW0_wdata;
+    wire [20:0] tag_array_ext_RW0_rdata;
+    wire [9:0]  data_arrays_0_ext_RW0_addr;
+    wire        data_arrays_0_ext_RW0_en;
+    wire        data_arrays_0_ext_RW0_clk;
+    wire        data_arrays_0_ext_RW0_wmode;
+    wire [31:0] data_arrays_0_ext_RW0_wdata;
+    wire [31:0] data_arrays_0_ext_RW0_rdata;
+    wire [3:0]  data_arrays_0_ext_RW0_wmask;
+    wire [6:0]  tag_array_0_ext_RW0_addr;
+    wire        tag_array_0_ext_RW0_en;
+    wire        tag_array_0_ext_RW0_clk;
+    wire        tag_array_0_ext_RW0_wmode;
+    wire [37:0] tag_array_0_ext_RW0_wdata;
+    wire [37:0] tag_array_0_ext_RW0_rdata;
+    wire [1:0]  tag_array_0_ext_RW0_wmask;
+    wire [10:0] data_arrays_0_0_ext_RW0_addr;
+    wire        data_arrays_0_0_ext_RW0_en;
+    wire        data_arrays_0_0_ext_RW0_clk;
+    wire        data_arrays_0_0_ext_RW0_wmode;
+    wire [63:0] data_arrays_0_0_ext_RW0_wdata;
+    wire [63:0] data_arrays_0_0_ext_RW0_rdata;
+    wire [1:0]  data_arrays_0_0_ext_RW0_wmask;
+`endif  // RAM_ON_TOP
+
+    MarmotCaravelChip MarmotCaravelChip (
+     .clk(clk),
+     .rst_n(rst_n),
+     .io_in_0(io_in[0]),
+     .io_in_1(io_in[1]),
+     .io_in_2(io_in[2]),
+     .io_in_3(io_in[3]),
+     .io_in_4(io_in[4]),
+     .io_in_5(io_in[5]),
+     .io_in_6(io_in[6]),
+     .io_in_7(io_in[7]),
+     .io_in_8(io_in[8]),
+     .io_in_9(io_in[9]),
+     .io_in_10(io_in[10]),
+     .io_in_11(io_in[11]),
+     .io_in_12(io_in[12]),
+     .io_in_13(io_in[13]),
+     .io_in_14(io_in[14]),
+     .io_in_15(io_in[15]),
+     .io_in_16(io_in[16]),
+     .io_in_17(io_in[17]),
+     .io_in_18(io_in[18]),
+     .io_in_19(io_in[19]),
+     .io_in_20(io_in[20]),
+     .io_in_21(io_in[21]),
+     .io_in_22(io_in[22]),
+     .io_in_23(io_in[23]),
+     .io_in_24(io_in[24]),
+     .io_in_25(io_in[25]),
+     .io_in_26(io_in[26]),
+     .io_in_27(io_in[27]),
+     .io_in_28(io_in[28]),
+     .io_in_29(io_in[29]),
+     .io_in_30(io_in[30]),
+     .io_in_31(io_in[31]),
+     .io_in_32(io_in[32]),
+     .io_in_33(io_in[33]),
+     .io_in_34(io_in[34]),
+     .io_in_35(io_in[35]),
+     .io_in_36(io_in[36]),
+     .io_in_37(io_in[37]),
+     .io_out_0(io_out[0]),
+     .io_out_1(io_out[1]),
+     .io_out_2(io_out[2]),
+     .io_out_3(io_out[3]),
+     .io_out_4(io_out[4]),
+     .io_out_5(io_out[5]),
+     .io_out_6(io_out[6]),
+     .io_out_7(io_out[7]),
+     .io_out_8(io_out[8]),
+     .io_out_9(io_out[9]),
+     .io_out_10(io_out[10]),
+     .io_out_11(io_out[11]),
+     .io_out_12(io_out[12]),
+     .io_out_13(io_out[13]),
+     .io_out_14(io_out[14]),
+     .io_out_15(io_out[15]),
+     .io_out_16(io_out[16]),
+     .io_out_17(io_out[17]),
+     .io_out_18(io_out[18]),
+     .io_out_19(io_out[19]),
+     .io_out_20(io_out[20]),
+     .io_out_21(io_out[21]),
+     .io_out_22(io_out[22]),
+     .io_out_23(io_out[23]),
+     .io_out_24(io_out[24]),
+     .io_out_25(io_out[25]),
+     .io_out_26(io_out[26]),
+     .io_out_27(io_out[27]),
+     .io_out_28(io_out[28]),
+     .io_out_29(io_out[29]),
+     .io_out_30(io_out[30]),
+     .io_out_31(io_out[31]),
+     .io_out_32(io_out[32]),
+     .io_out_33(io_out[33]),
+     .io_out_34(io_out[34]),
+     .io_out_35(io_out[35]),
+     .io_out_36(io_out[36]),
+     .io_out_37(io_out[37]),
+     .io_oeb_0(io_oeb[0]),
+     .io_oeb_1(io_oeb[1]),
+     .io_oeb_2(io_oeb[2]),
+     .io_oeb_3(io_oeb[3]),
+     .io_oeb_4(io_oeb[4]),
+     .io_oeb_5(io_oeb[5]),
+     .io_oeb_6(io_oeb[6]),
+     .io_oeb_7(io_oeb[7]),
+     .io_oeb_8(io_oeb[8]),
+     .io_oeb_9(io_oeb[9]),
+     .io_oeb_10(io_oeb[10]),
+     .io_oeb_11(io_oeb[11]),
+     .io_oeb_12(io_oeb[12]),
+     .io_oeb_13(io_oeb[13]),
+     .io_oeb_14(io_oeb[14]),
+     .io_oeb_15(io_oeb[15]),
+     .io_oeb_16(io_oeb[16]),
+     .io_oeb_17(io_oeb[17]),
+     .io_oeb_18(io_oeb[18]),
+     .io_oeb_19(io_oeb[19]),
+     .io_oeb_20(io_oeb[20]),
+     .io_oeb_21(io_oeb[21]),
+     .io_oeb_22(io_oeb[22]),
+     .io_oeb_23(io_oeb[23]),
+     .io_oeb_24(io_oeb[24]),
+     .io_oeb_25(io_oeb[25]),
+     .io_oeb_26(io_oeb[26]),
+     .io_oeb_27(io_oeb[27]),
+     .io_oeb_28(io_oeb[28]),
+     .io_oeb_29(io_oeb[29]),
+     .io_oeb_30(io_oeb[30]),
+     .io_oeb_31(io_oeb[31]),
+     .io_oeb_32(io_oeb[32]),
+     .io_oeb_33(io_oeb[33]),
+     .io_oeb_34(io_oeb[34]),
+     .io_oeb_35(io_oeb[35]),
+     .io_oeb_36(io_oeb[36]),
+     .io_oeb_37(io_oeb[37]),
+     .gpio_out_0(la_data_out[0]),
+     .gpio_out_1(la_data_out[1]),
+     .gpio_out_2(la_data_out[2]),
+     .gpio_out_3(la_data_out[3]),
+     .gpio_out_4(la_data_out[4]),
+     .gpio_out_5(la_data_out[5]),
+     .gpio_out_6(la_data_out[6]),
+     .gpio_out_7(la_data_out[7]),
+     .gpio_out_8(la_data_out[8]),
+     .gpio_out_9(la_data_out[9]),
+     .gpio_out_10(la_data_out[10]),
+     .gpio_out_11(la_data_out[11]),
+     .gpio_out_12(la_data_out[12]),
+     .gpio_out_13(la_data_out[13]),
+     .gpio_out_14(la_data_out[14]),
+     .gpio_out_15(la_data_out[15]),
+     .gpio_out_16(la_data_out[16]),
+     .gpio_out_17(la_data_out[17]),
+     .gpio_out_18(la_data_out[18]),
+     .gpio_out_19(la_data_out[19]),
+     .gpio_out_20(la_data_out[20]),
+     .gpio_out_21(la_data_out[21]),
+     .gpio_out_22(la_data_out[22]),
+     .gpio_out_23(la_data_out[23]),
+     .gpio_out_24(la_data_out[24]),
+     .gpio_out_25(la_data_out[25]),
+     .gpio_out_26(la_data_out[26]),
+     .gpio_out_27(la_data_out[27]),
+     .gpio_out_28(la_data_out[28]),
+     .gpio_out_29(la_data_out[29]),
+     .gpio_out_30(la_data_out[30]),
+     .gpio_out_31(la_data_out[31]),
+     .gpio_in_0(la_data_input[0]),
+     .gpio_in_1(la_data_input[1]),
+     .gpio_in_2(la_data_input[2]),
+     .gpio_in_3(la_data_input[3]),
+     .gpio_in_4(la_data_input[4]),
+     .gpio_in_5(la_data_input[5]),
+     .gpio_in_6(la_data_input[6]),
+     .gpio_in_7(la_data_input[7]),
+     .gpio_in_8(la_data_input[8]),
+     .gpio_in_9(la_data_input[9]),
+     .gpio_in_10(la_data_input[10]),
+     .gpio_in_11(la_data_input[11]),
+     .gpio_in_12(la_data_input[12]),
+     .gpio_in_13(la_data_input[13]),
+     .gpio_in_14(la_data_input[14]),
+     .gpio_in_15(la_data_input[15]),
+     .gpio_in_16(la_data_input[16]),
+     .gpio_in_17(la_data_input[17]),
+     .gpio_in_18(la_data_input[18]),
+     .gpio_in_19(la_data_input[19]),
+     .gpio_in_20(la_data_input[20]),
+     .gpio_in_21(la_data_input[21]),
+     .gpio_in_22(la_data_input[22]),
+     .gpio_in_23(la_data_input[23]),
+     .gpio_in_24(la_data_input[24]),
+     .gpio_in_25(la_data_input[25]),
+     .gpio_in_26(la_data_input[26]),
+     .gpio_in_27(la_data_input[27]),
+     .gpio_in_28(la_data_input[28]),
+     .gpio_in_29(la_data_input[29]),
+     .gpio_in_30(la_data_input[30]),
+     .gpio_in_31(la_data_input[31])
+`ifdef RAM_ON_TOP
+   , .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr),
+     .tag_array_ext_RW0_en(tag_array_ext_RW0_en),
+     .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk),
+     .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode),
+     .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata),
+     .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata),
+     .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr),
+     .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en),
+     .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk),
+     .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode),
+     .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata),
+     .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata),
+     .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask),
+     .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr),
+     .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en),
+     .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk),
+     .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode),
+     .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata),
+     .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata),
+     .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask),
+     .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr),
+     .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en),
+     .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk),
+     .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode),
+     .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata),
+     .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata),
+     .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask)
+`endif  // RAM_ON_TOP
+    );
+
+`ifdef RAM_ON_TOP
+    //------------------------------------------------------------------------------
+    // RAM interfaces
+    // D-Cache tag
+    tag_array_ext tag_array_ext (
+      .RW0_addr(tag_array_ext_RW0_addr),
+      .RW0_en(tag_array_ext_RW0_en),
+      .RW0_clk(tag_array_ext_RW0_clk),
+      .RW0_wmode(tag_array_ext_RW0_wmode),
+      .RW0_wdata(tag_array_ext_RW0_wdata),
+      .RW0_rdata(tag_array_ext_RW0_rdata),
+      .ram_clk(tag_array_ext_ram_clk),
+      .ram_csb0(tag_array_ext_ram_csb0),
+      .ram_web0(tag_array_ext_ram_web0),
+      .ram_wmask0(tag_array_ext_ram_wmask0),
+      .ram_addr0(tag_array_ext_ram_addr0),
+      .ram_din0(tag_array_ext_ram_din0),
+      .ram_dout0(tag_array_ext_ram_dout0),
+      .ram_csb1(tag_array_ext_ram_csb1),
+      .ram_addr1(tag_array_ext_ram_addr1)
+    );
+
+    // D-Cache data
+    data_arrays_0_ext data_arrays_0_ext (
+      .RW0_addr(data_arrays_0_ext_RW0_addr),
+      .RW0_en(data_arrays_0_ext_RW0_en),
+      .RW0_clk(data_arrays_0_ext_RW0_clk),
+      .RW0_wmode(data_arrays_0_ext_RW0_wmode),
+      .RW0_wdata(data_arrays_0_ext_RW0_wdata),
+      .RW0_rdata(data_arrays_0_ext_RW0_rdata),
+      .RW0_wmask(data_arrays_0_ext_RW0_wmask),
+      .ram_clk(data_arrays_0_ext_ram_clk),
+      .ram_csb0(data_arrays_0_ext_ram_csb0),
+      .ram_web0(data_arrays_0_ext_ram_web0),
+      .ram_wmask00(data_arrays_0_ext_ram_wmask00),
+      .ram_wmask01(data_arrays_0_ext_ram_wmask01),
+      .ram_addr00(data_arrays_0_ext_ram_addr00),
+      .ram_addr01(data_arrays_0_ext_ram_addr01),
+      .ram_din00(data_arrays_0_ext_ram_din00),
+      .ram_din01(data_arrays_0_ext_ram_din01),
+      .ram_dout00(data_arrays_0_ext_ram_dout00),
+      .ram_dout01(data_arrays_0_ext_ram_dout01),
+      .ram_csb1(data_arrays_0_ext_ram_csb1),
+      .ram_addr10(data_arrays_0_ext_ram_addr10),
+      .ram_addr11(data_arrays_0_ext_ram_addr11)
+    );
+
+    // I-Cache tag
+    tag_array_0_ext tag_array_0_ext (
+      .RW0_addr(tag_array_0_ext_RW0_addr),
+      .RW0_en(tag_array_0_ext_RW0_en),
+      .RW0_clk(tag_array_0_ext_RW0_clk),
+      .RW0_wmode(tag_array_0_ext_RW0_wmode),
+      .RW0_wdata(tag_array_0_ext_RW0_wdata),
+      .RW0_rdata(tag_array_0_ext_RW0_rdata),
+      .RW0_wmask(tag_array_0_ext_RW0_wmask),
+      .ram_clk(tag_array_0_ext_ram_clk),
+      .ram_csb0(tag_array_0_ext_ram_csb0),
+      .ram_web0(tag_array_0_ext_ram_web0),
+      .ram_wmask0(tag_array_0_ext_ram_wmask0),
+      .ram_addr0(tag_array_0_ext_ram_addr0),
+      .ram_din0(tag_array_0_ext_ram_din0),
+      .ram_dout0(tag_array_0_ext_ram_dout0),
+      .ram_csb1(tag_array_0_ext_ram_csb1),
+      .ram_addr1(tag_array_0_ext_ram_addr1)
+    );
+
+    // I-Cache data
+    data_arrays_0_0_ext data_arrays_0_0_ext (
+      .RW0_addr(data_arrays_0_0_ext_RW0_addr),
+      .RW0_en(data_arrays_0_0_ext_RW0_en),
+      .RW0_clk(data_arrays_0_0_ext_RW0_clk),
+      .RW0_wmode(data_arrays_0_0_ext_RW0_wmode),
+      .RW0_wdata(data_arrays_0_0_ext_RW0_wdata),
+      .RW0_rdata(data_arrays_0_0_ext_RW0_rdata),
+      .RW0_wmask(data_arrays_0_0_ext_RW0_wmask),
+      .ram_clk(data_arrays_0_0_ext_ram_clk),
+      .ram_csb0(data_arrays_0_0_ext_ram_csb0),
+      .ram_web0(data_arrays_0_0_ext_ram_web0),
+      .ram_wmask00(data_arrays_0_0_ext_ram_wmask00),
+      .ram_wmask01(data_arrays_0_0_ext_ram_wmask01),
+      .ram_wmask02(data_arrays_0_0_ext_ram_wmask02),
+      .ram_wmask03(data_arrays_0_0_ext_ram_wmask03),
+      .ram_addr00(data_arrays_0_0_ext_ram_addr00),
+      .ram_addr01(data_arrays_0_0_ext_ram_addr01),
+      .ram_addr02(data_arrays_0_0_ext_ram_addr02),
+      .ram_addr03(data_arrays_0_0_ext_ram_addr03),
+      .ram_din00(data_arrays_0_0_ext_ram_din00),
+      .ram_din01(data_arrays_0_0_ext_ram_din01),
+      .ram_din02(data_arrays_0_0_ext_ram_din02),
+      .ram_din03(data_arrays_0_0_ext_ram_din03),
+      .ram_dout00(data_arrays_0_0_ext_ram_dout00),
+      .ram_dout01(data_arrays_0_0_ext_ram_dout01),
+      .ram_dout02(data_arrays_0_0_ext_ram_dout02),
+      .ram_dout03(data_arrays_0_0_ext_ram_dout03),
+      .ram_csb1(data_arrays_0_0_ext_ram_csb1),
+      .ram_addr10(data_arrays_0_0_ext_ram_addr10),
+      .ram_addr11(data_arrays_0_0_ext_ram_addr11),
+      .ram_addr12(data_arrays_0_0_ext_ram_addr12),
+      .ram_addr13(data_arrays_0_0_ext_ram_addr13)
+    );
+`endif  // RAM_ON_TOP
+`endif  // MARMOT_EMPTY
+
+endmodule
diff --git a/verilog/rtl/marmot_no_sram/SRLatch.v b/verilog/rtl/marmot_no_sram/SRLatch.v
new file mode 100644
index 0000000..d4849a1
--- /dev/null
+++ b/verilog/rtl/marmot_no_sram/SRLatch.v
@@ -0,0 +1,22 @@
+// See LICENSE for license details.
+module SRLatch (
+  input set,
+  input reset,
+  output q
+);
+
+  reg latch;
+
+  // synopsys async_set_reset "set"
+  // synopsys one_hot "set, reset"
+  always @(set or reset)
+  begin
+    if (set)
+      latch <= 1'b1;
+    else if (reset)
+      latch <= 1'b0;
+  end
+
+  assign q = latch;
+
+endmodule
diff --git a/verilog/rtl/marmot_no_sram/plusarg_reader.v b/verilog/rtl/marmot_no_sram/plusarg_reader.v
new file mode 100644
index 0000000..c1e0311
--- /dev/null
+++ b/verilog/rtl/marmot_no_sram/plusarg_reader.v
@@ -0,0 +1,26 @@
+// See LICENSE.SiFive for license details.
+
+//VCS coverage exclude_file
+
+// No default parameter values are intended, nor does IEEE 1800-2012 require them (clause A.2.4 param_assignment),
+// but Incisive demands them. These default values should never be used.
+module plusarg_reader #(
+   parameter FORMAT="borked=%d",
+   parameter WIDTH=1,
+   parameter [WIDTH-1:0] DEFAULT=0
+) (
+   output [WIDTH-1:0] out
+);
+
+`ifdef SYNTHESIS
+assign out = DEFAULT;
+`else
+reg [WIDTH-1:0] myplus;
+assign out = myplus;
+
+initial begin
+   if (!$value$plusargs(FORMAT, myplus)) myplus = DEFAULT;
+end
+`endif
+
+endmodule
diff --git a/verilog/rtl/marmot_no_sram/shc.marmotcaravel.MarmotCaravelChip.MarmotCaravelConfig.top.mems.sky130.no_sram.v b/verilog/rtl/marmot_no_sram/shc.marmotcaravel.MarmotCaravelChip.MarmotCaravelConfig.top.mems.sky130.no_sram.v
new file mode 100644
index 0000000..d4e8744
--- /dev/null
+++ b/verilog/rtl/marmot_no_sram/shc.marmotcaravel.MarmotCaravelChip.MarmotCaravelConfig.top.mems.sky130.no_sram.v
@@ -0,0 +1,218 @@
+//-----------------------------------------------------------------------
+// D-Cache Data RAM
+//-----------------------------------------------------------------------
+module data_arrays_0_ext(
+  input  [9:0]  RW0_addr,
+  input         RW0_clk,
+  input  [31:0] RW0_wdata,
+  output [31:0] RW0_rdata,
+  input         RW0_en,
+  input         RW0_wmode,
+  input  [3:0]  RW0_wmask,
+  output [1:0]  ram_clk,
+  output [1:0]  ram_csb0,
+  output [1:0]  ram_web0,
+  output [3:0]  ram_wmask00,
+  output [3:0]  ram_wmask01,
+  output [8:0]  ram_addr00,
+  output [8:0]  ram_addr01,
+  output [31:0] ram_din00,
+  output [31:0] ram_din01,
+  input  [31:0] ram_dout00,
+  input  [31:0] ram_dout01,
+  output [1:0]  ram_csb1,
+  output [8:0]  ram_addr10,
+  output [8:0]  ram_addr11
+);
+
+  wire [3:0]  ram_wmask0[1:0];
+  wire [8:0]  ram_addr0[1:0];
+  wire [31:0] ram_din0[1:0];
+  wire [8:0]  ram_addr1[1:0];
+  reg  [1:0]  ram_dout0_sel;
+
+  // RAM input signals
+  genvar i;
+  for (i = 0; i < 2; i = i + 1) begin : g_ram
+    assign ram_clk[i]    = RW0_clk;
+    assign ram_csb0[i]   = ~(RW0_en & (RW0_addr[9] == i));
+    assign ram_web0[i]   = ~RW0_wmode;
+    assign ram_wmask0[i] = RW0_wmask;
+    assign ram_addr0[i]  = RW0_addr[8:0];
+    assign ram_din0[i]   = RW0_wdata;
+    assign ram_csb1[i]   = 1'b1;
+    assign ram_addr1[i]  = 9'h1ff;
+  end
+
+  assign ram_wmask00 = ram_wmask0[0];
+  assign ram_wmask01 = ram_wmask0[1];
+  assign ram_addr00 = ram_addr0[0];
+  assign ram_addr01 = ram_addr0[1];
+  assign ram_din00 = ram_din0[0];
+  assign ram_din01 = ram_din0[1];
+  assign ram_addr10 = ram_addr1[0];
+  assign ram_addr11 = ram_addr1[1];
+
+  // RAM read data select
+  always @(posedge RW0_clk) begin
+    ram_dout0_sel <= ~ram_csb0;
+  end
+
+  assign RW0_rdata = ram_dout0_sel[0] ? ram_dout00 :
+                                        ram_dout01;
+endmodule
+
+//-----------------------------------------------------------------------
+// D-Cache Tag RAM
+//-----------------------------------------------------------------------
+module tag_array_ext(
+  input  [5:0]  RW0_addr,
+  input         RW0_clk,
+  input  [20:0] RW0_wdata,
+  output [20:0] RW0_rdata,
+  input         RW0_en,
+  input         RW0_wmode,
+  output        ram_clk,
+  output        ram_csb0,
+  output        ram_web0,
+  output [3:0]  ram_wmask0,
+  output [7:0]  ram_addr0,
+  output [31:0] ram_din0,
+  input  [31:0] ram_dout0,
+  output        ram_csb1,
+  output [7:0]  ram_addr1
+);
+
+  // RAM input signals
+  assign ram_clk    = RW0_clk;
+  assign ram_csb0   = ~RW0_en;
+  assign ram_web0   = ~RW0_wmode;
+  assign ram_wmask0 = {4{RW0_wmode}};
+  assign ram_addr0  = {2'b00, RW0_addr};
+  assign ram_din0   = {11'd0, RW0_wdata};
+  assign ram_csb1   = 1'b1;
+  assign ram_addr1  = 8'hff;
+
+  // RAM read data
+  assign RW0_rdata = ram_dout0[20:0];
+endmodule
+
+//-----------------------------------------------------------------------
+// I-Cache Tag RAM
+//-----------------------------------------------------------------------
+module tag_array_0_ext(
+  input  [6:0]  RW0_addr,
+  input         RW0_clk,
+  input  [37:0] RW0_wdata,
+  output [37:0] RW0_rdata,
+  input         RW0_en,
+  input         RW0_wmode,
+  input  [1:0]  RW0_wmask,
+  output        ram_clk,
+  output        ram_csb0,
+  output        ram_web0,
+  output [7:0]  ram_wmask0,
+  output [7:0]  ram_addr0,
+  output [63:0] ram_din0,
+  input  [63:0] ram_dout0,
+  output        ram_csb1,
+  output [7:0]  ram_addr1
+);
+
+  // RAM input signals
+  assign ram_clk     = RW0_clk;
+  assign ram_csb0    = ~RW0_en;
+  assign ram_web0    = ~RW0_wmode;
+  assign ram_wmask0  = {{4{RW0_wmask[1]}}, {4{RW0_wmask[0]}}};
+  assign ram_addr0   = {1'b0, RW0_addr};
+  assign ram_din0    = {{13'd0, RW0_wdata[37:19]}, {13'd0, RW0_wdata[18:0]}};
+  assign ram_csb1    = 1'b1;
+  assign ram_addr1   = 8'hff;
+
+  // RAM read data
+  assign RW0_rdata = {ram_dout0[50:32], ram_dout0[18:0]};
+endmodule
+
+//-----------------------------------------------------------------------
+// I-Cache Data RAM
+//-----------------------------------------------------------------------
+module data_arrays_0_0_ext(
+  input  [10:0] RW0_addr,
+  input         RW0_clk,
+  input  [63:0] RW0_wdata,
+  output [63:0] RW0_rdata,
+  input         RW0_en,
+  input         RW0_wmode,
+  input  [1:0]  RW0_wmask,
+  output [3:0]  ram_clk,
+  output [3:0]  ram_csb0,
+  output [3:0]  ram_web0,
+  output [7:0]  ram_wmask00,
+  output [7:0]  ram_wmask01,
+  output [7:0]  ram_wmask02,
+  output [7:0]  ram_wmask03,
+  output [8:0]  ram_addr00,
+  output [8:0]  ram_addr01,
+  output [8:0]  ram_addr02,
+  output [8:0]  ram_addr03,
+  output [63:0] ram_din00,
+  output [63:0] ram_din01,
+  output [63:0] ram_din02,
+  output [63:0] ram_din03,
+  input  [63:0] ram_dout00,
+  input  [63:0] ram_dout01,
+  input  [63:0] ram_dout02,
+  input  [63:0] ram_dout03,
+  output [3:0]  ram_csb1,
+  output [8:0]  ram_addr10,
+  output [8:0]  ram_addr11,
+  output [8:0]  ram_addr12,
+  output [8:0]  ram_addr13
+);
+
+  wire [7:0]  ram_wmask0[3:0];
+  wire [8:0]  ram_addr0[3:0];
+  wire [63:0] ram_din0[3:0];
+  wire [8:0]  ram_addr1[3:0];
+  reg  [3:0]  ram_dout0_sel;
+
+  // RAM input signals
+  genvar i;
+  for (i = 0; i < 4; i = i + 1) begin : g_ram
+    assign ram_clk[i]    = RW0_clk;
+    assign ram_csb0[i]   = ~(RW0_en & (RW0_addr[10:9] == i));
+    assign ram_web0[i]   = ~RW0_wmode;
+    assign ram_wmask0[i] = {{4{RW0_wmask[1]}}, {4{RW0_wmask[0]}}};
+    assign ram_addr0[i]  = RW0_addr[8:0];
+    assign ram_din0[i]   = RW0_wdata;
+    assign ram_csb1[i]   = 1'b1;
+    assign ram_addr1[i]  = 9'h1ff;
+  end
+
+  assign ram_wmask00 = ram_wmask0[0];
+  assign ram_wmask01 = ram_wmask0[1];
+  assign ram_wmask02 = ram_wmask0[2];
+  assign ram_wmask03 = ram_wmask0[3];
+  assign ram_addr00 = ram_addr0[0];
+  assign ram_addr01 = ram_addr0[1];
+  assign ram_addr02 = ram_addr0[2];
+  assign ram_addr03 = ram_addr0[3];
+  assign ram_din00 = ram_din0[0];
+  assign ram_din01 = ram_din0[1];
+  assign ram_din02 = ram_din0[2];
+  assign ram_din03 = ram_din0[3];
+  assign ram_addr10 = ram_addr1[0];
+  assign ram_addr11 = ram_addr1[1];
+  assign ram_addr12 = ram_addr1[2];
+  assign ram_addr13 = ram_addr1[3];
+
+  // RAM read data2select
+  always @(posedge RW0_clk) begin
+    ram_dout0_sel <= ~ram_csb0;
+  end
+
+  assign RW0_rdata = ram_dout0_sel[0] ? ram_dout00 :
+                     ram_dout0_sel[1] ? ram_dout01 :
+                     ram_dout0_sel[2] ? ram_dout02 :
+                                        ram_dout03;
+endmodule
diff --git a/verilog/rtl/marmot_no_sram/shc.marmotcaravel.MarmotCaravelChip.MarmotCaravelConfig.top.no_sram.v b/verilog/rtl/marmot_no_sram/shc.marmotcaravel.MarmotCaravelChip.MarmotCaravelConfig.top.no_sram.v
new file mode 100644
index 0000000..030328a
--- /dev/null
+++ b/verilog/rtl/marmot_no_sram/shc.marmotcaravel.MarmotCaravelChip.MarmotCaravelConfig.top.no_sram.v
@@ -0,0 +1,286807 @@
+module IntXbar(
+  input   auto_int_in_14_0,
+  input   auto_int_in_13_0,
+  input   auto_int_in_12_0,
+  input   auto_int_in_12_1,
+  input   auto_int_in_12_2,
+  input   auto_int_in_12_3,
+  input   auto_int_in_11_0,
+  input   auto_int_in_11_1,
+  input   auto_int_in_11_2,
+  input   auto_int_in_11_3,
+  input   auto_int_in_10_0,
+  input   auto_int_in_10_1,
+  input   auto_int_in_10_2,
+  input   auto_int_in_10_3,
+  input   auto_int_in_9_0,
+  input   auto_int_in_9_1,
+  input   auto_int_in_9_2,
+  input   auto_int_in_9_3,
+  input   auto_int_in_9_4,
+  input   auto_int_in_9_5,
+  input   auto_int_in_9_6,
+  input   auto_int_in_9_7,
+  input   auto_int_in_9_8,
+  input   auto_int_in_9_9,
+  input   auto_int_in_9_10,
+  input   auto_int_in_9_11,
+  input   auto_int_in_9_12,
+  input   auto_int_in_9_13,
+  input   auto_int_in_9_14,
+  input   auto_int_in_9_15,
+  input   auto_int_in_9_16,
+  input   auto_int_in_9_17,
+  input   auto_int_in_9_18,
+  input   auto_int_in_9_19,
+  input   auto_int_in_9_20,
+  input   auto_int_in_9_21,
+  input   auto_int_in_9_22,
+  input   auto_int_in_9_23,
+  input   auto_int_in_9_24,
+  input   auto_int_in_9_25,
+  input   auto_int_in_9_26,
+  input   auto_int_in_9_27,
+  input   auto_int_in_9_28,
+  input   auto_int_in_9_29,
+  input   auto_int_in_9_30,
+  input   auto_int_in_9_31,
+  input   auto_int_in_8_0,
+  input   auto_int_in_7_0,
+  input   auto_int_in_6_0,
+  input   auto_int_in_5_0,
+  input   auto_int_in_4_0,
+  input   auto_int_in_3_0,
+  input   auto_int_in_2_0,
+  input   auto_int_in_1_0,
+  input   auto_int_in_0_0,
+  input   auto_int_in_0_1,
+  output  auto_int_out_0,
+  output  auto_int_out_1,
+  output  auto_int_out_2,
+  output  auto_int_out_3,
+  output  auto_int_out_4,
+  output  auto_int_out_5,
+  output  auto_int_out_6,
+  output  auto_int_out_7,
+  output  auto_int_out_8,
+  output  auto_int_out_9,
+  output  auto_int_out_10,
+  output  auto_int_out_11,
+  output  auto_int_out_12,
+  output  auto_int_out_13,
+  output  auto_int_out_14,
+  output  auto_int_out_15,
+  output  auto_int_out_16,
+  output  auto_int_out_17,
+  output  auto_int_out_18,
+  output  auto_int_out_19,
+  output  auto_int_out_20,
+  output  auto_int_out_21,
+  output  auto_int_out_22,
+  output  auto_int_out_23,
+  output  auto_int_out_24,
+  output  auto_int_out_25,
+  output  auto_int_out_26,
+  output  auto_int_out_27,
+  output  auto_int_out_28,
+  output  auto_int_out_29,
+  output  auto_int_out_30,
+  output  auto_int_out_31,
+  output  auto_int_out_32,
+  output  auto_int_out_33,
+  output  auto_int_out_34,
+  output  auto_int_out_35,
+  output  auto_int_out_36,
+  output  auto_int_out_37,
+  output  auto_int_out_38,
+  output  auto_int_out_39,
+  output  auto_int_out_40,
+  output  auto_int_out_41,
+  output  auto_int_out_42,
+  output  auto_int_out_43,
+  output  auto_int_out_44,
+  output  auto_int_out_45,
+  output  auto_int_out_46,
+  output  auto_int_out_47,
+  output  auto_int_out_48,
+  output  auto_int_out_49,
+  output  auto_int_out_50,
+  output  auto_int_out_51,
+  output  auto_int_out_52,
+  output  auto_int_out_53,
+  output  auto_int_out_54,
+  output  auto_int_out_55
+);
+  assign auto_int_out_0 = auto_int_in_0_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_1 = auto_int_in_0_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_2 = auto_int_in_1_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_3 = auto_int_in_2_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_4 = auto_int_in_3_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_5 = auto_int_in_4_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_6 = auto_int_in_5_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_7 = auto_int_in_6_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_8 = auto_int_in_7_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_9 = auto_int_in_8_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_10 = auto_int_in_9_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_11 = auto_int_in_9_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_12 = auto_int_in_9_2; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_13 = auto_int_in_9_3; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_14 = auto_int_in_9_4; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_15 = auto_int_in_9_5; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_16 = auto_int_in_9_6; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_17 = auto_int_in_9_7; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_18 = auto_int_in_9_8; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_19 = auto_int_in_9_9; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_20 = auto_int_in_9_10; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_21 = auto_int_in_9_11; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_22 = auto_int_in_9_12; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_23 = auto_int_in_9_13; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_24 = auto_int_in_9_14; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_25 = auto_int_in_9_15; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_26 = auto_int_in_9_16; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_27 = auto_int_in_9_17; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_28 = auto_int_in_9_18; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_29 = auto_int_in_9_19; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_30 = auto_int_in_9_20; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_31 = auto_int_in_9_21; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_32 = auto_int_in_9_22; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_33 = auto_int_in_9_23; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_34 = auto_int_in_9_24; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_35 = auto_int_in_9_25; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_36 = auto_int_in_9_26; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_37 = auto_int_in_9_27; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_38 = auto_int_in_9_28; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_39 = auto_int_in_9_29; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_40 = auto_int_in_9_30; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_41 = auto_int_in_9_31; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_42 = auto_int_in_10_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_43 = auto_int_in_10_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_44 = auto_int_in_10_2; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_45 = auto_int_in_10_3; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_46 = auto_int_in_11_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_47 = auto_int_in_11_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_48 = auto_int_in_11_2; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_49 = auto_int_in_11_3; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_50 = auto_int_in_12_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_51 = auto_int_in_12_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_52 = auto_int_in_12_2; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_53 = auto_int_in_12_3; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_54 = auto_int_in_13_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_55 = auto_int_in_14_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module InterruptBusWrapper(
+  input   auto_int_bus_int_in_14_0,
+  input   auto_int_bus_int_in_13_0,
+  input   auto_int_bus_int_in_12_0,
+  input   auto_int_bus_int_in_12_1,
+  input   auto_int_bus_int_in_12_2,
+  input   auto_int_bus_int_in_12_3,
+  input   auto_int_bus_int_in_11_0,
+  input   auto_int_bus_int_in_11_1,
+  input   auto_int_bus_int_in_11_2,
+  input   auto_int_bus_int_in_11_3,
+  input   auto_int_bus_int_in_10_0,
+  input   auto_int_bus_int_in_10_1,
+  input   auto_int_bus_int_in_10_2,
+  input   auto_int_bus_int_in_10_3,
+  input   auto_int_bus_int_in_9_0,
+  input   auto_int_bus_int_in_9_1,
+  input   auto_int_bus_int_in_9_2,
+  input   auto_int_bus_int_in_9_3,
+  input   auto_int_bus_int_in_9_4,
+  input   auto_int_bus_int_in_9_5,
+  input   auto_int_bus_int_in_9_6,
+  input   auto_int_bus_int_in_9_7,
+  input   auto_int_bus_int_in_9_8,
+  input   auto_int_bus_int_in_9_9,
+  input   auto_int_bus_int_in_9_10,
+  input   auto_int_bus_int_in_9_11,
+  input   auto_int_bus_int_in_9_12,
+  input   auto_int_bus_int_in_9_13,
+  input   auto_int_bus_int_in_9_14,
+  input   auto_int_bus_int_in_9_15,
+  input   auto_int_bus_int_in_9_16,
+  input   auto_int_bus_int_in_9_17,
+  input   auto_int_bus_int_in_9_18,
+  input   auto_int_bus_int_in_9_19,
+  input   auto_int_bus_int_in_9_20,
+  input   auto_int_bus_int_in_9_21,
+  input   auto_int_bus_int_in_9_22,
+  input   auto_int_bus_int_in_9_23,
+  input   auto_int_bus_int_in_9_24,
+  input   auto_int_bus_int_in_9_25,
+  input   auto_int_bus_int_in_9_26,
+  input   auto_int_bus_int_in_9_27,
+  input   auto_int_bus_int_in_9_28,
+  input   auto_int_bus_int_in_9_29,
+  input   auto_int_bus_int_in_9_30,
+  input   auto_int_bus_int_in_9_31,
+  input   auto_int_bus_int_in_8_0,
+  input   auto_int_bus_int_in_7_0,
+  input   auto_int_bus_int_in_6_0,
+  input   auto_int_bus_int_in_5_0,
+  input   auto_int_bus_int_in_4_0,
+  input   auto_int_bus_int_in_3_0,
+  input   auto_int_bus_int_in_2_0,
+  input   auto_int_bus_int_in_1_0,
+  input   auto_int_bus_int_in_0_0,
+  input   auto_int_bus_int_in_0_1,
+  output  auto_int_bus_int_out_0,
+  output  auto_int_bus_int_out_1,
+  output  auto_int_bus_int_out_2,
+  output  auto_int_bus_int_out_3,
+  output  auto_int_bus_int_out_4,
+  output  auto_int_bus_int_out_5,
+  output  auto_int_bus_int_out_6,
+  output  auto_int_bus_int_out_7,
+  output  auto_int_bus_int_out_8,
+  output  auto_int_bus_int_out_9,
+  output  auto_int_bus_int_out_10,
+  output  auto_int_bus_int_out_11,
+  output  auto_int_bus_int_out_12,
+  output  auto_int_bus_int_out_13,
+  output  auto_int_bus_int_out_14,
+  output  auto_int_bus_int_out_15,
+  output  auto_int_bus_int_out_16,
+  output  auto_int_bus_int_out_17,
+  output  auto_int_bus_int_out_18,
+  output  auto_int_bus_int_out_19,
+  output  auto_int_bus_int_out_20,
+  output  auto_int_bus_int_out_21,
+  output  auto_int_bus_int_out_22,
+  output  auto_int_bus_int_out_23,
+  output  auto_int_bus_int_out_24,
+  output  auto_int_bus_int_out_25,
+  output  auto_int_bus_int_out_26,
+  output  auto_int_bus_int_out_27,
+  output  auto_int_bus_int_out_28,
+  output  auto_int_bus_int_out_29,
+  output  auto_int_bus_int_out_30,
+  output  auto_int_bus_int_out_31,
+  output  auto_int_bus_int_out_32,
+  output  auto_int_bus_int_out_33,
+  output  auto_int_bus_int_out_34,
+  output  auto_int_bus_int_out_35,
+  output  auto_int_bus_int_out_36,
+  output  auto_int_bus_int_out_37,
+  output  auto_int_bus_int_out_38,
+  output  auto_int_bus_int_out_39,
+  output  auto_int_bus_int_out_40,
+  output  auto_int_bus_int_out_41,
+  output  auto_int_bus_int_out_42,
+  output  auto_int_bus_int_out_43,
+  output  auto_int_bus_int_out_44,
+  output  auto_int_bus_int_out_45,
+  output  auto_int_bus_int_out_46,
+  output  auto_int_bus_int_out_47,
+  output  auto_int_bus_int_out_48,
+  output  auto_int_bus_int_out_49,
+  output  auto_int_bus_int_out_50,
+  output  auto_int_bus_int_out_51,
+  output  auto_int_bus_int_out_52,
+  output  auto_int_bus_int_out_53,
+  output  auto_int_bus_int_out_54,
+  output  auto_int_bus_int_out_55
+);
+  wire  int_bus_auto_int_in_14_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_13_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_12_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_12_1; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_12_2; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_12_3; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_11_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_11_1; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_11_2; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_11_3; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_10_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_10_1; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_10_2; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_10_3; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_1; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_2; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_3; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_4; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_5; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_6; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_7; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_8; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_9; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_10; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_11; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_12; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_13; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_14; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_15; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_16; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_17; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_18; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_19; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_20; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_21; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_22; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_23; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_24; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_25; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_26; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_27; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_28; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_29; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_30; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_9_31; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_8_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_7_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_6_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_5_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_4_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_3_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_2_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_1_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_0_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_0_1; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_0; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_1; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_2; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_3; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_4; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_5; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_6; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_7; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_8; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_9; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_10; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_11; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_12; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_13; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_14; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_15; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_16; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_17; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_18; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_19; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_20; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_21; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_22; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_23; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_24; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_25; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_26; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_27; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_28; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_29; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_30; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_31; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_32; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_33; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_34; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_35; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_36; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_37; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_38; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_39; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_40; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_41; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_42; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_43; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_44; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_45; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_46; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_47; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_48; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_49; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_50; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_51; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_52; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_53; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_54; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_out_55; // @[InterruptBus.scala 14:27]
+  IntXbar int_bus ( // @[InterruptBus.scala 14:27]
+    .auto_int_in_14_0(int_bus_auto_int_in_14_0),
+    .auto_int_in_13_0(int_bus_auto_int_in_13_0),
+    .auto_int_in_12_0(int_bus_auto_int_in_12_0),
+    .auto_int_in_12_1(int_bus_auto_int_in_12_1),
+    .auto_int_in_12_2(int_bus_auto_int_in_12_2),
+    .auto_int_in_12_3(int_bus_auto_int_in_12_3),
+    .auto_int_in_11_0(int_bus_auto_int_in_11_0),
+    .auto_int_in_11_1(int_bus_auto_int_in_11_1),
+    .auto_int_in_11_2(int_bus_auto_int_in_11_2),
+    .auto_int_in_11_3(int_bus_auto_int_in_11_3),
+    .auto_int_in_10_0(int_bus_auto_int_in_10_0),
+    .auto_int_in_10_1(int_bus_auto_int_in_10_1),
+    .auto_int_in_10_2(int_bus_auto_int_in_10_2),
+    .auto_int_in_10_3(int_bus_auto_int_in_10_3),
+    .auto_int_in_9_0(int_bus_auto_int_in_9_0),
+    .auto_int_in_9_1(int_bus_auto_int_in_9_1),
+    .auto_int_in_9_2(int_bus_auto_int_in_9_2),
+    .auto_int_in_9_3(int_bus_auto_int_in_9_3),
+    .auto_int_in_9_4(int_bus_auto_int_in_9_4),
+    .auto_int_in_9_5(int_bus_auto_int_in_9_5),
+    .auto_int_in_9_6(int_bus_auto_int_in_9_6),
+    .auto_int_in_9_7(int_bus_auto_int_in_9_7),
+    .auto_int_in_9_8(int_bus_auto_int_in_9_8),
+    .auto_int_in_9_9(int_bus_auto_int_in_9_9),
+    .auto_int_in_9_10(int_bus_auto_int_in_9_10),
+    .auto_int_in_9_11(int_bus_auto_int_in_9_11),
+    .auto_int_in_9_12(int_bus_auto_int_in_9_12),
+    .auto_int_in_9_13(int_bus_auto_int_in_9_13),
+    .auto_int_in_9_14(int_bus_auto_int_in_9_14),
+    .auto_int_in_9_15(int_bus_auto_int_in_9_15),
+    .auto_int_in_9_16(int_bus_auto_int_in_9_16),
+    .auto_int_in_9_17(int_bus_auto_int_in_9_17),
+    .auto_int_in_9_18(int_bus_auto_int_in_9_18),
+    .auto_int_in_9_19(int_bus_auto_int_in_9_19),
+    .auto_int_in_9_20(int_bus_auto_int_in_9_20),
+    .auto_int_in_9_21(int_bus_auto_int_in_9_21),
+    .auto_int_in_9_22(int_bus_auto_int_in_9_22),
+    .auto_int_in_9_23(int_bus_auto_int_in_9_23),
+    .auto_int_in_9_24(int_bus_auto_int_in_9_24),
+    .auto_int_in_9_25(int_bus_auto_int_in_9_25),
+    .auto_int_in_9_26(int_bus_auto_int_in_9_26),
+    .auto_int_in_9_27(int_bus_auto_int_in_9_27),
+    .auto_int_in_9_28(int_bus_auto_int_in_9_28),
+    .auto_int_in_9_29(int_bus_auto_int_in_9_29),
+    .auto_int_in_9_30(int_bus_auto_int_in_9_30),
+    .auto_int_in_9_31(int_bus_auto_int_in_9_31),
+    .auto_int_in_8_0(int_bus_auto_int_in_8_0),
+    .auto_int_in_7_0(int_bus_auto_int_in_7_0),
+    .auto_int_in_6_0(int_bus_auto_int_in_6_0),
+    .auto_int_in_5_0(int_bus_auto_int_in_5_0),
+    .auto_int_in_4_0(int_bus_auto_int_in_4_0),
+    .auto_int_in_3_0(int_bus_auto_int_in_3_0),
+    .auto_int_in_2_0(int_bus_auto_int_in_2_0),
+    .auto_int_in_1_0(int_bus_auto_int_in_1_0),
+    .auto_int_in_0_0(int_bus_auto_int_in_0_0),
+    .auto_int_in_0_1(int_bus_auto_int_in_0_1),
+    .auto_int_out_0(int_bus_auto_int_out_0),
+    .auto_int_out_1(int_bus_auto_int_out_1),
+    .auto_int_out_2(int_bus_auto_int_out_2),
+    .auto_int_out_3(int_bus_auto_int_out_3),
+    .auto_int_out_4(int_bus_auto_int_out_4),
+    .auto_int_out_5(int_bus_auto_int_out_5),
+    .auto_int_out_6(int_bus_auto_int_out_6),
+    .auto_int_out_7(int_bus_auto_int_out_7),
+    .auto_int_out_8(int_bus_auto_int_out_8),
+    .auto_int_out_9(int_bus_auto_int_out_9),
+    .auto_int_out_10(int_bus_auto_int_out_10),
+    .auto_int_out_11(int_bus_auto_int_out_11),
+    .auto_int_out_12(int_bus_auto_int_out_12),
+    .auto_int_out_13(int_bus_auto_int_out_13),
+    .auto_int_out_14(int_bus_auto_int_out_14),
+    .auto_int_out_15(int_bus_auto_int_out_15),
+    .auto_int_out_16(int_bus_auto_int_out_16),
+    .auto_int_out_17(int_bus_auto_int_out_17),
+    .auto_int_out_18(int_bus_auto_int_out_18),
+    .auto_int_out_19(int_bus_auto_int_out_19),
+    .auto_int_out_20(int_bus_auto_int_out_20),
+    .auto_int_out_21(int_bus_auto_int_out_21),
+    .auto_int_out_22(int_bus_auto_int_out_22),
+    .auto_int_out_23(int_bus_auto_int_out_23),
+    .auto_int_out_24(int_bus_auto_int_out_24),
+    .auto_int_out_25(int_bus_auto_int_out_25),
+    .auto_int_out_26(int_bus_auto_int_out_26),
+    .auto_int_out_27(int_bus_auto_int_out_27),
+    .auto_int_out_28(int_bus_auto_int_out_28),
+    .auto_int_out_29(int_bus_auto_int_out_29),
+    .auto_int_out_30(int_bus_auto_int_out_30),
+    .auto_int_out_31(int_bus_auto_int_out_31),
+    .auto_int_out_32(int_bus_auto_int_out_32),
+    .auto_int_out_33(int_bus_auto_int_out_33),
+    .auto_int_out_34(int_bus_auto_int_out_34),
+    .auto_int_out_35(int_bus_auto_int_out_35),
+    .auto_int_out_36(int_bus_auto_int_out_36),
+    .auto_int_out_37(int_bus_auto_int_out_37),
+    .auto_int_out_38(int_bus_auto_int_out_38),
+    .auto_int_out_39(int_bus_auto_int_out_39),
+    .auto_int_out_40(int_bus_auto_int_out_40),
+    .auto_int_out_41(int_bus_auto_int_out_41),
+    .auto_int_out_42(int_bus_auto_int_out_42),
+    .auto_int_out_43(int_bus_auto_int_out_43),
+    .auto_int_out_44(int_bus_auto_int_out_44),
+    .auto_int_out_45(int_bus_auto_int_out_45),
+    .auto_int_out_46(int_bus_auto_int_out_46),
+    .auto_int_out_47(int_bus_auto_int_out_47),
+    .auto_int_out_48(int_bus_auto_int_out_48),
+    .auto_int_out_49(int_bus_auto_int_out_49),
+    .auto_int_out_50(int_bus_auto_int_out_50),
+    .auto_int_out_51(int_bus_auto_int_out_51),
+    .auto_int_out_52(int_bus_auto_int_out_52),
+    .auto_int_out_53(int_bus_auto_int_out_53),
+    .auto_int_out_54(int_bus_auto_int_out_54),
+    .auto_int_out_55(int_bus_auto_int_out_55)
+  );
+  assign auto_int_bus_int_out_0 = int_bus_auto_int_out_0; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_1 = int_bus_auto_int_out_1; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_2 = int_bus_auto_int_out_2; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_3 = int_bus_auto_int_out_3; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_4 = int_bus_auto_int_out_4; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_5 = int_bus_auto_int_out_5; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_6 = int_bus_auto_int_out_6; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_7 = int_bus_auto_int_out_7; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_8 = int_bus_auto_int_out_8; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_9 = int_bus_auto_int_out_9; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_10 = int_bus_auto_int_out_10; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_11 = int_bus_auto_int_out_11; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_12 = int_bus_auto_int_out_12; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_13 = int_bus_auto_int_out_13; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_14 = int_bus_auto_int_out_14; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_15 = int_bus_auto_int_out_15; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_16 = int_bus_auto_int_out_16; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_17 = int_bus_auto_int_out_17; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_18 = int_bus_auto_int_out_18; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_19 = int_bus_auto_int_out_19; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_20 = int_bus_auto_int_out_20; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_21 = int_bus_auto_int_out_21; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_22 = int_bus_auto_int_out_22; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_23 = int_bus_auto_int_out_23; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_24 = int_bus_auto_int_out_24; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_25 = int_bus_auto_int_out_25; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_26 = int_bus_auto_int_out_26; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_27 = int_bus_auto_int_out_27; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_28 = int_bus_auto_int_out_28; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_29 = int_bus_auto_int_out_29; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_30 = int_bus_auto_int_out_30; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_31 = int_bus_auto_int_out_31; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_32 = int_bus_auto_int_out_32; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_33 = int_bus_auto_int_out_33; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_34 = int_bus_auto_int_out_34; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_35 = int_bus_auto_int_out_35; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_36 = int_bus_auto_int_out_36; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_37 = int_bus_auto_int_out_37; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_38 = int_bus_auto_int_out_38; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_39 = int_bus_auto_int_out_39; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_40 = int_bus_auto_int_out_40; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_41 = int_bus_auto_int_out_41; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_42 = int_bus_auto_int_out_42; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_43 = int_bus_auto_int_out_43; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_44 = int_bus_auto_int_out_44; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_45 = int_bus_auto_int_out_45; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_46 = int_bus_auto_int_out_46; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_47 = int_bus_auto_int_out_47; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_48 = int_bus_auto_int_out_48; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_49 = int_bus_auto_int_out_49; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_50 = int_bus_auto_int_out_50; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_51 = int_bus_auto_int_out_51; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_52 = int_bus_auto_int_out_52; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_53 = int_bus_auto_int_out_53; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_54 = int_bus_auto_int_out_54; // @[LazyModule.scala 311:12]
+  assign auto_int_bus_int_out_55 = int_bus_auto_int_out_55; // @[LazyModule.scala 311:12]
+  assign int_bus_auto_int_in_14_0 = auto_int_bus_int_in_14_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_13_0 = auto_int_bus_int_in_13_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_12_0 = auto_int_bus_int_in_12_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_12_1 = auto_int_bus_int_in_12_1; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_12_2 = auto_int_bus_int_in_12_2; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_12_3 = auto_int_bus_int_in_12_3; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_11_0 = auto_int_bus_int_in_11_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_11_1 = auto_int_bus_int_in_11_1; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_11_2 = auto_int_bus_int_in_11_2; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_11_3 = auto_int_bus_int_in_11_3; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_10_0 = auto_int_bus_int_in_10_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_10_1 = auto_int_bus_int_in_10_1; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_10_2 = auto_int_bus_int_in_10_2; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_10_3 = auto_int_bus_int_in_10_3; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_0 = auto_int_bus_int_in_9_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_1 = auto_int_bus_int_in_9_1; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_2 = auto_int_bus_int_in_9_2; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_3 = auto_int_bus_int_in_9_3; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_4 = auto_int_bus_int_in_9_4; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_5 = auto_int_bus_int_in_9_5; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_6 = auto_int_bus_int_in_9_6; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_7 = auto_int_bus_int_in_9_7; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_8 = auto_int_bus_int_in_9_8; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_9 = auto_int_bus_int_in_9_9; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_10 = auto_int_bus_int_in_9_10; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_11 = auto_int_bus_int_in_9_11; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_12 = auto_int_bus_int_in_9_12; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_13 = auto_int_bus_int_in_9_13; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_14 = auto_int_bus_int_in_9_14; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_15 = auto_int_bus_int_in_9_15; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_16 = auto_int_bus_int_in_9_16; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_17 = auto_int_bus_int_in_9_17; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_18 = auto_int_bus_int_in_9_18; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_19 = auto_int_bus_int_in_9_19; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_20 = auto_int_bus_int_in_9_20; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_21 = auto_int_bus_int_in_9_21; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_22 = auto_int_bus_int_in_9_22; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_23 = auto_int_bus_int_in_9_23; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_24 = auto_int_bus_int_in_9_24; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_25 = auto_int_bus_int_in_9_25; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_26 = auto_int_bus_int_in_9_26; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_27 = auto_int_bus_int_in_9_27; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_28 = auto_int_bus_int_in_9_28; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_29 = auto_int_bus_int_in_9_29; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_30 = auto_int_bus_int_in_9_30; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_9_31 = auto_int_bus_int_in_9_31; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_8_0 = auto_int_bus_int_in_8_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_7_0 = auto_int_bus_int_in_7_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_6_0 = auto_int_bus_int_in_6_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_5_0 = auto_int_bus_int_in_5_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_4_0 = auto_int_bus_int_in_4_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_3_0 = auto_int_bus_int_in_3_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_2_0 = auto_int_bus_int_in_2_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_1_0 = auto_int_bus_int_in_1_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_0_0 = auto_int_bus_int_in_0_0; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_0_1 = auto_int_bus_int_in_0_1; // @[LazyModule.scala 309:16]
+endmodule
+module SimpleClockGroupSource(
+  input   clock,
+  input   reset,
+  output  auto_out_member_subsystem_sbus_5_clock,
+  output  auto_out_member_subsystem_sbus_5_reset,
+  output  auto_out_member_subsystem_sbus_4_clock,
+  output  auto_out_member_subsystem_sbus_4_reset,
+  output  auto_out_member_subsystem_sbus_3_clock,
+  output  auto_out_member_subsystem_sbus_3_reset,
+  output  auto_out_member_subsystem_sbus_2_clock,
+  output  auto_out_member_subsystem_sbus_2_reset,
+  output  auto_out_member_subsystem_sbus_1_clock,
+  output  auto_out_member_subsystem_sbus_1_reset,
+  output  auto_out_member_subsystem_sbus_0_clock,
+  output  auto_out_member_subsystem_sbus_0_reset
+);
+  assign auto_out_member_subsystem_sbus_5_clock = clock; // @[Nodes.scala 1207:84 ClockGroup.scala 72:17]
+  assign auto_out_member_subsystem_sbus_5_reset = reset; // @[Nodes.scala 1207:84 ClockGroup.scala 72:35]
+  assign auto_out_member_subsystem_sbus_4_clock = clock; // @[Nodes.scala 1207:84 ClockGroup.scala 72:17]
+  assign auto_out_member_subsystem_sbus_4_reset = reset; // @[Nodes.scala 1207:84 ClockGroup.scala 72:35]
+  assign auto_out_member_subsystem_sbus_3_clock = clock; // @[Nodes.scala 1207:84 ClockGroup.scala 72:17]
+  assign auto_out_member_subsystem_sbus_3_reset = reset; // @[Nodes.scala 1207:84 ClockGroup.scala 72:35]
+  assign auto_out_member_subsystem_sbus_2_clock = clock; // @[Nodes.scala 1207:84 ClockGroup.scala 72:17]
+  assign auto_out_member_subsystem_sbus_2_reset = reset; // @[Nodes.scala 1207:84 ClockGroup.scala 72:35]
+  assign auto_out_member_subsystem_sbus_1_clock = clock; // @[Nodes.scala 1207:84 ClockGroup.scala 72:17]
+  assign auto_out_member_subsystem_sbus_1_reset = reset; // @[Nodes.scala 1207:84 ClockGroup.scala 72:35]
+  assign auto_out_member_subsystem_sbus_0_clock = clock; // @[Nodes.scala 1207:84 ClockGroup.scala 72:17]
+  assign auto_out_member_subsystem_sbus_0_reset = reset; // @[Nodes.scala 1207:84 ClockGroup.scala 72:35]
+endmodule
+module ClockGroupAggregator(
+  input   auto_in_member_subsystem_sbus_5_clock,
+  input   auto_in_member_subsystem_sbus_5_reset,
+  input   auto_in_member_subsystem_sbus_4_clock,
+  input   auto_in_member_subsystem_sbus_4_reset,
+  input   auto_in_member_subsystem_sbus_3_clock,
+  input   auto_in_member_subsystem_sbus_3_reset,
+  input   auto_in_member_subsystem_sbus_2_clock,
+  input   auto_in_member_subsystem_sbus_2_reset,
+  input   auto_in_member_subsystem_sbus_1_clock,
+  input   auto_in_member_subsystem_sbus_1_reset,
+  input   auto_in_member_subsystem_sbus_0_clock,
+  input   auto_in_member_subsystem_sbus_0_reset,
+  output  auto_out_3_member_subsystem_l2_1_clock,
+  output  auto_out_3_member_subsystem_l2_1_reset,
+  output  auto_out_3_member_subsystem_l2_0_clock,
+  output  auto_out_3_member_subsystem_l2_0_reset,
+  output  auto_out_2_member_subsystem_fbus_0_clock,
+  output  auto_out_2_member_subsystem_fbus_0_reset,
+  output  auto_out_1_member_subsystem_cbus_1_clock,
+  output  auto_out_1_member_subsystem_cbus_1_reset,
+  output  auto_out_1_member_subsystem_cbus_0_clock,
+  output  auto_out_1_member_subsystem_cbus_0_reset,
+  output  auto_out_0_member_subsystem_sbus_0_clock,
+  output  auto_out_0_member_subsystem_sbus_0_reset
+);
+  assign auto_out_3_member_subsystem_l2_1_clock = auto_in_member_subsystem_sbus_5_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_member_subsystem_l2_1_reset = auto_in_member_subsystem_sbus_5_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_member_subsystem_l2_0_clock = auto_in_member_subsystem_sbus_4_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_member_subsystem_l2_0_reset = auto_in_member_subsystem_sbus_4_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_member_subsystem_fbus_0_clock = auto_in_member_subsystem_sbus_3_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_member_subsystem_fbus_0_reset = auto_in_member_subsystem_sbus_3_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_member_subsystem_cbus_1_clock = auto_in_member_subsystem_sbus_2_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_member_subsystem_cbus_1_reset = auto_in_member_subsystem_sbus_2_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_member_subsystem_cbus_0_clock = auto_in_member_subsystem_sbus_1_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_member_subsystem_cbus_0_reset = auto_in_member_subsystem_sbus_1_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_member_subsystem_sbus_0_clock = auto_in_member_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_member_subsystem_sbus_0_reset = auto_in_member_subsystem_sbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockGroup(
+  input   auto_in_member_subsystem_sbus_0_clock,
+  input   auto_in_member_subsystem_sbus_0_reset,
+  output  auto_out_clock,
+  output  auto_out_reset
+);
+  assign auto_out_clock = auto_in_member_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_reset = auto_in_member_subsystem_sbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module FixedClockBroadcast(
+  input   auto_in_clock,
+  input   auto_in_reset,
+  output  auto_out_2_clock,
+  output  auto_out_2_reset,
+  output  auto_out_0_clock,
+  output  auto_out_0_reset
+);
+  assign auto_out_2_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_b_ready,
+  input         io_in_b_valid,
+  input  [1:0]  io_in_b_bits_param,
+  input  [30:0] io_in_b_bits_address,
+  input         io_in_c_ready,
+  input         io_in_c_valid,
+  input  [2:0]  io_in_c_bits_opcode,
+  input  [2:0]  io_in_c_bits_param,
+  input  [3:0]  io_in_c_bits_size,
+  input  [1:0]  io_in_c_bits_source,
+  input  [30:0] io_in_c_bits_address,
+  input         io_in_c_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input  [1:0]  io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt,
+  input         io_in_e_valid,
+  input  [1:0]  io_in_e_bits_sink
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_86 = {{19'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_86; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [31:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [31:0] _T_48 = $signed(_T_7) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_50 = io_in_a_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_53 = $signed(_T_51) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_55 = io_in_a_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_58 = $signed(_T_56) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_60 = io_in_a_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_63 = $signed(_T_61) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_65 = io_in_a_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_68 = $signed(_T_66) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_70 = io_in_a_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_73 = $signed(_T_71) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_75 = io_in_a_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_78 = $signed(_T_76) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_80 = io_in_a_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_83 = $signed(_T_81) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_85 = io_in_a_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_86 = {1'b0,$signed(_T_85)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_88 = $signed(_T_86) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_89 = $signed(_T_88) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_90 = io_in_a_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_91 = {1'b0,$signed(_T_90)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_93 = $signed(_T_91) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_94 = $signed(_T_93) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_95 = io_in_a_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_96 = {1'b0,$signed(_T_95)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_98 = $signed(_T_96) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_99 = $signed(_T_98) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_100 = io_in_a_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_101 = {1'b0,$signed(_T_100)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_103 = $signed(_T_101) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_104 = $signed(_T_103) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_105 = io_in_a_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_106 = {1'b0,$signed(_T_105)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_108 = $signed(_T_106) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_109 = $signed(_T_108) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_110 = io_in_a_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_111 = {1'b0,$signed(_T_110)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_113 = $signed(_T_111) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_114 = $signed(_T_113) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_130 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire [30:0] _T_133 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_134 = {1'b0,$signed(_T_133)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_136 = $signed(_T_134) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_137 = $signed(_T_136) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_138 = _T_130 & _T_137; // @[Parameters.scala 670:56]
+  wire  _T_141 = _T_42 & _T_138; // @[Monitor.scala 82:72]
+  wire  _T_148 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_149 = _source_ok_T & _T_148; // @[Mux.scala 27:73]
+  wire  _T_246 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109
+     | _T_114 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_247 = _T_35 & _T_246; // @[Parameters.scala 670:56]
+  wire  _T_249 = _T_149 & _T_247; // @[Monitor.scala 83:78]
+  wire  _T_263 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_267 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_268 = _T_267 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_272 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_510 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_523 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_546 = _T_35 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_633 = _T_49 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 |
+    _T_114 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_634 = _T_130 & _T_633; // @[Parameters.scala 670:56]
+  wire  _T_636 = _T_546 | _T_634; // @[Parameters.scala 672:30]
+  wire  _T_646 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_650 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_658 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_752 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_753 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_754 = _T_130 & _T_753; // @[Parameters.scala 670:56]
+  wire  _T_769 = _T_546 | _T_754; // @[Parameters.scala 672:30]
+  wire  _T_771 = _T_42 & _T_769; // @[Monitor.scala 115:71]
+  wire  _T_789 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_879 = _T_130 & _T_752; // @[Parameters.scala 670:56]
+  wire  _T_900 = _T_546 | _T_879; // @[Parameters.scala 672:30]
+  wire  _T_902 = _T_42 & _T_900; // @[Monitor.scala 123:74]
+  wire [3:0] _T_916 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_917 = io_in_a_bits_mask & _T_916; // @[Monitor.scala 127:31]
+  wire  _T_918 = _T_917 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_922 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_934 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_1007 = _T_49 | _T_54 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_1008 = _T_934 & _T_1007; // @[Parameters.scala 670:56]
+  wire  _T_1030 = _T_42 & _T_1008; // @[Monitor.scala 131:74]
+  wire  _T_1040 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_1048 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1166 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1174 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1282 = _T_42 & _T_546; // @[Monitor.scala 147:68]
+  wire  _T_1292 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1304 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_1308 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1312 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1316 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1320 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1324 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1328 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1339 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1343 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1356 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1376 = _T_1324 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1385 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1402 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1420 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire [31:0] _T_1444 = {1'b0,$signed(io_in_b_bits_address)}; // @[Parameters.scala 137:49]
+  wire [30:0] _address_ok_T = io_in_b_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_1 = {1'b0,$signed(_address_ok_T)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_3 = $signed(_address_ok_T_1) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_4 = $signed(_address_ok_T_3) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_5 = io_in_b_bits_address ^ 31'h10013000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_6 = {1'b0,$signed(_address_ok_T_5)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_8 = $signed(_address_ok_T_6) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_9 = $signed(_address_ok_T_8) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_10 = io_in_b_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_11 = {1'b0,$signed(_address_ok_T_10)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_13 = $signed(_address_ok_T_11) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_14 = $signed(_address_ok_T_13) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_15 = io_in_b_bits_address ^ 31'h10033000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_16 = {1'b0,$signed(_address_ok_T_15)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_18 = $signed(_address_ok_T_16) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_19 = $signed(_address_ok_T_18) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_20 = io_in_b_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_21 = {1'b0,$signed(_address_ok_T_20)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_23 = $signed(_address_ok_T_21) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_24 = $signed(_address_ok_T_23) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_25 = io_in_b_bits_address ^ 31'h10053000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_26 = {1'b0,$signed(_address_ok_T_25)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_28 = $signed(_address_ok_T_26) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_29 = $signed(_address_ok_T_28) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_30 = io_in_b_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_31 = {1'b0,$signed(_address_ok_T_30)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_33 = $signed(_address_ok_T_31) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_34 = $signed(_address_ok_T_33) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_35 = io_in_b_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_36 = {1'b0,$signed(_address_ok_T_35)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_38 = $signed(_address_ok_T_36) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_39 = $signed(_address_ok_T_38) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_40 = io_in_b_bits_address ^ 31'h10034000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_41 = {1'b0,$signed(_address_ok_T_40)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_43 = $signed(_address_ok_T_41) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_44 = $signed(_address_ok_T_43) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_45 = io_in_b_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_46 = {1'b0,$signed(_address_ok_T_45)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_48 = $signed(_address_ok_T_46) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_49 = $signed(_address_ok_T_48) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_50 = io_in_b_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_51 = {1'b0,$signed(_address_ok_T_50)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_53 = $signed(_address_ok_T_51) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_54 = $signed(_address_ok_T_53) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_55 = io_in_b_bits_address ^ 31'h10015000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_56 = {1'b0,$signed(_address_ok_T_55)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_58 = $signed(_address_ok_T_56) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_59 = $signed(_address_ok_T_58) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_60 = io_in_b_bits_address ^ 31'h10025000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_61 = {1'b0,$signed(_address_ok_T_60)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_63 = $signed(_address_ok_T_61) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_64 = $signed(_address_ok_T_63) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_65 = io_in_b_bits_address ^ 31'h10035000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_66 = {1'b0,$signed(_address_ok_T_65)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_68 = $signed(_address_ok_T_66) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_69 = $signed(_address_ok_T_68) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_70 = io_in_b_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_71 = {1'b0,$signed(_address_ok_T_70)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_73 = $signed(_address_ok_T_71) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_74 = $signed(_address_ok_T_73) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_75 = io_in_b_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_76 = {1'b0,$signed(_address_ok_T_75)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_78 = $signed(_address_ok_T_76) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_79 = $signed(_address_ok_T_78) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_80 = io_in_b_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_81 = {1'b0,$signed(_address_ok_T_80)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_83 = $signed(_address_ok_T_81) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_84 = $signed(_address_ok_T_83) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_85 = io_in_b_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_86 = {1'b0,$signed(_address_ok_T_85)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_88 = $signed(_address_ok_T_86) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_89 = $signed(_address_ok_T_88) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _address_ok_T_93 = $signed(_T_1444) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_94 = $signed(_address_ok_T_93) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_95 = io_in_b_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_96 = {1'b0,$signed(_address_ok_T_95)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_98 = $signed(_address_ok_T_96) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_99 = $signed(_address_ok_T_98) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_100 = io_in_b_bits_address ^ 31'h10000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_101 = {1'b0,$signed(_address_ok_T_100)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_103 = $signed(_address_ok_T_101) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_104 = $signed(_address_ok_T_103) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_105 = io_in_b_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_106 = {1'b0,$signed(_address_ok_T_105)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_108 = $signed(_address_ok_T_106) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_109 = $signed(_address_ok_T_108) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_110 = io_in_b_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_111 = {1'b0,$signed(_address_ok_T_110)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_113 = $signed(_address_ok_T_111) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_114 = $signed(_address_ok_T_113) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  address_ok = _address_ok_T_4 | _address_ok_T_9 | _address_ok_T_14 | _address_ok_T_19 | _address_ok_T_24 |
+    _address_ok_T_29 | _address_ok_T_34 | _address_ok_T_39 | _address_ok_T_44 | _address_ok_T_49 | _address_ok_T_54 |
+    _address_ok_T_59 | _address_ok_T_64 | _address_ok_T_69 | _address_ok_T_74 | _address_ok_T_79 | _address_ok_T_84 |
+    _address_ok_T_89 | _address_ok_T_94 | _address_ok_T_99 | _address_ok_T_104 | _address_ok_T_109 | _address_ok_T_114; // @[Parameters.scala 622:64]
+  wire [30:0] _is_aligned_T_1 = io_in_b_bits_address & 31'h3f; // @[Edges.scala 20:16]
+  wire  is_aligned_1 = _is_aligned_T_1 == 31'h0; // @[Edges.scala 20:24]
+  wire [31:0] _T_1487 = $signed(_T_1444) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_1488 = $signed(_T_1487) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1517 = $signed(_address_ok_T_51) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_1518 = $signed(_T_1517) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1522 = $signed(_address_ok_T_31) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_1523 = $signed(_T_1522) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1532 = $signed(_address_ok_T_11) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_1533 = $signed(_T_1532) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1537 = $signed(_address_ok_T_46) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_1538 = $signed(_T_1537) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1547 = $signed(_address_ok_T_21) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_1548 = $signed(_T_1547) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_1572 = _T_1488 | _address_ok_T_4 | _address_ok_T_109 | _address_ok_T_89 | _address_ok_T_99 | _address_ok_T_84
+     | _T_1518 | _T_1523 | _address_ok_T_74 | _T_1533 | _T_1538 | _address_ok_T_79 | _T_1548 | _address_ok_T_39 |
+    _address_ok_T_114; // @[Parameters.scala 671:42]
+  wire  _T_1588 = io_in_b_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _source_ok_T_8 = io_in_c_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_c_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_10 = io_in_c_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_2 = _source_ok_T_8 | _source_ok_T_9 | _source_ok_T_10; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_7 = 27'hfff << io_in_c_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask_2 = ~_is_aligned_mask_T_7[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_87 = {{19'd0}, is_aligned_mask_2}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T_2 = io_in_c_bits_address & _GEN_87; // @[Edges.scala 20:16]
+  wire  is_aligned_2 = _is_aligned_T_2 == 31'h0; // @[Edges.scala 20:24]
+  wire [30:0] _address_ok_T_136 = io_in_c_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_137 = {1'b0,$signed(_address_ok_T_136)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_139 = $signed(_address_ok_T_137) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_140 = $signed(_address_ok_T_139) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_141 = io_in_c_bits_address ^ 31'h10013000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_142 = {1'b0,$signed(_address_ok_T_141)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_144 = $signed(_address_ok_T_142) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_145 = $signed(_address_ok_T_144) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_146 = io_in_c_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_147 = {1'b0,$signed(_address_ok_T_146)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_149 = $signed(_address_ok_T_147) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_150 = $signed(_address_ok_T_149) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_151 = io_in_c_bits_address ^ 31'h10033000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_152 = {1'b0,$signed(_address_ok_T_151)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_154 = $signed(_address_ok_T_152) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_155 = $signed(_address_ok_T_154) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_156 = io_in_c_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_157 = {1'b0,$signed(_address_ok_T_156)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_159 = $signed(_address_ok_T_157) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_160 = $signed(_address_ok_T_159) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_161 = io_in_c_bits_address ^ 31'h10053000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_162 = {1'b0,$signed(_address_ok_T_161)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_164 = $signed(_address_ok_T_162) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_165 = $signed(_address_ok_T_164) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_166 = io_in_c_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_167 = {1'b0,$signed(_address_ok_T_166)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_169 = $signed(_address_ok_T_167) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_170 = $signed(_address_ok_T_169) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_171 = io_in_c_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_172 = {1'b0,$signed(_address_ok_T_171)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_174 = $signed(_address_ok_T_172) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_175 = $signed(_address_ok_T_174) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_176 = io_in_c_bits_address ^ 31'h10034000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_177 = {1'b0,$signed(_address_ok_T_176)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_179 = $signed(_address_ok_T_177) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_180 = $signed(_address_ok_T_179) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_181 = io_in_c_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_182 = {1'b0,$signed(_address_ok_T_181)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_184 = $signed(_address_ok_T_182) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_185 = $signed(_address_ok_T_184) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_186 = io_in_c_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_187 = {1'b0,$signed(_address_ok_T_186)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_189 = $signed(_address_ok_T_187) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_190 = $signed(_address_ok_T_189) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_191 = io_in_c_bits_address ^ 31'h10015000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_192 = {1'b0,$signed(_address_ok_T_191)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_194 = $signed(_address_ok_T_192) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_195 = $signed(_address_ok_T_194) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_196 = io_in_c_bits_address ^ 31'h10025000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_197 = {1'b0,$signed(_address_ok_T_196)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_199 = $signed(_address_ok_T_197) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_200 = $signed(_address_ok_T_199) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_201 = io_in_c_bits_address ^ 31'h10035000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_202 = {1'b0,$signed(_address_ok_T_201)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_204 = $signed(_address_ok_T_202) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_205 = $signed(_address_ok_T_204) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_206 = io_in_c_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_207 = {1'b0,$signed(_address_ok_T_206)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_209 = $signed(_address_ok_T_207) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_210 = $signed(_address_ok_T_209) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_211 = io_in_c_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_212 = {1'b0,$signed(_address_ok_T_211)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_214 = $signed(_address_ok_T_212) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_215 = $signed(_address_ok_T_214) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_216 = io_in_c_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_217 = {1'b0,$signed(_address_ok_T_216)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_219 = $signed(_address_ok_T_217) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_220 = $signed(_address_ok_T_219) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_221 = io_in_c_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_222 = {1'b0,$signed(_address_ok_T_221)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_224 = $signed(_address_ok_T_222) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_225 = $signed(_address_ok_T_224) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _address_ok_T_227 = {1'b0,$signed(io_in_c_bits_address)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_229 = $signed(_address_ok_T_227) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_230 = $signed(_address_ok_T_229) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_231 = io_in_c_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_232 = {1'b0,$signed(_address_ok_T_231)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_234 = $signed(_address_ok_T_232) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_235 = $signed(_address_ok_T_234) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_236 = io_in_c_bits_address ^ 31'h10000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_237 = {1'b0,$signed(_address_ok_T_236)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_239 = $signed(_address_ok_T_237) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_240 = $signed(_address_ok_T_239) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_241 = io_in_c_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_242 = {1'b0,$signed(_address_ok_T_241)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_244 = $signed(_address_ok_T_242) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_245 = $signed(_address_ok_T_244) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_246 = io_in_c_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_247 = {1'b0,$signed(_address_ok_T_246)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_249 = $signed(_address_ok_T_247) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_250 = $signed(_address_ok_T_249) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  address_ok_1 = _address_ok_T_140 | _address_ok_T_145 | _address_ok_T_150 | _address_ok_T_155 | _address_ok_T_160
+     | _address_ok_T_165 | _address_ok_T_170 | _address_ok_T_175 | _address_ok_T_180 | _address_ok_T_185 |
+    _address_ok_T_190 | _address_ok_T_195 | _address_ok_T_200 | _address_ok_T_205 | _address_ok_T_210 |
+    _address_ok_T_215 | _address_ok_T_220 | _address_ok_T_225 | _address_ok_T_230 | _address_ok_T_235 |
+    _address_ok_T_240 | _address_ok_T_245 | _address_ok_T_250; // @[Parameters.scala 622:64]
+  wire  _T_2341 = io_in_c_bits_opcode == 3'h4; // @[Monitor.scala 242:25]
+  wire  _T_2348 = io_in_c_bits_size >= 4'h2; // @[Monitor.scala 245:30]
+  wire  _T_2355 = io_in_c_bits_param <= 3'h5; // @[Bundles.scala 120:29]
+  wire  _T_2359 = ~io_in_c_bits_corrupt; // @[Monitor.scala 248:18]
+  wire  _T_2363 = io_in_c_bits_opcode == 3'h5; // @[Monitor.scala 251:25]
+  wire  _T_2381 = io_in_c_bits_opcode == 3'h6; // @[Monitor.scala 259:25]
+  wire  _T_2383 = io_in_c_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_2390 = _T_2383 & source_ok_2; // @[Parameters.scala 1160:30]
+  wire [31:0] _T_2396 = $signed(_address_ok_T_227) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_2397 = $signed(_T_2396) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2426 = $signed(_address_ok_T_187) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_2427 = $signed(_T_2426) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2431 = $signed(_address_ok_T_167) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_2432 = $signed(_T_2431) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2441 = $signed(_address_ok_T_147) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_2442 = $signed(_T_2441) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2446 = $signed(_address_ok_T_182) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_2447 = $signed(_T_2446) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2456 = $signed(_address_ok_T_157) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_2457 = $signed(_T_2456) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_2478 = io_in_c_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_2486 = _T_2478 & _address_ok_T_250; // @[Parameters.scala 670:56]
+  wire  _T_2489 = _T_2390 & _T_2486; // @[Monitor.scala 260:78]
+  wire  _T_2496 = 4'h6 == io_in_c_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_2497 = _source_ok_T_8 & _T_2496; // @[Mux.scala 27:73]
+  wire  _T_2594 = _T_2397 | _address_ok_T_140 | _address_ok_T_245 | _address_ok_T_225 | _address_ok_T_235 |
+    _address_ok_T_220 | _T_2427 | _T_2432 | _address_ok_T_210 | _T_2442 | _T_2447 | _address_ok_T_215 | _T_2457 |
+    _address_ok_T_175 | _address_ok_T_250; // @[Parameters.scala 671:42]
+  wire  _T_2595 = _T_2383 & _T_2594; // @[Parameters.scala 670:56]
+  wire  _T_2597 = _T_2497 & _T_2595; // @[Monitor.scala 261:78]
+  wire  _T_2619 = io_in_c_bits_opcode == 3'h7; // @[Monitor.scala 269:25]
+  wire  _T_2853 = io_in_c_bits_opcode == 3'h0; // @[Monitor.scala 278:25]
+  wire  _T_2863 = io_in_c_bits_param == 3'h0; // @[Monitor.scala 282:31]
+  wire  _T_2871 = io_in_c_bits_opcode == 3'h1; // @[Monitor.scala 286:25]
+  wire  _T_2885 = io_in_c_bits_opcode == 3'h2; // @[Monitor.scala 293:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_2907 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_2908 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_2912 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_2916 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_2920 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_2924 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg [1:0] sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_2931 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_2932 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_2936 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_2940 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_2944 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_2948 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_2952 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  wire  b_first_done = io_in_b_ready & io_in_b_valid; // @[Decoupled.scala 50:35]
+  reg [9:0] b_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] b_first_counter1 = b_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  b_first = b_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [1:0] param_2; // @[Monitor.scala 408:22]
+  reg [30:0] address_1; // @[Monitor.scala 411:22]
+  wire  _T_2959 = io_in_b_valid & ~b_first; // @[Monitor.scala 412:19]
+  wire  _T_2964 = io_in_b_bits_param == param_2; // @[Monitor.scala 414:32]
+  wire  _T_2976 = io_in_b_bits_address == address_1; // @[Monitor.scala 417:32]
+  wire  _c_first_T = io_in_c_ready & io_in_c_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] c_first_beats1_decode = is_aligned_mask_2[11:2]; // @[Edges.scala 219:59]
+  wire  c_first_beats1_opdata = io_in_c_bits_opcode[0]; // @[Edges.scala 101:36]
+  reg [9:0] c_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] c_first_counter1 = c_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  c_first = c_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_3; // @[Monitor.scala 512:22]
+  reg [2:0] param_3; // @[Monitor.scala 513:22]
+  reg [3:0] size_3; // @[Monitor.scala 514:22]
+  reg [1:0] source_3; // @[Monitor.scala 515:22]
+  reg [30:0] address_2; // @[Monitor.scala 516:22]
+  wire  _T_2983 = io_in_c_valid & ~c_first; // @[Monitor.scala 517:19]
+  wire  _T_2984 = io_in_c_bits_opcode == opcode_3; // @[Monitor.scala 518:32]
+  wire  _T_2988 = io_in_c_bits_param == param_3; // @[Monitor.scala 519:32]
+  wire  _T_2992 = io_in_c_bits_size == size_3; // @[Monitor.scala 520:32]
+  wire  _T_2996 = io_in_c_bits_source == source_3; // @[Monitor.scala 521:32]
+  wire  _T_3000 = io_in_c_bits_address == address_2; // @[Monitor.scala 522:32]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_88 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_88}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_89 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_89 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_91 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_91; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_3006 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_27 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_3009 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_93 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_93}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_3011 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_3013 = ~_T_3011[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_28 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_31 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_32 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_3017 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_3019 = ~_T_1308; // @[Monitor.scala 671:74]
+  wire  _T_3020 = io_in_d_valid & d_first_1 & ~_T_1308; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_33 = io_in_d_valid & d_first_1 & ~_T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_34 = _d_first_T & d_first_1 & _T_3019 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_35 = _d_first_T & d_first_1 & _T_3019 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_36 = _d_first_T & d_first_1 & _T_3019 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_3006 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_3030 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_3032 = _T_3030[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_39 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_40 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_39; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_41 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_40; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_42 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_41; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_43 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_42; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_44 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_43; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_51 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_42; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_52 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_51; // @[Monitor.scala 686:{39,39}]
+  wire  _T_3037 = io_in_d_bits_opcode == _GEN_52; // @[Monitor.scala 686:39]
+  wire  _T_3038 = io_in_d_bits_opcode == _GEN_44 | _T_3037; // @[Monitor.scala 685:77]
+  wire  _T_3042 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_55 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_56 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_55; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_57 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_56; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_58 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_57; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_59 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_58; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_60 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_59; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_67 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_58; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_68 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_67; // @[Monitor.scala 690:{38,38}]
+  wire  _T_3049 = io_in_d_bits_opcode == _GEN_68; // @[Monitor.scala 690:38]
+  wire  _T_3050 = io_in_d_bits_opcode == _GEN_60 | _T_3049; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_95 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_3054 = _GEN_95 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_3064 = _T_3017 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_3019; // @[Monitor.scala 694:116]
+  wire  _T_3065 = ~io_in_d_ready; // @[Monitor.scala 695:15]
+  wire  _T_3066 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_27[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_33[2:0];
+  wire  _T_3073 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_28[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_34[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_31[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_35[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_32[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_36[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_3082 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] c_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] c_first_counter1_1 = c_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  c_first_1 = c_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_91; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_3092 = io_in_c_bits_opcode[2] & io_in_c_bits_opcode[1]; // @[Edges.scala 67:40]
+  wire  _T_3093 = io_in_c_valid & c_first_1 & _T_3092; // @[Monitor.scala 756:37]
+  wire [3:0] _c_set_wo_ready_T = 4'h1 << io_in_c_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_72 = io_in_c_valid & c_first_1 & _T_3092 ? _c_set_wo_ready_T : 4'h0; // @[Monitor.scala 756:71 757:22]
+  wire  _T_3099 = _c_first_T & c_first_1 & _T_3092; // @[Monitor.scala 760:38]
+  wire [4:0] _c_sizes_set_interm_T = {io_in_c_bits_size, 1'h0}; // @[Monitor.scala 763:51]
+  wire [4:0] _c_sizes_set_interm_T_1 = _c_sizes_set_interm_T | 5'h1; // @[Monitor.scala 763:59]
+  wire [4:0] _c_sizes_set_T = {io_in_c_bits_source, 3'h0}; // @[Monitor.scala 765:77]
+  wire [4:0] c_sizes_set_interm = _c_first_T & c_first_1 & _T_3092 ? _c_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 760:72 763:28]
+  wire [35:0] _GEN_5 = {{31'd0}, c_sizes_set_interm}; // @[Monitor.scala 765:52]
+  wire [35:0] _c_sizes_set_T_1 = _GEN_5 << _c_sizes_set_T; // @[Monitor.scala 765:52]
+  wire [2:0] _T_3100 = inflight_1 >> io_in_c_bits_source; // @[Monitor.scala 766:26]
+  wire  _T_3102 = ~_T_3100[0]; // @[Monitor.scala 766:17]
+  wire [3:0] _GEN_73 = _c_first_T & c_first_1 & _T_3092 ? _c_set_wo_ready_T : 4'h0; // @[Monitor.scala 760:72 761:28]
+  wire [35:0] _GEN_77 = _c_first_T & c_first_1 & _T_3092 ? _c_sizes_set_T_1 : 36'h0; // @[Monitor.scala 760:72 765:28]
+  wire  _T_3106 = io_in_d_valid & d_first_2; // @[Monitor.scala 779:26]
+  wire  _T_3108 = io_in_d_valid & d_first_2 & _T_1308; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_78 = io_in_d_valid & d_first_2 & _T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 779:89 780:22]
+  wire [3:0] _GEN_79 = _d_first_T & d_first_2 & _T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_81 = _d_first_T & d_first_2 & _T_1308 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire  _same_cycle_resp_T_8 = io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:113]
+  wire  same_cycle_resp_1 = _T_3093 & io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:88]
+  wire [2:0] _T_3116 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire  _T_3118 = _T_3116[0] | same_cycle_resp_1; // @[Monitor.scala 791:49]
+  wire  _T_3122 = io_in_d_bits_size == io_in_c_bits_size; // @[Monitor.scala 793:36]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_3126 = _GEN_95 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire  _T_3135 = _T_3106 & c_first_1 & io_in_c_valid & _same_cycle_resp_T_8 & _T_1308; // @[Monitor.scala 799:116]
+  wire  _T_3137 = _T_3065 | io_in_c_ready; // @[Monitor.scala 800:32]
+  wire [2:0] c_set_wo_ready = _GEN_72[2:0];
+  wire  _T_3141 = |c_set_wo_ready; // @[Monitor.scala 804:28]
+  wire [2:0] d_clr_wo_ready_1 = _GEN_78[2:0];
+  wire  _T_3142 = c_set_wo_ready != d_clr_wo_ready_1; // @[Monitor.scala 805:31]
+  wire [2:0] c_set = _GEN_73[2:0];
+  wire [2:0] _inflight_T_3 = inflight_1 | c_set; // @[Monitor.scala 809:35]
+  wire [2:0] d_clr_1 = _GEN_79[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = _inflight_T_3 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] c_sizes_set = _GEN_77[23:0];
+  wire [23:0] _inflight_sizes_T_3 = inflight_sizes_1 | c_sizes_set; // @[Monitor.scala 811:41]
+  wire [23:0] d_sizes_clr_1 = _GEN_81[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = _inflight_sizes_T_3 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_3151 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  reg [3:0] inflight_2; // @[Monitor.scala 823:27]
+  reg [9:0] d_first_counter_3; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_3 = d_first_counter_3 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_3 = d_first_counter_3 == 10'h0; // @[Edges.scala 230:25]
+  wire  _T_3163 = io_in_d_bits_opcode[2] & ~io_in_d_bits_opcode[1]; // @[Edges.scala 70:40]
+  wire  _T_3164 = _d_first_T & d_first_3 & _T_3163; // @[Monitor.scala 829:38]
+  wire [3:0] _d_set_T = 4'h1 << io_in_d_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_3165 = inflight_2 >> io_in_d_bits_sink; // @[Monitor.scala 831:23]
+  wire  _T_3167 = ~_T_3165[0]; // @[Monitor.scala 831:14]
+  wire [3:0] d_set = _d_first_T & d_first_3 & _T_3163 ? _d_set_T : 4'h0; // @[Monitor.scala 829:72 830:13]
+  wire [3:0] _e_clr_T = 4'h1 << io_in_e_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_3174 = d_set | inflight_2; // @[Monitor.scala 837:24]
+  wire [3:0] _T_3175 = _T_3174 >> io_in_e_bits_sink; // @[Monitor.scala 837:35]
+  wire [3:0] e_clr = io_in_e_valid ? _e_clr_T : 4'h0; // @[Monitor.scala 835:73 836:13]
+  wire [3:0] _inflight_T_6 = inflight_2 | d_set; // @[Monitor.scala 842:27]
+  wire [3:0] _inflight_T_7 = ~e_clr; // @[Monitor.scala 842:38]
+  wire [3:0] _inflight_T_8 = _inflight_T_6 & _inflight_T_7; // @[Monitor.scala 842:36]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      b_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (b_first_done) begin // @[Edges.scala 234:17]
+      if (b_first) begin // @[Edges.scala 235:21]
+        b_first_counter <= 10'h0;
+      end else begin
+        b_first_counter <= b_first_counter1;
+      end
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      param_2 <= io_in_b_bits_param; // @[Monitor.scala 421:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      address_1 <= io_in_b_bits_address; // @[Monitor.scala 424:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter <= c_first_beats1_decode;
+        end else begin
+          c_first_counter <= 10'h0;
+        end
+      end else begin
+        c_first_counter <= c_first_counter1;
+      end
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      opcode_3 <= io_in_c_bits_opcode; // @[Monitor.scala 525:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      param_3 <= io_in_c_bits_param; // @[Monitor.scala 526:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      size_3 <= io_in_c_bits_size; // @[Monitor.scala 527:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      source_3 <= io_in_c_bits_source; // @[Monitor.scala 528:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      address_2 <= io_in_c_bits_address; // @[Monitor.scala 529:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first_1) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter_1 <= c_first_beats1_decode;
+        end else begin
+          c_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        c_first_counter_1 <= c_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_c_first_T | _d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    if (reset) begin // @[Monitor.scala 823:27]
+      inflight_2 <= 4'h0; // @[Monitor.scala 823:27]
+    end else begin
+      inflight_2 <= _inflight_T_8; // @[Monitor.scala 842:14]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_3 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_3) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_3 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_3 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_3 <= d_first_counter1_3;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_141 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_141) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_249 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_249) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_263 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_263) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_268 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_268) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_141 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_141) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_249 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_249) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_263 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_263) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_510 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_510) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_268 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_268) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_636 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_636) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_771 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_771) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_902 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_902) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_918 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_918) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1030 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_1030) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1040 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_1040) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1030 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_1030) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1166 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_1166) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1282 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_1282) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1292 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_1292) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1304 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1304) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1324 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1324) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1339 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1339) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1343 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1343) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1339 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1339) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1343 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1343) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1376 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1376 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~_T_1376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1572 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~_T_1572) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Probe type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~address_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries unmanaged address (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_1 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~is_aligned_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1588 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~_T_1588) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries invalid cap param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries unmanaged address (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid report param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2359 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~_T_2359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries unmanaged address (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid report param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2489 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2489) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release type unsupported by manager (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2597 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid report param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2359 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2489 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2489) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries ReleaseData type unsupported by manager (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2597 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData smaller than a beat (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid report param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries unmanaged address (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2359 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~_T_2359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries unmanaged address (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries unmanaged address (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck address not aligned to size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid param (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2359 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~_T_2359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck is corrupt (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2908 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2908) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2912 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2912) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2916 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2916) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2920 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2920) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2924 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2924) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2932 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2932) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2936 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2936) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2940 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2940) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2944 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2944) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2948 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2948) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2952 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2952) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2964 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2964) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel param changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2976 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2976) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel addresss changed with multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2984 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2984) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel opcode changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2988 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2988) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel param changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2992 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2992) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel size changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2996 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2996) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel source changed within multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3000 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_3000) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel address changed with multibeat operation (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3013 & (_T_3009 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3009 & ~reset & ~_T_3013) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3032 & (_T_3020 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & _T_2 & ~_T_3032) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3038 & (_T_3020 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & same_cycle_resp & _T_2 & ~_T_3038) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3042 & (_T_3020 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & same_cycle_resp & _T_2 & ~_T_3042) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3050 & (_T_3020 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & ~same_cycle_resp & _T_2 & ~_T_3050) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3054 & (_T_3020 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & ~same_cycle_resp & _T_2 & ~_T_3054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3066 & (_T_3064 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3064 & _T_2 & ~_T_3066) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3073 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_3073) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3082 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_3082) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3102 & (_T_3099 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3099 & ~reset & ~_T_3102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel re-used a source ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3118 & (_T_3108 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & _T_2 & ~_T_3118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3122 & (_T_3108 & same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & same_cycle_resp_1 & _T_2 & ~_T_3122) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3126 & (_T_3108 & ~same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & ~same_cycle_resp_1 & _T_2 & ~_T_3126) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3137 & (_T_3135 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3135 & _T_2 & ~_T_3137) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3142 & (_T_3141 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3141 & _T_2 & ~_T_3142) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' and 'D' concurrent, despite minlatency 1 (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3151 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_3151) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3167 & (_T_3164 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3164 & _T_2 & ~_T_3167) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel re-used a sink ID (connected at SystemBus.scala:41:55)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3175[0] & (io_in_e_valid & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_e_valid & ~reset & ~_T_3175[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'E' channel acknowledged for nothing inflight (connected at SystemBus.scala:41:55)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[1:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  b_first_counter = _RAND_13[9:0];
+  _RAND_14 = {1{`RANDOM}};
+  param_2 = _RAND_14[1:0];
+  _RAND_15 = {1{`RANDOM}};
+  address_1 = _RAND_15[30:0];
+  _RAND_16 = {1{`RANDOM}};
+  c_first_counter = _RAND_16[9:0];
+  _RAND_17 = {1{`RANDOM}};
+  opcode_3 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  param_3 = _RAND_18[2:0];
+  _RAND_19 = {1{`RANDOM}};
+  size_3 = _RAND_19[3:0];
+  _RAND_20 = {1{`RANDOM}};
+  source_3 = _RAND_20[1:0];
+  _RAND_21 = {1{`RANDOM}};
+  address_2 = _RAND_21[30:0];
+  _RAND_22 = {1{`RANDOM}};
+  inflight = _RAND_22[2:0];
+  _RAND_23 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_23[11:0];
+  _RAND_24 = {1{`RANDOM}};
+  inflight_sizes = _RAND_24[23:0];
+  _RAND_25 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_25[9:0];
+  _RAND_26 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_26[9:0];
+  _RAND_27 = {1{`RANDOM}};
+  watchdog = _RAND_27[31:0];
+  _RAND_28 = {1{`RANDOM}};
+  inflight_1 = _RAND_28[2:0];
+  _RAND_29 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_29[23:0];
+  _RAND_30 = {1{`RANDOM}};
+  c_first_counter_1 = _RAND_30[9:0];
+  _RAND_31 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_31[9:0];
+  _RAND_32 = {1{`RANDOM}};
+  watchdog_1 = _RAND_32[31:0];
+  _RAND_33 = {1{`RANDOM}};
+  inflight_2 = _RAND_33[3:0];
+  _RAND_34 = {1{`RANDOM}};
+  d_first_counter_3 = _RAND_34[9:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLXbar(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_b_ready,
+  output        auto_in_b_valid,
+  output [1:0]  auto_in_b_bits_param,
+  output [30:0] auto_in_b_bits_address,
+  output        auto_in_c_ready,
+  input         auto_in_c_valid,
+  input  [2:0]  auto_in_c_bits_opcode,
+  input  [2:0]  auto_in_c_bits_param,
+  input  [3:0]  auto_in_c_bits_size,
+  input  [1:0]  auto_in_c_bits_source,
+  input  [30:0] auto_in_c_bits_address,
+  input  [31:0] auto_in_c_bits_data,
+  input         auto_in_c_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [1:0]  auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_in_e_valid,
+  input  [1:0]  auto_in_e_bits_sink,
+  input         auto_out_1_a_ready,
+  output        auto_out_1_a_valid,
+  output [2:0]  auto_out_1_a_bits_opcode,
+  output [2:0]  auto_out_1_a_bits_param,
+  output [2:0]  auto_out_1_a_bits_size,
+  output [1:0]  auto_out_1_a_bits_source,
+  output [30:0] auto_out_1_a_bits_address,
+  output [3:0]  auto_out_1_a_bits_mask,
+  output [31:0] auto_out_1_a_bits_data,
+  output        auto_out_1_a_bits_corrupt,
+  output        auto_out_1_b_ready,
+  input         auto_out_1_b_valid,
+  input  [1:0]  auto_out_1_b_bits_param,
+  input  [30:0] auto_out_1_b_bits_address,
+  input         auto_out_1_c_ready,
+  output        auto_out_1_c_valid,
+  output [2:0]  auto_out_1_c_bits_opcode,
+  output [2:0]  auto_out_1_c_bits_param,
+  output [2:0]  auto_out_1_c_bits_size,
+  output [1:0]  auto_out_1_c_bits_source,
+  output [30:0] auto_out_1_c_bits_address,
+  output [31:0] auto_out_1_c_bits_data,
+  output        auto_out_1_c_bits_corrupt,
+  output        auto_out_1_d_ready,
+  input         auto_out_1_d_valid,
+  input  [2:0]  auto_out_1_d_bits_opcode,
+  input  [1:0]  auto_out_1_d_bits_param,
+  input  [2:0]  auto_out_1_d_bits_size,
+  input  [1:0]  auto_out_1_d_bits_source,
+  input  [1:0]  auto_out_1_d_bits_sink,
+  input  [31:0] auto_out_1_d_bits_data,
+  output        auto_out_1_e_valid,
+  output [1:0]  auto_out_1_e_bits_sink,
+  input         auto_out_0_a_ready,
+  output        auto_out_0_a_valid,
+  output [2:0]  auto_out_0_a_bits_opcode,
+  output [2:0]  auto_out_0_a_bits_param,
+  output [3:0]  auto_out_0_a_bits_size,
+  output [1:0]  auto_out_0_a_bits_source,
+  output [29:0] auto_out_0_a_bits_address,
+  output [3:0]  auto_out_0_a_bits_mask,
+  output [31:0] auto_out_0_a_bits_data,
+  output        auto_out_0_a_bits_corrupt,
+  output        auto_out_0_d_ready,
+  input         auto_out_0_d_valid,
+  input  [2:0]  auto_out_0_d_bits_opcode,
+  input  [1:0]  auto_out_0_d_bits_param,
+  input  [3:0]  auto_out_0_d_bits_size,
+  input  [1:0]  auto_out_0_d_bits_source,
+  input         auto_out_0_d_bits_sink,
+  input         auto_out_0_d_bits_denied,
+  input  [31:0] auto_out_0_d_bits_data,
+  input         auto_out_0_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_b_bits_param; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_b_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_c_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_c_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_c_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_e_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_e_bits_sink; // @[Nodes.scala 24:25]
+  reg [9:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 10'h0; // @[Arbiter.scala 88:28]
+  wire [1:0] readys_valid = {auto_out_1_d_valid,auto_out_0_d_valid}; // @[Cat.scala 31:58]
+  reg [1:0] readys_mask; // @[Arbiter.scala 23:23]
+  wire [1:0] _readys_filter_T = ~readys_mask; // @[Arbiter.scala 24:30]
+  wire [1:0] _readys_filter_T_1 = readys_valid & _readys_filter_T; // @[Arbiter.scala 24:28]
+  wire [3:0] readys_filter = {_readys_filter_T_1,auto_out_1_d_valid,auto_out_0_d_valid}; // @[Cat.scala 31:58]
+  wire [3:0] _GEN_1 = {{1'd0}, readys_filter[3:1]}; // @[package.scala 253:43]
+  wire [3:0] _readys_unready_T_1 = readys_filter | _GEN_1; // @[package.scala 253:43]
+  wire [3:0] _readys_unready_T_4 = {readys_mask, 2'h0}; // @[Arbiter.scala 25:66]
+  wire [3:0] _GEN_2 = {{1'd0}, _readys_unready_T_1[3:1]}; // @[Arbiter.scala 25:58]
+  wire [3:0] readys_unready = _GEN_2 | _readys_unready_T_4; // @[Arbiter.scala 25:58]
+  wire [1:0] _readys_readys_T_2 = readys_unready[3:2] & readys_unready[1:0]; // @[Arbiter.scala 26:39]
+  wire [1:0] readys_readys = ~_readys_readys_T_2; // @[Arbiter.scala 26:18]
+  wire  readys_0 = readys_readys[0]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_0 = readys_0 & auto_out_0_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_0; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_0 = idle ? earlyWinner_0 : state_0; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_37 = muxStateEarly_0 ? auto_out_0_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire  readys_1 = readys_readys[1]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_1 = readys_1 & auto_out_1_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_1; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1 = idle ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_38 = muxStateEarly_1 ? auto_out_1_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [31:0] _requestAIO_T_1 = {1'b0,$signed(auto_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire [31:0] _requestAIO_T_3 = $signed(_requestAIO_T_1) & 32'sh40000000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_0 = $signed(_requestAIO_T_3) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _requestAIO_T_5 = auto_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _requestAIO_T_6 = {1'b0,$signed(_requestAIO_T_5)}; // @[Parameters.scala 137:49]
+  wire [31:0] _requestAIO_T_8 = $signed(_requestAIO_T_6) & 32'sh40000000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_1 = $signed(_requestAIO_T_8) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [26:0] _beatsDO_decode_T_1 = 27'hfff << auto_out_0_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _beatsDO_decode_T_3 = ~_beatsDO_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] beatsDO_decode = _beatsDO_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata = auto_out_0_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [9:0] beatsDO_0 = beatsDO_opdata ? beatsDO_decode : 10'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_1_d_bits_size = {{1'd0}, auto_out_1_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_5 = 21'h3f << out_1_1_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_7 = ~_beatsDO_decode_T_5[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_1 = _beatsDO_decode_T_7[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_1 = auto_out_1_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_1 = beatsDO_opdata_1 ? beatsDO_decode_1 : 4'h0; // @[Edges.scala 220:14]
+  wire  latch = idle & auto_in_d_ready; // @[Arbiter.scala 89:24]
+  wire  _readys_T_3 = ~reset; // @[Arbiter.scala 22:12]
+  wire [1:0] _readys_mask_T = readys_readys & readys_valid; // @[Arbiter.scala 28:29]
+  wire [2:0] _readys_mask_T_1 = {_readys_mask_T, 1'h0}; // @[package.scala 244:48]
+  wire [1:0] _readys_mask_T_3 = _readys_mask_T | _readys_mask_T_1[1:0]; // @[package.scala 244:43]
+  wire  _prefixOR_T = earlyWinner_0 | earlyWinner_1; // @[Arbiter.scala 104:53]
+  wire  _T_11 = auto_out_0_d_valid | auto_out_1_d_valid; // @[Arbiter.scala 107:36]
+  wire  _T_12 = ~(auto_out_0_d_valid | auto_out_1_d_valid); // @[Arbiter.scala 107:15]
+  wire [9:0] maskedBeats_0 = earlyWinner_0 ? beatsDO_0 : 10'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_1 = earlyWinner_1 ? beatsDO_1 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [9:0] _GEN_3 = {{6'd0}, maskedBeats_1}; // @[Arbiter.scala 112:44]
+  wire [9:0] initBeats = maskedBeats_0 | _GEN_3; // @[Arbiter.scala 112:44]
+  wire  _sink_ACancel_earlyValid_T_3 = state_0 & auto_out_0_d_valid | state_1 & auto_out_1_d_valid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_5_earlyValid = idle ? _T_11 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_in_d_ready & sink_ACancel_5_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [9:0] _GEN_4 = {{9'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [9:0] _beatsLeft_T_4 = beatsLeft - _GEN_4; // @[Arbiter.scala 113:52]
+  wire  allowed_0 = idle ? readys_0 : state_0; // @[Arbiter.scala 121:24]
+  wire  allowed_1 = idle ? readys_1 : state_1; // @[Arbiter.scala 121:24]
+  wire [31:0] _T_28 = muxStateEarly_0 ? auto_out_0_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_29 = muxStateEarly_1 ? auto_out_1_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [1:0] out_1_0_d_bits_sink = {{1'd0}, auto_out_0_d_bits_sink}; // @[Xbar.scala 288:19 323:28]
+  wire [1:0] _T_34 = muxStateEarly_0 ? out_1_0_d_bits_sink : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_35 = muxStateEarly_1 ? auto_out_1_d_bits_sink : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_40 = muxStateEarly_0 ? auto_out_0_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_41 = muxStateEarly_1 ? out_1_1_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_43 = muxStateEarly_0 ? auto_out_0_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_44 = muxStateEarly_1 ? auto_out_1_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_46 = muxStateEarly_0 ? auto_out_0_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_47 = muxStateEarly_1 ? auto_out_1_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  TLMonitor monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_b_ready(monitor_io_in_b_ready),
+    .io_in_b_valid(monitor_io_in_b_valid),
+    .io_in_b_bits_param(monitor_io_in_b_bits_param),
+    .io_in_b_bits_address(monitor_io_in_b_bits_address),
+    .io_in_c_ready(monitor_io_in_c_ready),
+    .io_in_c_valid(monitor_io_in_c_valid),
+    .io_in_c_bits_opcode(monitor_io_in_c_bits_opcode),
+    .io_in_c_bits_param(monitor_io_in_c_bits_param),
+    .io_in_c_bits_size(monitor_io_in_c_bits_size),
+    .io_in_c_bits_source(monitor_io_in_c_bits_source),
+    .io_in_c_bits_address(monitor_io_in_c_bits_address),
+    .io_in_c_bits_corrupt(monitor_io_in_c_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt),
+    .io_in_e_valid(monitor_io_in_e_valid),
+    .io_in_e_bits_sink(monitor_io_in_e_bits_sink)
+  );
+  assign auto_in_a_ready = requestAIO_0_0 & auto_out_0_a_ready | requestAIO_0_1 & auto_out_1_a_ready; // @[Mux.scala 27:73]
+  assign auto_in_b_valid = auto_out_1_b_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_in_b_bits_param = auto_out_1_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_address = auto_out_1_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_c_ready = auto_out_1_c_ready; // @[Mux.scala 27:73]
+  assign auto_in_d_valid = idle ? _T_11 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_in_d_bits_opcode = _T_46 | _T_47; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_param = _T_43 | _T_44; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_size = _T_40 | _T_41; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_source = _T_37 | _T_38; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_sink = _T_34 | _T_35; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_denied = muxStateEarly_0 & auto_out_0_d_bits_denied; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_data = _T_28 | _T_29; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_corrupt = muxStateEarly_0 & auto_out_0_d_bits_corrupt; // @[Mux.scala 27:73]
+  assign auto_out_1_a_valid = auto_in_a_valid & requestAIO_0_1; // @[Xbar.scala 428:50]
+  assign auto_out_1_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_size = auto_in_a_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_1_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_1_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_c_valid = auto_in_c_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_1_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_c_bits_size = auto_in_c_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_1_c_bits_source = auto_in_c_bits_source; // @[Xbar.scala 259:55]
+  assign auto_out_1_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_c_bits_data = auto_in_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_c_bits_corrupt = auto_in_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_d_ready = auto_in_d_ready & allowed_1; // @[Arbiter.scala 123:31]
+  assign auto_out_1_e_valid = auto_in_e_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_1_e_bits_sink = auto_in_e_bits_sink; // @[Xbar.scala 228:69]
+  assign auto_out_0_a_valid = auto_in_a_valid & requestAIO_0_0; // @[Xbar.scala 428:50]
+  assign auto_out_0_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_0_a_bits_address = auto_in_a_bits_address[29:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_0_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_d_ready = auto_in_d_ready & allowed_0; // @[Arbiter.scala 123:31]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = requestAIO_0_0 & auto_out_0_a_ready | requestAIO_0_1 & auto_out_1_a_ready; // @[Mux.scala 27:73]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_valid = auto_out_1_b_valid; // @[ReadyValidCancel.scala 21:38]
+  assign monitor_io_in_b_bits_param = auto_out_1_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_b_bits_address = auto_out_1_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_c_ready = auto_out_1_c_ready; // @[Mux.scala 27:73]
+  assign monitor_io_in_c_valid = auto_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_source = auto_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_corrupt = auto_in_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = idle ? _T_11 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign monitor_io_in_d_bits_opcode = _T_46 | _T_47; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_param = _T_43 | _T_44; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_size = _T_40 | _T_41; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_source = _T_37 | _T_38; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_sink = _T_34 | _T_35; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_denied = muxStateEarly_0 & auto_out_0_d_bits_denied; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_corrupt = muxStateEarly_0 & auto_out_0_d_bits_corrupt; // @[Mux.scala 27:73]
+  assign monitor_io_in_e_valid = auto_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_e_bits_sink = auto_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 10'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      beatsLeft <= initBeats;
+    end else begin
+      beatsLeft <= _beatsLeft_T_4;
+    end
+    if (reset) begin // @[Arbiter.scala 23:23]
+      readys_mask <= 2'h3; // @[Arbiter.scala 23:23]
+    end else if (latch & |readys_valid) begin // @[Arbiter.scala 27:32]
+      readys_mask <= _readys_mask_T_3; // @[Arbiter.scala 28:12]
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_0 <= earlyWinner_0;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_1 <= earlyWinner_1;
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~earlyWinner_0 | ~earlyWinner_1) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(~earlyWinner_0 | ~earlyWinner_1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(auto_out_0_d_valid | auto_out_1_d_valid) | _prefixOR_T) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(~(auto_out_0_d_valid | auto_out_1_d_valid) | _prefixOR_T)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_12 | _T_11) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(_T_12 | _T_11)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  beatsLeft = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  readys_mask = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  state_0 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  state_1 = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_1(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_b_ready,
+  input         io_in_b_valid,
+  input  [1:0]  io_in_b_bits_param,
+  input  [30:0] io_in_b_bits_address,
+  input         io_in_c_ready,
+  input         io_in_c_valid,
+  input  [2:0]  io_in_c_bits_opcode,
+  input  [2:0]  io_in_c_bits_param,
+  input  [3:0]  io_in_c_bits_size,
+  input  [1:0]  io_in_c_bits_source,
+  input  [30:0] io_in_c_bits_address,
+  input         io_in_c_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input  [1:0]  io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt,
+  input         io_in_e_valid,
+  input  [1:0]  io_in_e_bits_sink
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_86 = {{19'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_86; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [31:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [31:0] _T_48 = $signed(_T_7) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_50 = io_in_a_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_53 = $signed(_T_51) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_55 = io_in_a_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_58 = $signed(_T_56) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_60 = io_in_a_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_63 = $signed(_T_61) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_65 = io_in_a_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_68 = $signed(_T_66) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_70 = io_in_a_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_73 = $signed(_T_71) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_75 = io_in_a_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_78 = $signed(_T_76) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_80 = io_in_a_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_83 = $signed(_T_81) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_85 = io_in_a_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_86 = {1'b0,$signed(_T_85)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_88 = $signed(_T_86) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_89 = $signed(_T_88) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_90 = io_in_a_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_91 = {1'b0,$signed(_T_90)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_93 = $signed(_T_91) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_94 = $signed(_T_93) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_95 = io_in_a_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_96 = {1'b0,$signed(_T_95)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_98 = $signed(_T_96) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_99 = $signed(_T_98) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_100 = io_in_a_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_101 = {1'b0,$signed(_T_100)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_103 = $signed(_T_101) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_104 = $signed(_T_103) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_105 = io_in_a_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_106 = {1'b0,$signed(_T_105)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_108 = $signed(_T_106) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_109 = $signed(_T_108) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_110 = io_in_a_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_111 = {1'b0,$signed(_T_110)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_113 = $signed(_T_111) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_114 = $signed(_T_113) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_130 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire [30:0] _T_133 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_134 = {1'b0,$signed(_T_133)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_136 = $signed(_T_134) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_137 = $signed(_T_136) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_138 = _T_130 & _T_137; // @[Parameters.scala 670:56]
+  wire  _T_141 = _T_42 & _T_138; // @[Monitor.scala 82:72]
+  wire  _T_148 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_149 = _source_ok_T & _T_148; // @[Mux.scala 27:73]
+  wire  _T_246 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109
+     | _T_114 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_247 = _T_35 & _T_246; // @[Parameters.scala 670:56]
+  wire  _T_249 = _T_149 & _T_247; // @[Monitor.scala 83:78]
+  wire  _T_263 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_267 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_268 = _T_267 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_272 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_510 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_523 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_546 = _T_35 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_633 = _T_49 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 |
+    _T_114 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_634 = _T_130 & _T_633; // @[Parameters.scala 670:56]
+  wire  _T_636 = _T_546 | _T_634; // @[Parameters.scala 672:30]
+  wire  _T_646 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_650 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_658 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_752 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_753 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_754 = _T_130 & _T_753; // @[Parameters.scala 670:56]
+  wire  _T_769 = _T_546 | _T_754; // @[Parameters.scala 672:30]
+  wire  _T_771 = _T_42 & _T_769; // @[Monitor.scala 115:71]
+  wire  _T_789 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_879 = _T_130 & _T_752; // @[Parameters.scala 670:56]
+  wire  _T_900 = _T_546 | _T_879; // @[Parameters.scala 672:30]
+  wire  _T_902 = _T_42 & _T_900; // @[Monitor.scala 123:74]
+  wire [3:0] _T_916 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_917 = io_in_a_bits_mask & _T_916; // @[Monitor.scala 127:31]
+  wire  _T_918 = _T_917 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_922 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_934 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_1007 = _T_49 | _T_54 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_1008 = _T_934 & _T_1007; // @[Parameters.scala 670:56]
+  wire  _T_1030 = _T_42 & _T_1008; // @[Monitor.scala 131:74]
+  wire  _T_1040 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_1048 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1166 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1174 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1282 = _T_42 & _T_546; // @[Monitor.scala 147:68]
+  wire  _T_1292 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1304 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_1308 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1312 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1316 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1320 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1324 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1328 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1339 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1343 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1356 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1376 = _T_1324 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1385 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1402 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1420 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire [31:0] _T_1444 = {1'b0,$signed(io_in_b_bits_address)}; // @[Parameters.scala 137:49]
+  wire [30:0] _address_ok_T = io_in_b_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_1 = {1'b0,$signed(_address_ok_T)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_3 = $signed(_address_ok_T_1) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_4 = $signed(_address_ok_T_3) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_5 = io_in_b_bits_address ^ 31'h10013000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_6 = {1'b0,$signed(_address_ok_T_5)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_8 = $signed(_address_ok_T_6) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_9 = $signed(_address_ok_T_8) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_10 = io_in_b_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_11 = {1'b0,$signed(_address_ok_T_10)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_13 = $signed(_address_ok_T_11) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_14 = $signed(_address_ok_T_13) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_15 = io_in_b_bits_address ^ 31'h10033000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_16 = {1'b0,$signed(_address_ok_T_15)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_18 = $signed(_address_ok_T_16) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_19 = $signed(_address_ok_T_18) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_20 = io_in_b_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_21 = {1'b0,$signed(_address_ok_T_20)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_23 = $signed(_address_ok_T_21) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_24 = $signed(_address_ok_T_23) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_25 = io_in_b_bits_address ^ 31'h10053000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_26 = {1'b0,$signed(_address_ok_T_25)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_28 = $signed(_address_ok_T_26) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_29 = $signed(_address_ok_T_28) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_30 = io_in_b_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_31 = {1'b0,$signed(_address_ok_T_30)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_33 = $signed(_address_ok_T_31) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_34 = $signed(_address_ok_T_33) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_35 = io_in_b_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_36 = {1'b0,$signed(_address_ok_T_35)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_38 = $signed(_address_ok_T_36) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_39 = $signed(_address_ok_T_38) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_40 = io_in_b_bits_address ^ 31'h10034000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_41 = {1'b0,$signed(_address_ok_T_40)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_43 = $signed(_address_ok_T_41) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_44 = $signed(_address_ok_T_43) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_45 = io_in_b_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_46 = {1'b0,$signed(_address_ok_T_45)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_48 = $signed(_address_ok_T_46) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_49 = $signed(_address_ok_T_48) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_50 = io_in_b_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_51 = {1'b0,$signed(_address_ok_T_50)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_53 = $signed(_address_ok_T_51) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_54 = $signed(_address_ok_T_53) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_55 = io_in_b_bits_address ^ 31'h10015000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_56 = {1'b0,$signed(_address_ok_T_55)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_58 = $signed(_address_ok_T_56) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_59 = $signed(_address_ok_T_58) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_60 = io_in_b_bits_address ^ 31'h10025000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_61 = {1'b0,$signed(_address_ok_T_60)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_63 = $signed(_address_ok_T_61) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_64 = $signed(_address_ok_T_63) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_65 = io_in_b_bits_address ^ 31'h10035000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_66 = {1'b0,$signed(_address_ok_T_65)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_68 = $signed(_address_ok_T_66) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_69 = $signed(_address_ok_T_68) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_70 = io_in_b_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_71 = {1'b0,$signed(_address_ok_T_70)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_73 = $signed(_address_ok_T_71) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_74 = $signed(_address_ok_T_73) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_75 = io_in_b_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_76 = {1'b0,$signed(_address_ok_T_75)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_78 = $signed(_address_ok_T_76) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_79 = $signed(_address_ok_T_78) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_80 = io_in_b_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_81 = {1'b0,$signed(_address_ok_T_80)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_83 = $signed(_address_ok_T_81) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_84 = $signed(_address_ok_T_83) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_85 = io_in_b_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_86 = {1'b0,$signed(_address_ok_T_85)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_88 = $signed(_address_ok_T_86) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_89 = $signed(_address_ok_T_88) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _address_ok_T_93 = $signed(_T_1444) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_94 = $signed(_address_ok_T_93) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_95 = io_in_b_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_96 = {1'b0,$signed(_address_ok_T_95)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_98 = $signed(_address_ok_T_96) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_99 = $signed(_address_ok_T_98) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_100 = io_in_b_bits_address ^ 31'h10000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_101 = {1'b0,$signed(_address_ok_T_100)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_103 = $signed(_address_ok_T_101) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_104 = $signed(_address_ok_T_103) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_105 = io_in_b_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_106 = {1'b0,$signed(_address_ok_T_105)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_108 = $signed(_address_ok_T_106) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_109 = $signed(_address_ok_T_108) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_110 = io_in_b_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_111 = {1'b0,$signed(_address_ok_T_110)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_113 = $signed(_address_ok_T_111) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_114 = $signed(_address_ok_T_113) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  address_ok = _address_ok_T_4 | _address_ok_T_9 | _address_ok_T_14 | _address_ok_T_19 | _address_ok_T_24 |
+    _address_ok_T_29 | _address_ok_T_34 | _address_ok_T_39 | _address_ok_T_44 | _address_ok_T_49 | _address_ok_T_54 |
+    _address_ok_T_59 | _address_ok_T_64 | _address_ok_T_69 | _address_ok_T_74 | _address_ok_T_79 | _address_ok_T_84 |
+    _address_ok_T_89 | _address_ok_T_94 | _address_ok_T_99 | _address_ok_T_104 | _address_ok_T_109 | _address_ok_T_114; // @[Parameters.scala 622:64]
+  wire [30:0] _is_aligned_T_1 = io_in_b_bits_address & 31'h3f; // @[Edges.scala 20:16]
+  wire  is_aligned_1 = _is_aligned_T_1 == 31'h0; // @[Edges.scala 20:24]
+  wire [31:0] _T_1487 = $signed(_T_1444) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_1488 = $signed(_T_1487) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1517 = $signed(_address_ok_T_51) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_1518 = $signed(_T_1517) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1522 = $signed(_address_ok_T_31) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_1523 = $signed(_T_1522) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1532 = $signed(_address_ok_T_11) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_1533 = $signed(_T_1532) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1537 = $signed(_address_ok_T_46) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_1538 = $signed(_T_1537) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1547 = $signed(_address_ok_T_21) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_1548 = $signed(_T_1547) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_1572 = _T_1488 | _address_ok_T_4 | _address_ok_T_109 | _address_ok_T_89 | _address_ok_T_99 | _address_ok_T_84
+     | _T_1518 | _T_1523 | _address_ok_T_74 | _T_1533 | _T_1538 | _address_ok_T_79 | _T_1548 | _address_ok_T_39 |
+    _address_ok_T_114; // @[Parameters.scala 671:42]
+  wire  _T_1588 = io_in_b_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _source_ok_T_8 = io_in_c_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_c_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_10 = io_in_c_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_2 = _source_ok_T_8 | _source_ok_T_9 | _source_ok_T_10; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_7 = 27'hfff << io_in_c_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask_2 = ~_is_aligned_mask_T_7[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_87 = {{19'd0}, is_aligned_mask_2}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T_2 = io_in_c_bits_address & _GEN_87; // @[Edges.scala 20:16]
+  wire  is_aligned_2 = _is_aligned_T_2 == 31'h0; // @[Edges.scala 20:24]
+  wire [30:0] _address_ok_T_136 = io_in_c_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_137 = {1'b0,$signed(_address_ok_T_136)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_139 = $signed(_address_ok_T_137) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_140 = $signed(_address_ok_T_139) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_141 = io_in_c_bits_address ^ 31'h10013000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_142 = {1'b0,$signed(_address_ok_T_141)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_144 = $signed(_address_ok_T_142) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_145 = $signed(_address_ok_T_144) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_146 = io_in_c_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_147 = {1'b0,$signed(_address_ok_T_146)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_149 = $signed(_address_ok_T_147) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_150 = $signed(_address_ok_T_149) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_151 = io_in_c_bits_address ^ 31'h10033000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_152 = {1'b0,$signed(_address_ok_T_151)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_154 = $signed(_address_ok_T_152) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_155 = $signed(_address_ok_T_154) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_156 = io_in_c_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_157 = {1'b0,$signed(_address_ok_T_156)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_159 = $signed(_address_ok_T_157) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_160 = $signed(_address_ok_T_159) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_161 = io_in_c_bits_address ^ 31'h10053000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_162 = {1'b0,$signed(_address_ok_T_161)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_164 = $signed(_address_ok_T_162) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_165 = $signed(_address_ok_T_164) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_166 = io_in_c_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_167 = {1'b0,$signed(_address_ok_T_166)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_169 = $signed(_address_ok_T_167) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_170 = $signed(_address_ok_T_169) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_171 = io_in_c_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_172 = {1'b0,$signed(_address_ok_T_171)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_174 = $signed(_address_ok_T_172) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_175 = $signed(_address_ok_T_174) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_176 = io_in_c_bits_address ^ 31'h10034000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_177 = {1'b0,$signed(_address_ok_T_176)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_179 = $signed(_address_ok_T_177) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_180 = $signed(_address_ok_T_179) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_181 = io_in_c_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_182 = {1'b0,$signed(_address_ok_T_181)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_184 = $signed(_address_ok_T_182) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_185 = $signed(_address_ok_T_184) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_186 = io_in_c_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_187 = {1'b0,$signed(_address_ok_T_186)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_189 = $signed(_address_ok_T_187) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_190 = $signed(_address_ok_T_189) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_191 = io_in_c_bits_address ^ 31'h10015000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_192 = {1'b0,$signed(_address_ok_T_191)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_194 = $signed(_address_ok_T_192) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_195 = $signed(_address_ok_T_194) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_196 = io_in_c_bits_address ^ 31'h10025000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_197 = {1'b0,$signed(_address_ok_T_196)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_199 = $signed(_address_ok_T_197) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_200 = $signed(_address_ok_T_199) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_201 = io_in_c_bits_address ^ 31'h10035000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_202 = {1'b0,$signed(_address_ok_T_201)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_204 = $signed(_address_ok_T_202) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_205 = $signed(_address_ok_T_204) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_206 = io_in_c_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_207 = {1'b0,$signed(_address_ok_T_206)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_209 = $signed(_address_ok_T_207) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_210 = $signed(_address_ok_T_209) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_211 = io_in_c_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_212 = {1'b0,$signed(_address_ok_T_211)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_214 = $signed(_address_ok_T_212) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_215 = $signed(_address_ok_T_214) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_216 = io_in_c_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_217 = {1'b0,$signed(_address_ok_T_216)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_219 = $signed(_address_ok_T_217) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_220 = $signed(_address_ok_T_219) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_221 = io_in_c_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_222 = {1'b0,$signed(_address_ok_T_221)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_224 = $signed(_address_ok_T_222) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_225 = $signed(_address_ok_T_224) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _address_ok_T_227 = {1'b0,$signed(io_in_c_bits_address)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_229 = $signed(_address_ok_T_227) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_230 = $signed(_address_ok_T_229) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_231 = io_in_c_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_232 = {1'b0,$signed(_address_ok_T_231)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_234 = $signed(_address_ok_T_232) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_235 = $signed(_address_ok_T_234) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_236 = io_in_c_bits_address ^ 31'h10000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_237 = {1'b0,$signed(_address_ok_T_236)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_239 = $signed(_address_ok_T_237) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_240 = $signed(_address_ok_T_239) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_241 = io_in_c_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_242 = {1'b0,$signed(_address_ok_T_241)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_244 = $signed(_address_ok_T_242) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_245 = $signed(_address_ok_T_244) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_246 = io_in_c_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_247 = {1'b0,$signed(_address_ok_T_246)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_249 = $signed(_address_ok_T_247) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_250 = $signed(_address_ok_T_249) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  address_ok_1 = _address_ok_T_140 | _address_ok_T_145 | _address_ok_T_150 | _address_ok_T_155 | _address_ok_T_160
+     | _address_ok_T_165 | _address_ok_T_170 | _address_ok_T_175 | _address_ok_T_180 | _address_ok_T_185 |
+    _address_ok_T_190 | _address_ok_T_195 | _address_ok_T_200 | _address_ok_T_205 | _address_ok_T_210 |
+    _address_ok_T_215 | _address_ok_T_220 | _address_ok_T_225 | _address_ok_T_230 | _address_ok_T_235 |
+    _address_ok_T_240 | _address_ok_T_245 | _address_ok_T_250; // @[Parameters.scala 622:64]
+  wire  _T_2341 = io_in_c_bits_opcode == 3'h4; // @[Monitor.scala 242:25]
+  wire  _T_2348 = io_in_c_bits_size >= 4'h2; // @[Monitor.scala 245:30]
+  wire  _T_2355 = io_in_c_bits_param <= 3'h5; // @[Bundles.scala 120:29]
+  wire  _T_2359 = ~io_in_c_bits_corrupt; // @[Monitor.scala 248:18]
+  wire  _T_2363 = io_in_c_bits_opcode == 3'h5; // @[Monitor.scala 251:25]
+  wire  _T_2381 = io_in_c_bits_opcode == 3'h6; // @[Monitor.scala 259:25]
+  wire  _T_2383 = io_in_c_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_2390 = _T_2383 & source_ok_2; // @[Parameters.scala 1160:30]
+  wire [31:0] _T_2396 = $signed(_address_ok_T_227) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_2397 = $signed(_T_2396) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2426 = $signed(_address_ok_T_187) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_2427 = $signed(_T_2426) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2431 = $signed(_address_ok_T_167) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_2432 = $signed(_T_2431) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2441 = $signed(_address_ok_T_147) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_2442 = $signed(_T_2441) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2446 = $signed(_address_ok_T_182) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_2447 = $signed(_T_2446) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2456 = $signed(_address_ok_T_157) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_2457 = $signed(_T_2456) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_2478 = io_in_c_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_2486 = _T_2478 & _address_ok_T_250; // @[Parameters.scala 670:56]
+  wire  _T_2489 = _T_2390 & _T_2486; // @[Monitor.scala 260:78]
+  wire  _T_2496 = 4'h6 == io_in_c_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_2497 = _source_ok_T_8 & _T_2496; // @[Mux.scala 27:73]
+  wire  _T_2594 = _T_2397 | _address_ok_T_140 | _address_ok_T_245 | _address_ok_T_225 | _address_ok_T_235 |
+    _address_ok_T_220 | _T_2427 | _T_2432 | _address_ok_T_210 | _T_2442 | _T_2447 | _address_ok_T_215 | _T_2457 |
+    _address_ok_T_175 | _address_ok_T_250; // @[Parameters.scala 671:42]
+  wire  _T_2595 = _T_2383 & _T_2594; // @[Parameters.scala 670:56]
+  wire  _T_2597 = _T_2497 & _T_2595; // @[Monitor.scala 261:78]
+  wire  _T_2619 = io_in_c_bits_opcode == 3'h7; // @[Monitor.scala 269:25]
+  wire  _T_2853 = io_in_c_bits_opcode == 3'h0; // @[Monitor.scala 278:25]
+  wire  _T_2863 = io_in_c_bits_param == 3'h0; // @[Monitor.scala 282:31]
+  wire  _T_2871 = io_in_c_bits_opcode == 3'h1; // @[Monitor.scala 286:25]
+  wire  _T_2885 = io_in_c_bits_opcode == 3'h2; // @[Monitor.scala 293:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_2907 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_2908 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_2912 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_2916 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_2920 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_2924 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg [1:0] sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_2931 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_2932 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_2936 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_2940 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_2944 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_2948 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_2952 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  wire  b_first_done = io_in_b_ready & io_in_b_valid; // @[Decoupled.scala 50:35]
+  reg [9:0] b_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] b_first_counter1 = b_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  b_first = b_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [1:0] param_2; // @[Monitor.scala 408:22]
+  reg [30:0] address_1; // @[Monitor.scala 411:22]
+  wire  _T_2959 = io_in_b_valid & ~b_first; // @[Monitor.scala 412:19]
+  wire  _T_2964 = io_in_b_bits_param == param_2; // @[Monitor.scala 414:32]
+  wire  _T_2976 = io_in_b_bits_address == address_1; // @[Monitor.scala 417:32]
+  wire  _c_first_T = io_in_c_ready & io_in_c_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] c_first_beats1_decode = is_aligned_mask_2[11:2]; // @[Edges.scala 219:59]
+  wire  c_first_beats1_opdata = io_in_c_bits_opcode[0]; // @[Edges.scala 101:36]
+  reg [9:0] c_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] c_first_counter1 = c_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  c_first = c_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_3; // @[Monitor.scala 512:22]
+  reg [2:0] param_3; // @[Monitor.scala 513:22]
+  reg [3:0] size_3; // @[Monitor.scala 514:22]
+  reg [1:0] source_3; // @[Monitor.scala 515:22]
+  reg [30:0] address_2; // @[Monitor.scala 516:22]
+  wire  _T_2983 = io_in_c_valid & ~c_first; // @[Monitor.scala 517:19]
+  wire  _T_2984 = io_in_c_bits_opcode == opcode_3; // @[Monitor.scala 518:32]
+  wire  _T_2988 = io_in_c_bits_param == param_3; // @[Monitor.scala 519:32]
+  wire  _T_2992 = io_in_c_bits_size == size_3; // @[Monitor.scala 520:32]
+  wire  _T_2996 = io_in_c_bits_source == source_3; // @[Monitor.scala 521:32]
+  wire  _T_3000 = io_in_c_bits_address == address_2; // @[Monitor.scala 522:32]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_88 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_88}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_89 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_89 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_91 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_91; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_3006 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_27 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_3009 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_93 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_93}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_3011 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_3013 = ~_T_3011[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_28 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_31 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_32 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_3017 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_3019 = ~_T_1308; // @[Monitor.scala 671:74]
+  wire  _T_3020 = io_in_d_valid & d_first_1 & ~_T_1308; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_33 = io_in_d_valid & d_first_1 & ~_T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_34 = _d_first_T & d_first_1 & _T_3019 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_35 = _d_first_T & d_first_1 & _T_3019 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_36 = _d_first_T & d_first_1 & _T_3019 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_3006 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_3030 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_3032 = _T_3030[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_39 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_40 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_39; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_41 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_40; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_42 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_41; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_43 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_42; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_44 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_43; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_51 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_42; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_52 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_51; // @[Monitor.scala 686:{39,39}]
+  wire  _T_3037 = io_in_d_bits_opcode == _GEN_52; // @[Monitor.scala 686:39]
+  wire  _T_3038 = io_in_d_bits_opcode == _GEN_44 | _T_3037; // @[Monitor.scala 685:77]
+  wire  _T_3042 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_55 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_56 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_55; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_57 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_56; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_58 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_57; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_59 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_58; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_60 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_59; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_67 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_58; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_68 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_67; // @[Monitor.scala 690:{38,38}]
+  wire  _T_3049 = io_in_d_bits_opcode == _GEN_68; // @[Monitor.scala 690:38]
+  wire  _T_3050 = io_in_d_bits_opcode == _GEN_60 | _T_3049; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_95 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_3054 = _GEN_95 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_3064 = _T_3017 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_3019; // @[Monitor.scala 694:116]
+  wire  _T_3065 = ~io_in_d_ready; // @[Monitor.scala 695:15]
+  wire  _T_3066 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_27[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_33[2:0];
+  wire  _T_3073 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_28[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_34[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_31[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_35[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_32[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_36[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_3082 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] c_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] c_first_counter1_1 = c_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  c_first_1 = c_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_91; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_3092 = io_in_c_bits_opcode[2] & io_in_c_bits_opcode[1]; // @[Edges.scala 67:40]
+  wire  _T_3093 = io_in_c_valid & c_first_1 & _T_3092; // @[Monitor.scala 756:37]
+  wire [3:0] _c_set_wo_ready_T = 4'h1 << io_in_c_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_72 = io_in_c_valid & c_first_1 & _T_3092 ? _c_set_wo_ready_T : 4'h0; // @[Monitor.scala 756:71 757:22]
+  wire  _T_3099 = _c_first_T & c_first_1 & _T_3092; // @[Monitor.scala 760:38]
+  wire [4:0] _c_sizes_set_interm_T = {io_in_c_bits_size, 1'h0}; // @[Monitor.scala 763:51]
+  wire [4:0] _c_sizes_set_interm_T_1 = _c_sizes_set_interm_T | 5'h1; // @[Monitor.scala 763:59]
+  wire [4:0] _c_sizes_set_T = {io_in_c_bits_source, 3'h0}; // @[Monitor.scala 765:77]
+  wire [4:0] c_sizes_set_interm = _c_first_T & c_first_1 & _T_3092 ? _c_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 760:72 763:28]
+  wire [35:0] _GEN_5 = {{31'd0}, c_sizes_set_interm}; // @[Monitor.scala 765:52]
+  wire [35:0] _c_sizes_set_T_1 = _GEN_5 << _c_sizes_set_T; // @[Monitor.scala 765:52]
+  wire [2:0] _T_3100 = inflight_1 >> io_in_c_bits_source; // @[Monitor.scala 766:26]
+  wire  _T_3102 = ~_T_3100[0]; // @[Monitor.scala 766:17]
+  wire [3:0] _GEN_73 = _c_first_T & c_first_1 & _T_3092 ? _c_set_wo_ready_T : 4'h0; // @[Monitor.scala 760:72 761:28]
+  wire [35:0] _GEN_77 = _c_first_T & c_first_1 & _T_3092 ? _c_sizes_set_T_1 : 36'h0; // @[Monitor.scala 760:72 765:28]
+  wire  _T_3106 = io_in_d_valid & d_first_2; // @[Monitor.scala 779:26]
+  wire  _T_3108 = io_in_d_valid & d_first_2 & _T_1308; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_78 = io_in_d_valid & d_first_2 & _T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 779:89 780:22]
+  wire [3:0] _GEN_79 = _d_first_T & d_first_2 & _T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_81 = _d_first_T & d_first_2 & _T_1308 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire  _same_cycle_resp_T_8 = io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:113]
+  wire  same_cycle_resp_1 = _T_3093 & io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:88]
+  wire [2:0] _T_3116 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire  _T_3118 = _T_3116[0] | same_cycle_resp_1; // @[Monitor.scala 791:49]
+  wire  _T_3122 = io_in_d_bits_size == io_in_c_bits_size; // @[Monitor.scala 793:36]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_3126 = _GEN_95 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire  _T_3135 = _T_3106 & c_first_1 & io_in_c_valid & _same_cycle_resp_T_8 & _T_1308; // @[Monitor.scala 799:116]
+  wire  _T_3137 = _T_3065 | io_in_c_ready; // @[Monitor.scala 800:32]
+  wire [2:0] c_set_wo_ready = _GEN_72[2:0];
+  wire  _T_3141 = |c_set_wo_ready; // @[Monitor.scala 804:28]
+  wire [2:0] d_clr_wo_ready_1 = _GEN_78[2:0];
+  wire  _T_3142 = c_set_wo_ready != d_clr_wo_ready_1; // @[Monitor.scala 805:31]
+  wire [2:0] c_set = _GEN_73[2:0];
+  wire [2:0] _inflight_T_3 = inflight_1 | c_set; // @[Monitor.scala 809:35]
+  wire [2:0] d_clr_1 = _GEN_79[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = _inflight_T_3 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] c_sizes_set = _GEN_77[23:0];
+  wire [23:0] _inflight_sizes_T_3 = inflight_sizes_1 | c_sizes_set; // @[Monitor.scala 811:41]
+  wire [23:0] d_sizes_clr_1 = _GEN_81[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = _inflight_sizes_T_3 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_3151 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  reg [3:0] inflight_2; // @[Monitor.scala 823:27]
+  reg [9:0] d_first_counter_3; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_3 = d_first_counter_3 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_3 = d_first_counter_3 == 10'h0; // @[Edges.scala 230:25]
+  wire  _T_3163 = io_in_d_bits_opcode[2] & ~io_in_d_bits_opcode[1]; // @[Edges.scala 70:40]
+  wire  _T_3164 = _d_first_T & d_first_3 & _T_3163; // @[Monitor.scala 829:38]
+  wire [3:0] _d_set_T = 4'h1 << io_in_d_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_3165 = inflight_2 >> io_in_d_bits_sink; // @[Monitor.scala 831:23]
+  wire  _T_3167 = ~_T_3165[0]; // @[Monitor.scala 831:14]
+  wire [3:0] d_set = _d_first_T & d_first_3 & _T_3163 ? _d_set_T : 4'h0; // @[Monitor.scala 829:72 830:13]
+  wire [3:0] _e_clr_T = 4'h1 << io_in_e_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_3174 = d_set | inflight_2; // @[Monitor.scala 837:24]
+  wire [3:0] _T_3175 = _T_3174 >> io_in_e_bits_sink; // @[Monitor.scala 837:35]
+  wire [3:0] e_clr = io_in_e_valid ? _e_clr_T : 4'h0; // @[Monitor.scala 835:73 836:13]
+  wire [3:0] _inflight_T_6 = inflight_2 | d_set; // @[Monitor.scala 842:27]
+  wire [3:0] _inflight_T_7 = ~e_clr; // @[Monitor.scala 842:38]
+  wire [3:0] _inflight_T_8 = _inflight_T_6 & _inflight_T_7; // @[Monitor.scala 842:36]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      b_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (b_first_done) begin // @[Edges.scala 234:17]
+      if (b_first) begin // @[Edges.scala 235:21]
+        b_first_counter <= 10'h0;
+      end else begin
+        b_first_counter <= b_first_counter1;
+      end
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      param_2 <= io_in_b_bits_param; // @[Monitor.scala 421:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      address_1 <= io_in_b_bits_address; // @[Monitor.scala 424:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter <= c_first_beats1_decode;
+        end else begin
+          c_first_counter <= 10'h0;
+        end
+      end else begin
+        c_first_counter <= c_first_counter1;
+      end
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      opcode_3 <= io_in_c_bits_opcode; // @[Monitor.scala 525:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      param_3 <= io_in_c_bits_param; // @[Monitor.scala 526:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      size_3 <= io_in_c_bits_size; // @[Monitor.scala 527:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      source_3 <= io_in_c_bits_source; // @[Monitor.scala 528:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      address_2 <= io_in_c_bits_address; // @[Monitor.scala 529:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first_1) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter_1 <= c_first_beats1_decode;
+        end else begin
+          c_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        c_first_counter_1 <= c_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_c_first_T | _d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    if (reset) begin // @[Monitor.scala 823:27]
+      inflight_2 <= 4'h0; // @[Monitor.scala 823:27]
+    end else begin
+      inflight_2 <= _inflight_T_8; // @[Monitor.scala 842:14]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_3 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_3) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_3 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_3 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_3 <= d_first_counter1_3;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_141 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_141) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_249 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_249) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_263 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_263) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_268 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_268) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_141 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_141) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_249 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_249) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_263 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_263) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_510 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_510) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_268 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_268) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_636 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_636) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_771 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_771) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_902 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_902) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_918 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_918) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1030 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_1030) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1040 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_1040) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1030 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_1030) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1166 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_1166) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1282 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_1282) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1292 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_1292) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1304 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1304) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1324 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1324) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1339 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1339) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1343 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1343) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1339 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1339) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1343 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1343) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1376 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1376 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~_T_1376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1572 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~_T_1572) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Probe type which is unexpected using diplomatic parameters (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~address_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries unmanaged address (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_1 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~is_aligned_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1588 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~_T_1588) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries invalid cap param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries unmanaged address (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid report param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2359 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~_T_2359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries unmanaged address (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid report param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2489 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2489) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release type unsupported by manager (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2597 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid report param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2359 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2489 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2489) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries ReleaseData type unsupported by manager (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2597 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData smaller than a beat (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid report param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries unmanaged address (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2359 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~_T_2359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries unmanaged address (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries unmanaged address (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck address not aligned to size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid param (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2359 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~_T_2359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck is corrupt (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2908 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2908) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2912 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2912) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2916 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2916) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2920 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2920) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2924 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2924) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2932 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2932) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2936 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2936) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2940 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2940) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2944 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2944) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2948 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2948) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2952 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2952) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2964 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2964) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel param changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2976 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2976) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel addresss changed with multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2984 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2984) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel opcode changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2988 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2988) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel param changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2992 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2992) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel size changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2996 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2996) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel source changed within multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3000 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_3000) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel address changed with multibeat operation (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3013 & (_T_3009 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3009 & ~reset & ~_T_3013) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3032 & (_T_3020 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & _T_2 & ~_T_3032) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3038 & (_T_3020 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & same_cycle_resp & _T_2 & ~_T_3038) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3042 & (_T_3020 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & same_cycle_resp & _T_2 & ~_T_3042) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3050 & (_T_3020 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & ~same_cycle_resp & _T_2 & ~_T_3050) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3054 & (_T_3020 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & ~same_cycle_resp & _T_2 & ~_T_3054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3066 & (_T_3064 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3064 & _T_2 & ~_T_3066) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3073 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_3073) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3082 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_3082) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3102 & (_T_3099 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3099 & ~reset & ~_T_3102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel re-used a source ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3118 & (_T_3108 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & _T_2 & ~_T_3118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3122 & (_T_3108 & same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & same_cycle_resp_1 & _T_2 & ~_T_3122) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3126 & (_T_3108 & ~same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & ~same_cycle_resp_1 & _T_2 & ~_T_3126) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3137 & (_T_3135 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3135 & _T_2 & ~_T_3137) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3142 & (_T_3141 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3141 & _T_2 & ~_T_3142) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' and 'D' concurrent, despite minlatency 1 (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3151 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_3151) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3167 & (_T_3164 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3164 & _T_2 & ~_T_3167) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel re-used a sink ID (connected at SystemBus.scala:41:96)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3175[0] & (io_in_e_valid & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_e_valid & ~reset & ~_T_3175[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'E' channel acknowledged for nothing inflight (connected at SystemBus.scala:41:96)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[1:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  b_first_counter = _RAND_13[9:0];
+  _RAND_14 = {1{`RANDOM}};
+  param_2 = _RAND_14[1:0];
+  _RAND_15 = {1{`RANDOM}};
+  address_1 = _RAND_15[30:0];
+  _RAND_16 = {1{`RANDOM}};
+  c_first_counter = _RAND_16[9:0];
+  _RAND_17 = {1{`RANDOM}};
+  opcode_3 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  param_3 = _RAND_18[2:0];
+  _RAND_19 = {1{`RANDOM}};
+  size_3 = _RAND_19[3:0];
+  _RAND_20 = {1{`RANDOM}};
+  source_3 = _RAND_20[1:0];
+  _RAND_21 = {1{`RANDOM}};
+  address_2 = _RAND_21[30:0];
+  _RAND_22 = {1{`RANDOM}};
+  inflight = _RAND_22[2:0];
+  _RAND_23 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_23[11:0];
+  _RAND_24 = {1{`RANDOM}};
+  inflight_sizes = _RAND_24[23:0];
+  _RAND_25 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_25[9:0];
+  _RAND_26 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_26[9:0];
+  _RAND_27 = {1{`RANDOM}};
+  watchdog = _RAND_27[31:0];
+  _RAND_28 = {1{`RANDOM}};
+  inflight_1 = _RAND_28[2:0];
+  _RAND_29 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_29[23:0];
+  _RAND_30 = {1{`RANDOM}};
+  c_first_counter_1 = _RAND_30[9:0];
+  _RAND_31 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_31[9:0];
+  _RAND_32 = {1{`RANDOM}};
+  watchdog_1 = _RAND_32[31:0];
+  _RAND_33 = {1{`RANDOM}};
+  inflight_2 = _RAND_33[3:0];
+  _RAND_34 = {1{`RANDOM}};
+  d_first_counter_3 = _RAND_34[9:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFIFOFixer(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_b_ready,
+  output        auto_in_b_valid,
+  output [1:0]  auto_in_b_bits_param,
+  output [30:0] auto_in_b_bits_address,
+  output        auto_in_c_ready,
+  input         auto_in_c_valid,
+  input  [2:0]  auto_in_c_bits_opcode,
+  input  [2:0]  auto_in_c_bits_param,
+  input  [3:0]  auto_in_c_bits_size,
+  input  [1:0]  auto_in_c_bits_source,
+  input  [30:0] auto_in_c_bits_address,
+  input  [31:0] auto_in_c_bits_data,
+  input         auto_in_c_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [1:0]  auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_in_e_valid,
+  input  [1:0]  auto_in_e_bits_sink,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_b_ready,
+  input         auto_out_b_valid,
+  input  [1:0]  auto_out_b_bits_param,
+  input  [30:0] auto_out_b_bits_address,
+  input         auto_out_c_ready,
+  output        auto_out_c_valid,
+  output [2:0]  auto_out_c_bits_opcode,
+  output [2:0]  auto_out_c_bits_param,
+  output [3:0]  auto_out_c_bits_size,
+  output [1:0]  auto_out_c_bits_source,
+  output [30:0] auto_out_c_bits_address,
+  output [31:0] auto_out_c_bits_data,
+  output        auto_out_c_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [1:0]  auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt,
+  output        auto_out_e_valid,
+  output [1:0]  auto_out_e_bits_sink
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_b_bits_param; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_b_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_c_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_c_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_c_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_e_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_e_bits_sink; // @[Nodes.scala 24:25]
+  TLMonitor_1 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_b_ready(monitor_io_in_b_ready),
+    .io_in_b_valid(monitor_io_in_b_valid),
+    .io_in_b_bits_param(monitor_io_in_b_bits_param),
+    .io_in_b_bits_address(monitor_io_in_b_bits_address),
+    .io_in_c_ready(monitor_io_in_c_ready),
+    .io_in_c_valid(monitor_io_in_c_valid),
+    .io_in_c_bits_opcode(monitor_io_in_c_bits_opcode),
+    .io_in_c_bits_param(monitor_io_in_c_bits_param),
+    .io_in_c_bits_size(monitor_io_in_c_bits_size),
+    .io_in_c_bits_source(monitor_io_in_c_bits_source),
+    .io_in_c_bits_address(monitor_io_in_c_bits_address),
+    .io_in_c_bits_corrupt(monitor_io_in_c_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt),
+    .io_in_e_valid(monitor_io_in_e_valid),
+    .io_in_e_bits_sink(monitor_io_in_e_bits_sink)
+  );
+  assign auto_in_a_ready = auto_out_a_ready; // @[FIFOFixer.scala 88:33]
+  assign auto_in_b_valid = auto_out_b_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_param = auto_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_address = auto_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_c_ready = auto_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[FIFOFixer.scala 87:33]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_valid = auto_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_source = auto_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_data = auto_in_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_corrupt = auto_in_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_e_valid = auto_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_e_bits_sink = auto_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_out_a_ready; // @[FIFOFixer.scala 88:33]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_valid = auto_out_b_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_b_bits_param = auto_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_b_bits_address = auto_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_c_ready = auto_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_c_valid = auto_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_source = auto_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_corrupt = auto_in_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_e_valid = auto_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_e_bits_sink = auto_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLWidthWidget(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLInterconnectCoupler(
+  output        auto_widget_in_a_ready,
+  input         auto_widget_in_a_valid,
+  input  [2:0]  auto_widget_in_a_bits_opcode,
+  input  [2:0]  auto_widget_in_a_bits_param,
+  input  [3:0]  auto_widget_in_a_bits_size,
+  input  [1:0]  auto_widget_in_a_bits_source,
+  input  [29:0] auto_widget_in_a_bits_address,
+  input  [3:0]  auto_widget_in_a_bits_mask,
+  input  [31:0] auto_widget_in_a_bits_data,
+  input         auto_widget_in_a_bits_corrupt,
+  input         auto_widget_in_d_ready,
+  output        auto_widget_in_d_valid,
+  output [2:0]  auto_widget_in_d_bits_opcode,
+  output [1:0]  auto_widget_in_d_bits_param,
+  output [3:0]  auto_widget_in_d_bits_size,
+  output [1:0]  auto_widget_in_d_bits_source,
+  output        auto_widget_in_d_bits_sink,
+  output        auto_widget_in_d_bits_denied,
+  output [31:0] auto_widget_in_d_bits_data,
+  output        auto_widget_in_d_bits_corrupt,
+  input         auto_bus_xing_out_a_ready,
+  output        auto_bus_xing_out_a_valid,
+  output [2:0]  auto_bus_xing_out_a_bits_opcode,
+  output [2:0]  auto_bus_xing_out_a_bits_param,
+  output [3:0]  auto_bus_xing_out_a_bits_size,
+  output [1:0]  auto_bus_xing_out_a_bits_source,
+  output [29:0] auto_bus_xing_out_a_bits_address,
+  output [3:0]  auto_bus_xing_out_a_bits_mask,
+  output [31:0] auto_bus_xing_out_a_bits_data,
+  output        auto_bus_xing_out_a_bits_corrupt,
+  output        auto_bus_xing_out_d_ready,
+  input         auto_bus_xing_out_d_valid,
+  input  [2:0]  auto_bus_xing_out_d_bits_opcode,
+  input  [1:0]  auto_bus_xing_out_d_bits_param,
+  input  [3:0]  auto_bus_xing_out_d_bits_size,
+  input  [1:0]  auto_bus_xing_out_d_bits_source,
+  input         auto_bus_xing_out_d_bits_sink,
+  input         auto_bus_xing_out_d_bits_denied,
+  input  [31:0] auto_bus_xing_out_d_bits_data,
+  input         auto_bus_xing_out_d_bits_corrupt
+);
+  wire  widget_auto_in_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [29:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_param; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_denied; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [29:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_param; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_denied; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  TLWidthWidget widget ( // @[WidthWidget.scala 219:28]
+    .auto_in_a_ready(widget_auto_in_a_ready),
+    .auto_in_a_valid(widget_auto_in_a_valid),
+    .auto_in_a_bits_opcode(widget_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(widget_auto_in_a_bits_param),
+    .auto_in_a_bits_size(widget_auto_in_a_bits_size),
+    .auto_in_a_bits_source(widget_auto_in_a_bits_source),
+    .auto_in_a_bits_address(widget_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(widget_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(widget_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(widget_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(widget_auto_in_d_ready),
+    .auto_in_d_valid(widget_auto_in_d_valid),
+    .auto_in_d_bits_opcode(widget_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(widget_auto_in_d_bits_param),
+    .auto_in_d_bits_size(widget_auto_in_d_bits_size),
+    .auto_in_d_bits_source(widget_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(widget_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(widget_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(widget_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(widget_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(widget_auto_out_a_ready),
+    .auto_out_a_valid(widget_auto_out_a_valid),
+    .auto_out_a_bits_opcode(widget_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(widget_auto_out_a_bits_param),
+    .auto_out_a_bits_size(widget_auto_out_a_bits_size),
+    .auto_out_a_bits_source(widget_auto_out_a_bits_source),
+    .auto_out_a_bits_address(widget_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(widget_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(widget_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(widget_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(widget_auto_out_d_ready),
+    .auto_out_d_valid(widget_auto_out_d_valid),
+    .auto_out_d_bits_opcode(widget_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(widget_auto_out_d_bits_param),
+    .auto_out_d_bits_size(widget_auto_out_d_bits_size),
+    .auto_out_d_bits_source(widget_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(widget_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(widget_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(widget_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(widget_auto_out_d_bits_corrupt)
+  );
+  assign auto_widget_in_a_ready = widget_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_valid = widget_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_opcode = widget_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_param = widget_auto_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_size = widget_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_source = widget_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_sink = widget_auto_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_denied = widget_auto_in_d_bits_denied; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_data = widget_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_corrupt = widget_auto_in_d_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign auto_bus_xing_out_a_valid = widget_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_opcode = widget_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_param = widget_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_size = widget_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_source = widget_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_address = widget_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_mask = widget_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_data = widget_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_corrupt = widget_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_d_ready = widget_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign widget_auto_in_a_valid = auto_widget_in_a_valid; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_opcode = auto_widget_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_param = auto_widget_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_size = auto_widget_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_source = auto_widget_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_address = auto_widget_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_mask = auto_widget_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_data = auto_widget_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_corrupt = auto_widget_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_d_ready = auto_widget_in_d_ready; // @[LazyModule.scala 309:16]
+  assign widget_auto_out_a_ready = auto_bus_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_valid = auto_bus_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_opcode = auto_bus_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_param = auto_bus_xing_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_size = auto_bus_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_source = auto_bus_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_sink = auto_bus_xing_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_denied = auto_bus_xing_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_data = auto_bus_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_corrupt = auto_bus_xing_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLWidthWidget_2(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_b_ready,
+  output        auto_in_b_valid,
+  output [1:0]  auto_in_b_bits_param,
+  output [30:0] auto_in_b_bits_address,
+  output        auto_in_c_ready,
+  input         auto_in_c_valid,
+  input  [2:0]  auto_in_c_bits_opcode,
+  input  [2:0]  auto_in_c_bits_param,
+  input  [2:0]  auto_in_c_bits_size,
+  input  [1:0]  auto_in_c_bits_source,
+  input  [30:0] auto_in_c_bits_address,
+  input  [31:0] auto_in_c_bits_data,
+  input         auto_in_c_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [1:0]  auto_in_d_bits_sink,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_in_e_valid,
+  input  [1:0]  auto_in_e_bits_sink,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_b_ready,
+  input         auto_out_b_valid,
+  input  [1:0]  auto_out_b_bits_param,
+  input  [30:0] auto_out_b_bits_address,
+  input         auto_out_c_ready,
+  output        auto_out_c_valid,
+  output [2:0]  auto_out_c_bits_opcode,
+  output [2:0]  auto_out_c_bits_param,
+  output [2:0]  auto_out_c_bits_size,
+  output [1:0]  auto_out_c_bits_source,
+  output [30:0] auto_out_c_bits_address,
+  output [31:0] auto_out_c_bits_data,
+  output        auto_out_c_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [1:0]  auto_out_d_bits_sink,
+  input  [31:0] auto_out_d_bits_data,
+  output        auto_out_e_valid,
+  output [1:0]  auto_out_e_bits_sink
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_valid = auto_out_b_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_param = auto_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_address = auto_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_c_ready = auto_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_valid = auto_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_source = auto_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_data = auto_in_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_corrupt = auto_in_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_e_valid = auto_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_e_bits_sink = auto_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLInterconnectCoupler_2(
+  output        auto_widget_in_a_ready,
+  input         auto_widget_in_a_valid,
+  input  [2:0]  auto_widget_in_a_bits_opcode,
+  input  [2:0]  auto_widget_in_a_bits_param,
+  input  [2:0]  auto_widget_in_a_bits_size,
+  input  [1:0]  auto_widget_in_a_bits_source,
+  input  [30:0] auto_widget_in_a_bits_address,
+  input  [3:0]  auto_widget_in_a_bits_mask,
+  input  [31:0] auto_widget_in_a_bits_data,
+  input         auto_widget_in_a_bits_corrupt,
+  input         auto_widget_in_b_ready,
+  output        auto_widget_in_b_valid,
+  output [1:0]  auto_widget_in_b_bits_param,
+  output [30:0] auto_widget_in_b_bits_address,
+  output        auto_widget_in_c_ready,
+  input         auto_widget_in_c_valid,
+  input  [2:0]  auto_widget_in_c_bits_opcode,
+  input  [2:0]  auto_widget_in_c_bits_param,
+  input  [2:0]  auto_widget_in_c_bits_size,
+  input  [1:0]  auto_widget_in_c_bits_source,
+  input  [30:0] auto_widget_in_c_bits_address,
+  input  [31:0] auto_widget_in_c_bits_data,
+  input         auto_widget_in_c_bits_corrupt,
+  input         auto_widget_in_d_ready,
+  output        auto_widget_in_d_valid,
+  output [2:0]  auto_widget_in_d_bits_opcode,
+  output [1:0]  auto_widget_in_d_bits_param,
+  output [2:0]  auto_widget_in_d_bits_size,
+  output [1:0]  auto_widget_in_d_bits_source,
+  output [1:0]  auto_widget_in_d_bits_sink,
+  output [31:0] auto_widget_in_d_bits_data,
+  input         auto_widget_in_e_valid,
+  input  [1:0]  auto_widget_in_e_bits_sink,
+  input         auto_widget_out_a_ready,
+  output        auto_widget_out_a_valid,
+  output [2:0]  auto_widget_out_a_bits_opcode,
+  output [2:0]  auto_widget_out_a_bits_param,
+  output [2:0]  auto_widget_out_a_bits_size,
+  output [1:0]  auto_widget_out_a_bits_source,
+  output [30:0] auto_widget_out_a_bits_address,
+  output [3:0]  auto_widget_out_a_bits_mask,
+  output [31:0] auto_widget_out_a_bits_data,
+  output        auto_widget_out_a_bits_corrupt,
+  output        auto_widget_out_b_ready,
+  input         auto_widget_out_b_valid,
+  input  [1:0]  auto_widget_out_b_bits_param,
+  input  [30:0] auto_widget_out_b_bits_address,
+  input         auto_widget_out_c_ready,
+  output        auto_widget_out_c_valid,
+  output [2:0]  auto_widget_out_c_bits_opcode,
+  output [2:0]  auto_widget_out_c_bits_param,
+  output [2:0]  auto_widget_out_c_bits_size,
+  output [1:0]  auto_widget_out_c_bits_source,
+  output [30:0] auto_widget_out_c_bits_address,
+  output [31:0] auto_widget_out_c_bits_data,
+  output        auto_widget_out_c_bits_corrupt,
+  output        auto_widget_out_d_ready,
+  input         auto_widget_out_d_valid,
+  input  [2:0]  auto_widget_out_d_bits_opcode,
+  input  [1:0]  auto_widget_out_d_bits_param,
+  input  [2:0]  auto_widget_out_d_bits_size,
+  input  [1:0]  auto_widget_out_d_bits_source,
+  input  [1:0]  auto_widget_out_d_bits_sink,
+  input  [31:0] auto_widget_out_d_bits_data,
+  output        auto_widget_out_e_valid,
+  output [1:0]  auto_widget_out_e_bits_sink
+);
+  wire  widget_auto_in_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_b_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_b_valid; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_b_bits_param; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_in_b_bits_address; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_c_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_c_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_c_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_c_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_c_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_c_bits_source; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_in_c_bits_address; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_c_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_c_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_e_valid; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_e_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_b_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_b_valid; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_b_bits_param; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_out_b_bits_address; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_c_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_c_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_c_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_c_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_c_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_c_bits_source; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_out_c_bits_address; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_c_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_c_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_e_valid; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_e_bits_sink; // @[WidthWidget.scala 219:28]
+  TLWidthWidget_2 widget ( // @[WidthWidget.scala 219:28]
+    .auto_in_a_ready(widget_auto_in_a_ready),
+    .auto_in_a_valid(widget_auto_in_a_valid),
+    .auto_in_a_bits_opcode(widget_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(widget_auto_in_a_bits_param),
+    .auto_in_a_bits_size(widget_auto_in_a_bits_size),
+    .auto_in_a_bits_source(widget_auto_in_a_bits_source),
+    .auto_in_a_bits_address(widget_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(widget_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(widget_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(widget_auto_in_a_bits_corrupt),
+    .auto_in_b_ready(widget_auto_in_b_ready),
+    .auto_in_b_valid(widget_auto_in_b_valid),
+    .auto_in_b_bits_param(widget_auto_in_b_bits_param),
+    .auto_in_b_bits_address(widget_auto_in_b_bits_address),
+    .auto_in_c_ready(widget_auto_in_c_ready),
+    .auto_in_c_valid(widget_auto_in_c_valid),
+    .auto_in_c_bits_opcode(widget_auto_in_c_bits_opcode),
+    .auto_in_c_bits_param(widget_auto_in_c_bits_param),
+    .auto_in_c_bits_size(widget_auto_in_c_bits_size),
+    .auto_in_c_bits_source(widget_auto_in_c_bits_source),
+    .auto_in_c_bits_address(widget_auto_in_c_bits_address),
+    .auto_in_c_bits_data(widget_auto_in_c_bits_data),
+    .auto_in_c_bits_corrupt(widget_auto_in_c_bits_corrupt),
+    .auto_in_d_ready(widget_auto_in_d_ready),
+    .auto_in_d_valid(widget_auto_in_d_valid),
+    .auto_in_d_bits_opcode(widget_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(widget_auto_in_d_bits_param),
+    .auto_in_d_bits_size(widget_auto_in_d_bits_size),
+    .auto_in_d_bits_source(widget_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(widget_auto_in_d_bits_sink),
+    .auto_in_d_bits_data(widget_auto_in_d_bits_data),
+    .auto_in_e_valid(widget_auto_in_e_valid),
+    .auto_in_e_bits_sink(widget_auto_in_e_bits_sink),
+    .auto_out_a_ready(widget_auto_out_a_ready),
+    .auto_out_a_valid(widget_auto_out_a_valid),
+    .auto_out_a_bits_opcode(widget_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(widget_auto_out_a_bits_param),
+    .auto_out_a_bits_size(widget_auto_out_a_bits_size),
+    .auto_out_a_bits_source(widget_auto_out_a_bits_source),
+    .auto_out_a_bits_address(widget_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(widget_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(widget_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(widget_auto_out_a_bits_corrupt),
+    .auto_out_b_ready(widget_auto_out_b_ready),
+    .auto_out_b_valid(widget_auto_out_b_valid),
+    .auto_out_b_bits_param(widget_auto_out_b_bits_param),
+    .auto_out_b_bits_address(widget_auto_out_b_bits_address),
+    .auto_out_c_ready(widget_auto_out_c_ready),
+    .auto_out_c_valid(widget_auto_out_c_valid),
+    .auto_out_c_bits_opcode(widget_auto_out_c_bits_opcode),
+    .auto_out_c_bits_param(widget_auto_out_c_bits_param),
+    .auto_out_c_bits_size(widget_auto_out_c_bits_size),
+    .auto_out_c_bits_source(widget_auto_out_c_bits_source),
+    .auto_out_c_bits_address(widget_auto_out_c_bits_address),
+    .auto_out_c_bits_data(widget_auto_out_c_bits_data),
+    .auto_out_c_bits_corrupt(widget_auto_out_c_bits_corrupt),
+    .auto_out_d_ready(widget_auto_out_d_ready),
+    .auto_out_d_valid(widget_auto_out_d_valid),
+    .auto_out_d_bits_opcode(widget_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(widget_auto_out_d_bits_param),
+    .auto_out_d_bits_size(widget_auto_out_d_bits_size),
+    .auto_out_d_bits_source(widget_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(widget_auto_out_d_bits_sink),
+    .auto_out_d_bits_data(widget_auto_out_d_bits_data),
+    .auto_out_e_valid(widget_auto_out_e_valid),
+    .auto_out_e_bits_sink(widget_auto_out_e_bits_sink)
+  );
+  assign auto_widget_in_a_ready = widget_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_b_valid = widget_auto_in_b_valid; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_b_bits_param = widget_auto_in_b_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_b_bits_address = widget_auto_in_b_bits_address; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_c_ready = widget_auto_in_c_ready; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_valid = widget_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_opcode = widget_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_param = widget_auto_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_size = widget_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_source = widget_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_sink = widget_auto_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_data = widget_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_widget_out_a_valid = widget_auto_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_a_bits_opcode = widget_auto_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_a_bits_param = widget_auto_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_a_bits_size = widget_auto_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_a_bits_source = widget_auto_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_a_bits_address = widget_auto_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_a_bits_mask = widget_auto_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_a_bits_data = widget_auto_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_a_bits_corrupt = widget_auto_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_b_ready = widget_auto_out_b_ready; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_c_valid = widget_auto_out_c_valid; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_c_bits_opcode = widget_auto_out_c_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_c_bits_param = widget_auto_out_c_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_c_bits_size = widget_auto_out_c_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_c_bits_source = widget_auto_out_c_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_c_bits_address = widget_auto_out_c_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_c_bits_data = widget_auto_out_c_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_c_bits_corrupt = widget_auto_out_c_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_d_ready = widget_auto_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_e_valid = widget_auto_out_e_valid; // @[LazyModule.scala 311:12]
+  assign auto_widget_out_e_bits_sink = widget_auto_out_e_bits_sink; // @[LazyModule.scala 311:12]
+  assign widget_auto_in_a_valid = auto_widget_in_a_valid; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_opcode = auto_widget_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_param = auto_widget_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_size = auto_widget_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_source = auto_widget_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_address = auto_widget_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_mask = auto_widget_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_data = auto_widget_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_corrupt = auto_widget_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_b_ready = auto_widget_in_b_ready; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_c_valid = auto_widget_in_c_valid; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_c_bits_opcode = auto_widget_in_c_bits_opcode; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_c_bits_param = auto_widget_in_c_bits_param; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_c_bits_size = auto_widget_in_c_bits_size; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_c_bits_source = auto_widget_in_c_bits_source; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_c_bits_address = auto_widget_in_c_bits_address; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_c_bits_data = auto_widget_in_c_bits_data; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_c_bits_corrupt = auto_widget_in_c_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_d_ready = auto_widget_in_d_ready; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_e_valid = auto_widget_in_e_valid; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_e_bits_sink = auto_widget_in_e_bits_sink; // @[LazyModule.scala 309:16]
+  assign widget_auto_out_a_ready = auto_widget_out_a_ready; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_b_valid = auto_widget_out_b_valid; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_b_bits_param = auto_widget_out_b_bits_param; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_b_bits_address = auto_widget_out_b_bits_address; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_c_ready = auto_widget_out_c_ready; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_valid = auto_widget_out_d_valid; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_opcode = auto_widget_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_param = auto_widget_out_d_bits_param; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_size = auto_widget_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_source = auto_widget_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_sink = auto_widget_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_data = auto_widget_out_d_bits_data; // @[LazyModule.scala 311:12]
+endmodule
+module TLInterconnectCoupler_3(
+  output        auto_tl_master_clock_xing_in_a_ready,
+  input         auto_tl_master_clock_xing_in_a_valid,
+  input  [2:0]  auto_tl_master_clock_xing_in_a_bits_opcode,
+  input  [2:0]  auto_tl_master_clock_xing_in_a_bits_param,
+  input  [3:0]  auto_tl_master_clock_xing_in_a_bits_size,
+  input  [1:0]  auto_tl_master_clock_xing_in_a_bits_source,
+  input  [30:0] auto_tl_master_clock_xing_in_a_bits_address,
+  input  [3:0]  auto_tl_master_clock_xing_in_a_bits_mask,
+  input  [31:0] auto_tl_master_clock_xing_in_a_bits_data,
+  input         auto_tl_master_clock_xing_in_a_bits_corrupt,
+  input         auto_tl_master_clock_xing_in_b_ready,
+  output        auto_tl_master_clock_xing_in_b_valid,
+  output [1:0]  auto_tl_master_clock_xing_in_b_bits_param,
+  output [30:0] auto_tl_master_clock_xing_in_b_bits_address,
+  output        auto_tl_master_clock_xing_in_c_ready,
+  input         auto_tl_master_clock_xing_in_c_valid,
+  input  [2:0]  auto_tl_master_clock_xing_in_c_bits_opcode,
+  input  [2:0]  auto_tl_master_clock_xing_in_c_bits_param,
+  input  [3:0]  auto_tl_master_clock_xing_in_c_bits_size,
+  input  [1:0]  auto_tl_master_clock_xing_in_c_bits_source,
+  input  [30:0] auto_tl_master_clock_xing_in_c_bits_address,
+  input  [31:0] auto_tl_master_clock_xing_in_c_bits_data,
+  input         auto_tl_master_clock_xing_in_c_bits_corrupt,
+  input         auto_tl_master_clock_xing_in_d_ready,
+  output        auto_tl_master_clock_xing_in_d_valid,
+  output [2:0]  auto_tl_master_clock_xing_in_d_bits_opcode,
+  output [1:0]  auto_tl_master_clock_xing_in_d_bits_param,
+  output [3:0]  auto_tl_master_clock_xing_in_d_bits_size,
+  output [1:0]  auto_tl_master_clock_xing_in_d_bits_source,
+  output [1:0]  auto_tl_master_clock_xing_in_d_bits_sink,
+  output        auto_tl_master_clock_xing_in_d_bits_denied,
+  output [31:0] auto_tl_master_clock_xing_in_d_bits_data,
+  output        auto_tl_master_clock_xing_in_d_bits_corrupt,
+  input         auto_tl_master_clock_xing_in_e_valid,
+  input  [1:0]  auto_tl_master_clock_xing_in_e_bits_sink,
+  input         auto_tl_out_a_ready,
+  output        auto_tl_out_a_valid,
+  output [2:0]  auto_tl_out_a_bits_opcode,
+  output [2:0]  auto_tl_out_a_bits_param,
+  output [3:0]  auto_tl_out_a_bits_size,
+  output [1:0]  auto_tl_out_a_bits_source,
+  output [30:0] auto_tl_out_a_bits_address,
+  output [3:0]  auto_tl_out_a_bits_mask,
+  output [31:0] auto_tl_out_a_bits_data,
+  output        auto_tl_out_a_bits_corrupt,
+  output        auto_tl_out_b_ready,
+  input         auto_tl_out_b_valid,
+  input  [1:0]  auto_tl_out_b_bits_param,
+  input  [30:0] auto_tl_out_b_bits_address,
+  input         auto_tl_out_c_ready,
+  output        auto_tl_out_c_valid,
+  output [2:0]  auto_tl_out_c_bits_opcode,
+  output [2:0]  auto_tl_out_c_bits_param,
+  output [3:0]  auto_tl_out_c_bits_size,
+  output [1:0]  auto_tl_out_c_bits_source,
+  output [30:0] auto_tl_out_c_bits_address,
+  output [31:0] auto_tl_out_c_bits_data,
+  output        auto_tl_out_c_bits_corrupt,
+  output        auto_tl_out_d_ready,
+  input         auto_tl_out_d_valid,
+  input  [2:0]  auto_tl_out_d_bits_opcode,
+  input  [1:0]  auto_tl_out_d_bits_param,
+  input  [3:0]  auto_tl_out_d_bits_size,
+  input  [1:0]  auto_tl_out_d_bits_source,
+  input  [1:0]  auto_tl_out_d_bits_sink,
+  input         auto_tl_out_d_bits_denied,
+  input  [31:0] auto_tl_out_d_bits_data,
+  input         auto_tl_out_d_bits_corrupt,
+  output        auto_tl_out_e_valid,
+  output [1:0]  auto_tl_out_e_bits_sink
+);
+  assign auto_tl_master_clock_xing_in_a_ready = auto_tl_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_b_valid = auto_tl_out_b_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_b_bits_param = auto_tl_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_b_bits_address = auto_tl_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_c_ready = auto_tl_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_valid = auto_tl_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_bits_opcode = auto_tl_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_bits_param = auto_tl_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_bits_size = auto_tl_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_bits_source = auto_tl_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_bits_sink = auto_tl_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_bits_denied = auto_tl_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_bits_data = auto_tl_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_master_clock_xing_in_d_bits_corrupt = auto_tl_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_out_a_valid = auto_tl_master_clock_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_opcode = auto_tl_master_clock_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_param = auto_tl_master_clock_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_size = auto_tl_master_clock_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_source = auto_tl_master_clock_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_address = auto_tl_master_clock_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_mask = auto_tl_master_clock_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_data = auto_tl_master_clock_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_corrupt = auto_tl_master_clock_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_b_ready = auto_tl_master_clock_xing_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_c_valid = auto_tl_master_clock_xing_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_c_bits_opcode = auto_tl_master_clock_xing_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_c_bits_param = auto_tl_master_clock_xing_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_c_bits_size = auto_tl_master_clock_xing_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_c_bits_source = auto_tl_master_clock_xing_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_c_bits_address = auto_tl_master_clock_xing_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_c_bits_data = auto_tl_master_clock_xing_in_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_c_bits_corrupt = auto_tl_master_clock_xing_in_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_d_ready = auto_tl_master_clock_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_e_valid = auto_tl_master_clock_xing_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_e_bits_sink = auto_tl_master_clock_xing_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module SystemBus(
+  output        auto_coupler_from_tile_tl_master_clock_xing_in_a_ready,
+  input         auto_coupler_from_tile_tl_master_clock_xing_in_a_valid,
+  input  [2:0]  auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_opcode,
+  input  [2:0]  auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_param,
+  input  [3:0]  auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_size,
+  input  [1:0]  auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_source,
+  input  [30:0] auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_address,
+  input  [3:0]  auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_mask,
+  input  [31:0] auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_data,
+  input         auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_corrupt,
+  input         auto_coupler_from_tile_tl_master_clock_xing_in_b_ready,
+  output        auto_coupler_from_tile_tl_master_clock_xing_in_b_valid,
+  output [1:0]  auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_param,
+  output [30:0] auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_address,
+  output        auto_coupler_from_tile_tl_master_clock_xing_in_c_ready,
+  input         auto_coupler_from_tile_tl_master_clock_xing_in_c_valid,
+  input  [2:0]  auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_opcode,
+  input  [2:0]  auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_param,
+  input  [3:0]  auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_size,
+  input  [1:0]  auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_source,
+  input  [30:0] auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_address,
+  input  [31:0] auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_data,
+  input         auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_corrupt,
+  input         auto_coupler_from_tile_tl_master_clock_xing_in_d_ready,
+  output        auto_coupler_from_tile_tl_master_clock_xing_in_d_valid,
+  output [2:0]  auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_opcode,
+  output [1:0]  auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_param,
+  output [3:0]  auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_size,
+  output [1:0]  auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_source,
+  output [1:0]  auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_sink,
+  output        auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_denied,
+  output [31:0] auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_data,
+  output        auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_corrupt,
+  input         auto_coupler_from_tile_tl_master_clock_xing_in_e_valid,
+  input  [1:0]  auto_coupler_from_tile_tl_master_clock_xing_in_e_bits_sink,
+  input         auto_coupler_to_bus_named_subsystem_l2_widget_out_a_ready,
+  output        auto_coupler_to_bus_named_subsystem_l2_widget_out_a_valid,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_param,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_size,
+  output [1:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_source,
+  output [30:0] auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_address,
+  output [3:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_mask,
+  output [31:0] auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_data,
+  output        auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_corrupt,
+  output        auto_coupler_to_bus_named_subsystem_l2_widget_out_b_ready,
+  input         auto_coupler_to_bus_named_subsystem_l2_widget_out_b_valid,
+  input  [1:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_param,
+  input  [30:0] auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_address,
+  input         auto_coupler_to_bus_named_subsystem_l2_widget_out_c_ready,
+  output        auto_coupler_to_bus_named_subsystem_l2_widget_out_c_valid,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_opcode,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_param,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_size,
+  output [1:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_source,
+  output [30:0] auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_address,
+  output [31:0] auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_data,
+  output        auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_corrupt,
+  output        auto_coupler_to_bus_named_subsystem_l2_widget_out_d_ready,
+  input         auto_coupler_to_bus_named_subsystem_l2_widget_out_d_valid,
+  input  [2:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_param,
+  input  [2:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_size,
+  input  [1:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_source,
+  input  [1:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_sink,
+  input  [31:0] auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_data,
+  output        auto_coupler_to_bus_named_subsystem_l2_widget_out_e_valid,
+  output [1:0]  auto_coupler_to_bus_named_subsystem_l2_widget_out_e_bits_sink,
+  input         auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_ready,
+  output        auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_param,
+  output [3:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_size,
+  output [1:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_source,
+  output [29:0] auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_data,
+  output        auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_ready,
+  input         auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_param,
+  input  [3:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_size,
+  input  [1:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_source,
+  input         auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_sink,
+  input         auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_denied,
+  input  [31:0] auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_data,
+  input         auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_corrupt,
+  output        auto_fixedClockNode_out_1_clock,
+  output        auto_fixedClockNode_out_1_reset,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_clock,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_reset,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_clock,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_reset,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_clock,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_reset,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_clock,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_reset,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_clock,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_reset,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_clock,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_reset,
+  output        auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_clock,
+  output        auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_reset,
+  output        auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_clock,
+  output        auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_reset,
+  output        auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_clock,
+  output        auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_reset,
+  output        auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_clock,
+  output        auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_reset,
+  output        auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_clock,
+  output        auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_reset
+);
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_5_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_5_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_4_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_4_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_3_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_3_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_2_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_2_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_1_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_1_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_1_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_1_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_2_member_subsystem_fbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_2_member_subsystem_fbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_1_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_1_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_0_member_subsystem_sbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_0_member_subsystem_sbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  clockGroup_auto_in_member_subsystem_sbus_0_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_in_member_subsystem_sbus_0_reset; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_reset; // @[BusWrapper.scala 41:38]
+  wire  fixedClockNode_auto_in_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_in_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_2_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_2_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_0_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_0_reset; // @[ClockGroup.scala 106:107]
+  wire  system_bus_xbar_clock; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_reset; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_a_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_a_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_a_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_a_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_in_a_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_a_bits_source; // @[SystemBus.scala 40:43]
+  wire [30:0] system_bus_xbar_auto_in_a_bits_address; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_in_a_bits_mask; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_in_a_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_a_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_b_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_b_valid; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_b_bits_param; // @[SystemBus.scala 40:43]
+  wire [30:0] system_bus_xbar_auto_in_b_bits_address; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_c_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_c_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_c_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_c_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_in_c_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_c_bits_source; // @[SystemBus.scala 40:43]
+  wire [30:0] system_bus_xbar_auto_in_c_bits_address; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_in_c_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_c_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_d_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_d_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_d_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_d_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_in_d_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_d_bits_source; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_d_bits_sink; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_d_bits_denied; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_in_d_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_d_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_e_valid; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_e_bits_sink; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_a_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_a_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_1_a_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_1_a_bits_param; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_1_a_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_1_a_bits_source; // @[SystemBus.scala 40:43]
+  wire [30:0] system_bus_xbar_auto_out_1_a_bits_address; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_out_1_a_bits_mask; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_out_1_a_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_a_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_b_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_b_valid; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_1_b_bits_param; // @[SystemBus.scala 40:43]
+  wire [30:0] system_bus_xbar_auto_out_1_b_bits_address; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_c_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_c_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_1_c_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_1_c_bits_param; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_1_c_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_1_c_bits_source; // @[SystemBus.scala 40:43]
+  wire [30:0] system_bus_xbar_auto_out_1_c_bits_address; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_out_1_c_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_c_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_d_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_d_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_1_d_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_1_d_bits_param; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_1_d_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_1_d_bits_source; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_1_d_bits_sink; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_out_1_d_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_1_e_valid; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_1_e_bits_sink; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_0_a_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_0_a_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_0_a_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_0_a_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_out_0_a_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_0_a_bits_source; // @[SystemBus.scala 40:43]
+  wire [29:0] system_bus_xbar_auto_out_0_a_bits_address; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_out_0_a_bits_mask; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_out_0_a_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_0_a_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_0_d_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_0_d_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_0_d_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_0_d_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_out_0_d_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_0_d_bits_source; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_0_d_bits_sink; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_0_d_bits_denied; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_out_0_d_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_0_d_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  fixer_clock; // @[FIFOFixer.scala 144:27]
+  wire  fixer_reset; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_a_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_a_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_a_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_a_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_a_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_a_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [30:0] fixer_auto_in_a_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_a_bits_mask; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_in_a_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_a_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_b_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_b_valid; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_b_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [30:0] fixer_auto_in_b_bits_address; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_c_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_c_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_c_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_c_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_c_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_c_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [30:0] fixer_auto_in_c_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_in_c_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_c_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_d_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_d_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_d_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_d_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_d_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_d_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_d_bits_sink; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_d_bits_denied; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_in_d_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_d_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_e_valid; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_e_bits_sink; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_a_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_a_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_a_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_a_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_a_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_a_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [30:0] fixer_auto_out_a_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_a_bits_mask; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_out_a_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_a_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_b_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_b_valid; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_b_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [30:0] fixer_auto_out_b_bits_address; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_c_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_c_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_c_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_c_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_c_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_c_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [30:0] fixer_auto_out_c_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_out_c_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_c_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_d_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_d_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_d_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_d_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_d_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_d_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_d_bits_sink; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_d_bits_denied; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_out_d_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_d_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_e_valid; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_e_bits_sink; // @[FIFOFixer.scala 144:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [29:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [29:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_b_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_b_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_b_bits_param; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_b_bits_address; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_c_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_c_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_address; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_in_e_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_in_e_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_b_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_b_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_b_bits_param; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_b_bits_address; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_c_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_c_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_address; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_l2_auto_widget_out_e_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_l2_auto_widget_out_e_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_b_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_b_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_master_clock_xing_in_b_bits_param; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_from_tile_auto_tl_master_clock_xing_in_b_bits_address; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_c_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_c_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_address; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_master_clock_xing_in_e_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_master_clock_xing_in_e_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_tile_auto_tl_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_from_tile_auto_tl_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_tile_auto_tl_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_tile_auto_tl_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_b_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_b_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_out_b_bits_param; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_from_tile_auto_tl_out_b_bits_address; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_c_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_c_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_out_c_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_out_c_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_tile_auto_tl_out_c_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_out_c_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_from_tile_auto_tl_out_c_bits_address; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_tile_auto_tl_out_c_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_c_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_tile_auto_tl_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_out_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_tile_auto_tl_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_out_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_tile_auto_tl_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_tile_auto_tl_out_e_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_tile_auto_tl_out_e_bits_sink; // @[LazyModule.scala 432:27]
+  ClockGroupAggregator subsystem_sbus_clock_groups ( // @[BusWrapper.scala 40:48]
+    .auto_in_member_subsystem_sbus_5_clock(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_5_clock),
+    .auto_in_member_subsystem_sbus_5_reset(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_5_reset),
+    .auto_in_member_subsystem_sbus_4_clock(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_4_clock),
+    .auto_in_member_subsystem_sbus_4_reset(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_4_reset),
+    .auto_in_member_subsystem_sbus_3_clock(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_3_clock),
+    .auto_in_member_subsystem_sbus_3_reset(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_3_reset),
+    .auto_in_member_subsystem_sbus_2_clock(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_2_clock),
+    .auto_in_member_subsystem_sbus_2_reset(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_2_reset),
+    .auto_in_member_subsystem_sbus_1_clock(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_1_clock),
+    .auto_in_member_subsystem_sbus_1_reset(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_1_reset),
+    .auto_in_member_subsystem_sbus_0_clock(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_0_clock),
+    .auto_in_member_subsystem_sbus_0_reset(subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_0_reset),
+    .auto_out_3_member_subsystem_l2_1_clock(subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_1_clock),
+    .auto_out_3_member_subsystem_l2_1_reset(subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_1_reset),
+    .auto_out_3_member_subsystem_l2_0_clock(subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_0_clock),
+    .auto_out_3_member_subsystem_l2_0_reset(subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_0_reset),
+    .auto_out_2_member_subsystem_fbus_0_clock(subsystem_sbus_clock_groups_auto_out_2_member_subsystem_fbus_0_clock),
+    .auto_out_2_member_subsystem_fbus_0_reset(subsystem_sbus_clock_groups_auto_out_2_member_subsystem_fbus_0_reset),
+    .auto_out_1_member_subsystem_cbus_1_clock(subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_1_clock),
+    .auto_out_1_member_subsystem_cbus_1_reset(subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_1_reset),
+    .auto_out_1_member_subsystem_cbus_0_clock(subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_0_clock),
+    .auto_out_1_member_subsystem_cbus_0_reset(subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_0_reset),
+    .auto_out_0_member_subsystem_sbus_0_clock(subsystem_sbus_clock_groups_auto_out_0_member_subsystem_sbus_0_clock),
+    .auto_out_0_member_subsystem_sbus_0_reset(subsystem_sbus_clock_groups_auto_out_0_member_subsystem_sbus_0_reset)
+  );
+  ClockGroup clockGroup ( // @[BusWrapper.scala 41:38]
+    .auto_in_member_subsystem_sbus_0_clock(clockGroup_auto_in_member_subsystem_sbus_0_clock),
+    .auto_in_member_subsystem_sbus_0_reset(clockGroup_auto_in_member_subsystem_sbus_0_reset),
+    .auto_out_clock(clockGroup_auto_out_clock),
+    .auto_out_reset(clockGroup_auto_out_reset)
+  );
+  FixedClockBroadcast fixedClockNode ( // @[ClockGroup.scala 106:107]
+    .auto_in_clock(fixedClockNode_auto_in_clock),
+    .auto_in_reset(fixedClockNode_auto_in_reset),
+    .auto_out_2_clock(fixedClockNode_auto_out_2_clock),
+    .auto_out_2_reset(fixedClockNode_auto_out_2_reset),
+    .auto_out_0_clock(fixedClockNode_auto_out_0_clock),
+    .auto_out_0_reset(fixedClockNode_auto_out_0_reset)
+  );
+  TLXbar system_bus_xbar ( // @[SystemBus.scala 40:43]
+    .clock(system_bus_xbar_clock),
+    .reset(system_bus_xbar_reset),
+    .auto_in_a_ready(system_bus_xbar_auto_in_a_ready),
+    .auto_in_a_valid(system_bus_xbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(system_bus_xbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(system_bus_xbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(system_bus_xbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(system_bus_xbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(system_bus_xbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(system_bus_xbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(system_bus_xbar_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(system_bus_xbar_auto_in_a_bits_corrupt),
+    .auto_in_b_ready(system_bus_xbar_auto_in_b_ready),
+    .auto_in_b_valid(system_bus_xbar_auto_in_b_valid),
+    .auto_in_b_bits_param(system_bus_xbar_auto_in_b_bits_param),
+    .auto_in_b_bits_address(system_bus_xbar_auto_in_b_bits_address),
+    .auto_in_c_ready(system_bus_xbar_auto_in_c_ready),
+    .auto_in_c_valid(system_bus_xbar_auto_in_c_valid),
+    .auto_in_c_bits_opcode(system_bus_xbar_auto_in_c_bits_opcode),
+    .auto_in_c_bits_param(system_bus_xbar_auto_in_c_bits_param),
+    .auto_in_c_bits_size(system_bus_xbar_auto_in_c_bits_size),
+    .auto_in_c_bits_source(system_bus_xbar_auto_in_c_bits_source),
+    .auto_in_c_bits_address(system_bus_xbar_auto_in_c_bits_address),
+    .auto_in_c_bits_data(system_bus_xbar_auto_in_c_bits_data),
+    .auto_in_c_bits_corrupt(system_bus_xbar_auto_in_c_bits_corrupt),
+    .auto_in_d_ready(system_bus_xbar_auto_in_d_ready),
+    .auto_in_d_valid(system_bus_xbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(system_bus_xbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(system_bus_xbar_auto_in_d_bits_param),
+    .auto_in_d_bits_size(system_bus_xbar_auto_in_d_bits_size),
+    .auto_in_d_bits_source(system_bus_xbar_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(system_bus_xbar_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(system_bus_xbar_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(system_bus_xbar_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(system_bus_xbar_auto_in_d_bits_corrupt),
+    .auto_in_e_valid(system_bus_xbar_auto_in_e_valid),
+    .auto_in_e_bits_sink(system_bus_xbar_auto_in_e_bits_sink),
+    .auto_out_1_a_ready(system_bus_xbar_auto_out_1_a_ready),
+    .auto_out_1_a_valid(system_bus_xbar_auto_out_1_a_valid),
+    .auto_out_1_a_bits_opcode(system_bus_xbar_auto_out_1_a_bits_opcode),
+    .auto_out_1_a_bits_param(system_bus_xbar_auto_out_1_a_bits_param),
+    .auto_out_1_a_bits_size(system_bus_xbar_auto_out_1_a_bits_size),
+    .auto_out_1_a_bits_source(system_bus_xbar_auto_out_1_a_bits_source),
+    .auto_out_1_a_bits_address(system_bus_xbar_auto_out_1_a_bits_address),
+    .auto_out_1_a_bits_mask(system_bus_xbar_auto_out_1_a_bits_mask),
+    .auto_out_1_a_bits_data(system_bus_xbar_auto_out_1_a_bits_data),
+    .auto_out_1_a_bits_corrupt(system_bus_xbar_auto_out_1_a_bits_corrupt),
+    .auto_out_1_b_ready(system_bus_xbar_auto_out_1_b_ready),
+    .auto_out_1_b_valid(system_bus_xbar_auto_out_1_b_valid),
+    .auto_out_1_b_bits_param(system_bus_xbar_auto_out_1_b_bits_param),
+    .auto_out_1_b_bits_address(system_bus_xbar_auto_out_1_b_bits_address),
+    .auto_out_1_c_ready(system_bus_xbar_auto_out_1_c_ready),
+    .auto_out_1_c_valid(system_bus_xbar_auto_out_1_c_valid),
+    .auto_out_1_c_bits_opcode(system_bus_xbar_auto_out_1_c_bits_opcode),
+    .auto_out_1_c_bits_param(system_bus_xbar_auto_out_1_c_bits_param),
+    .auto_out_1_c_bits_size(system_bus_xbar_auto_out_1_c_bits_size),
+    .auto_out_1_c_bits_source(system_bus_xbar_auto_out_1_c_bits_source),
+    .auto_out_1_c_bits_address(system_bus_xbar_auto_out_1_c_bits_address),
+    .auto_out_1_c_bits_data(system_bus_xbar_auto_out_1_c_bits_data),
+    .auto_out_1_c_bits_corrupt(system_bus_xbar_auto_out_1_c_bits_corrupt),
+    .auto_out_1_d_ready(system_bus_xbar_auto_out_1_d_ready),
+    .auto_out_1_d_valid(system_bus_xbar_auto_out_1_d_valid),
+    .auto_out_1_d_bits_opcode(system_bus_xbar_auto_out_1_d_bits_opcode),
+    .auto_out_1_d_bits_param(system_bus_xbar_auto_out_1_d_bits_param),
+    .auto_out_1_d_bits_size(system_bus_xbar_auto_out_1_d_bits_size),
+    .auto_out_1_d_bits_source(system_bus_xbar_auto_out_1_d_bits_source),
+    .auto_out_1_d_bits_sink(system_bus_xbar_auto_out_1_d_bits_sink),
+    .auto_out_1_d_bits_data(system_bus_xbar_auto_out_1_d_bits_data),
+    .auto_out_1_e_valid(system_bus_xbar_auto_out_1_e_valid),
+    .auto_out_1_e_bits_sink(system_bus_xbar_auto_out_1_e_bits_sink),
+    .auto_out_0_a_ready(system_bus_xbar_auto_out_0_a_ready),
+    .auto_out_0_a_valid(system_bus_xbar_auto_out_0_a_valid),
+    .auto_out_0_a_bits_opcode(system_bus_xbar_auto_out_0_a_bits_opcode),
+    .auto_out_0_a_bits_param(system_bus_xbar_auto_out_0_a_bits_param),
+    .auto_out_0_a_bits_size(system_bus_xbar_auto_out_0_a_bits_size),
+    .auto_out_0_a_bits_source(system_bus_xbar_auto_out_0_a_bits_source),
+    .auto_out_0_a_bits_address(system_bus_xbar_auto_out_0_a_bits_address),
+    .auto_out_0_a_bits_mask(system_bus_xbar_auto_out_0_a_bits_mask),
+    .auto_out_0_a_bits_data(system_bus_xbar_auto_out_0_a_bits_data),
+    .auto_out_0_a_bits_corrupt(system_bus_xbar_auto_out_0_a_bits_corrupt),
+    .auto_out_0_d_ready(system_bus_xbar_auto_out_0_d_ready),
+    .auto_out_0_d_valid(system_bus_xbar_auto_out_0_d_valid),
+    .auto_out_0_d_bits_opcode(system_bus_xbar_auto_out_0_d_bits_opcode),
+    .auto_out_0_d_bits_param(system_bus_xbar_auto_out_0_d_bits_param),
+    .auto_out_0_d_bits_size(system_bus_xbar_auto_out_0_d_bits_size),
+    .auto_out_0_d_bits_source(system_bus_xbar_auto_out_0_d_bits_source),
+    .auto_out_0_d_bits_sink(system_bus_xbar_auto_out_0_d_bits_sink),
+    .auto_out_0_d_bits_denied(system_bus_xbar_auto_out_0_d_bits_denied),
+    .auto_out_0_d_bits_data(system_bus_xbar_auto_out_0_d_bits_data),
+    .auto_out_0_d_bits_corrupt(system_bus_xbar_auto_out_0_d_bits_corrupt)
+  );
+  TLFIFOFixer fixer ( // @[FIFOFixer.scala 144:27]
+    .clock(fixer_clock),
+    .reset(fixer_reset),
+    .auto_in_a_ready(fixer_auto_in_a_ready),
+    .auto_in_a_valid(fixer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fixer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fixer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fixer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fixer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fixer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fixer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fixer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fixer_auto_in_a_bits_corrupt),
+    .auto_in_b_ready(fixer_auto_in_b_ready),
+    .auto_in_b_valid(fixer_auto_in_b_valid),
+    .auto_in_b_bits_param(fixer_auto_in_b_bits_param),
+    .auto_in_b_bits_address(fixer_auto_in_b_bits_address),
+    .auto_in_c_ready(fixer_auto_in_c_ready),
+    .auto_in_c_valid(fixer_auto_in_c_valid),
+    .auto_in_c_bits_opcode(fixer_auto_in_c_bits_opcode),
+    .auto_in_c_bits_param(fixer_auto_in_c_bits_param),
+    .auto_in_c_bits_size(fixer_auto_in_c_bits_size),
+    .auto_in_c_bits_source(fixer_auto_in_c_bits_source),
+    .auto_in_c_bits_address(fixer_auto_in_c_bits_address),
+    .auto_in_c_bits_data(fixer_auto_in_c_bits_data),
+    .auto_in_c_bits_corrupt(fixer_auto_in_c_bits_corrupt),
+    .auto_in_d_ready(fixer_auto_in_d_ready),
+    .auto_in_d_valid(fixer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fixer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(fixer_auto_in_d_bits_param),
+    .auto_in_d_bits_size(fixer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fixer_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(fixer_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(fixer_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(fixer_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(fixer_auto_in_d_bits_corrupt),
+    .auto_in_e_valid(fixer_auto_in_e_valid),
+    .auto_in_e_bits_sink(fixer_auto_in_e_bits_sink),
+    .auto_out_a_ready(fixer_auto_out_a_ready),
+    .auto_out_a_valid(fixer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fixer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fixer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fixer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fixer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fixer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fixer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fixer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fixer_auto_out_a_bits_corrupt),
+    .auto_out_b_ready(fixer_auto_out_b_ready),
+    .auto_out_b_valid(fixer_auto_out_b_valid),
+    .auto_out_b_bits_param(fixer_auto_out_b_bits_param),
+    .auto_out_b_bits_address(fixer_auto_out_b_bits_address),
+    .auto_out_c_ready(fixer_auto_out_c_ready),
+    .auto_out_c_valid(fixer_auto_out_c_valid),
+    .auto_out_c_bits_opcode(fixer_auto_out_c_bits_opcode),
+    .auto_out_c_bits_param(fixer_auto_out_c_bits_param),
+    .auto_out_c_bits_size(fixer_auto_out_c_bits_size),
+    .auto_out_c_bits_source(fixer_auto_out_c_bits_source),
+    .auto_out_c_bits_address(fixer_auto_out_c_bits_address),
+    .auto_out_c_bits_data(fixer_auto_out_c_bits_data),
+    .auto_out_c_bits_corrupt(fixer_auto_out_c_bits_corrupt),
+    .auto_out_d_ready(fixer_auto_out_d_ready),
+    .auto_out_d_valid(fixer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fixer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(fixer_auto_out_d_bits_param),
+    .auto_out_d_bits_size(fixer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fixer_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(fixer_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(fixer_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(fixer_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(fixer_auto_out_d_bits_corrupt),
+    .auto_out_e_valid(fixer_auto_out_e_valid),
+    .auto_out_e_bits_sink(fixer_auto_out_e_bits_sink)
+  );
+  TLInterconnectCoupler coupler_to_bus_named_subsystem_cbus ( // @[LazyModule.scala 432:27]
+    .auto_widget_in_a_ready(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_ready),
+    .auto_widget_in_a_valid(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_valid),
+    .auto_widget_in_a_bits_opcode(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_opcode),
+    .auto_widget_in_a_bits_param(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_param),
+    .auto_widget_in_a_bits_size(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_size),
+    .auto_widget_in_a_bits_source(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_source),
+    .auto_widget_in_a_bits_address(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_address),
+    .auto_widget_in_a_bits_mask(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_mask),
+    .auto_widget_in_a_bits_data(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_data),
+    .auto_widget_in_a_bits_corrupt(coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_corrupt),
+    .auto_widget_in_d_ready(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_ready),
+    .auto_widget_in_d_valid(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_valid),
+    .auto_widget_in_d_bits_opcode(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_opcode),
+    .auto_widget_in_d_bits_param(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_param),
+    .auto_widget_in_d_bits_size(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_size),
+    .auto_widget_in_d_bits_source(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_source),
+    .auto_widget_in_d_bits_sink(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_sink),
+    .auto_widget_in_d_bits_denied(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_denied),
+    .auto_widget_in_d_bits_data(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_data),
+    .auto_widget_in_d_bits_corrupt(coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_corrupt),
+    .auto_bus_xing_out_a_ready(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_ready),
+    .auto_bus_xing_out_a_valid(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_valid),
+    .auto_bus_xing_out_a_bits_opcode(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_opcode),
+    .auto_bus_xing_out_a_bits_param(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_param),
+    .auto_bus_xing_out_a_bits_size(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_size),
+    .auto_bus_xing_out_a_bits_source(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_source),
+    .auto_bus_xing_out_a_bits_address(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_address),
+    .auto_bus_xing_out_a_bits_mask(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_mask),
+    .auto_bus_xing_out_a_bits_data(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_data),
+    .auto_bus_xing_out_a_bits_corrupt(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_corrupt),
+    .auto_bus_xing_out_d_ready(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_ready),
+    .auto_bus_xing_out_d_valid(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_valid),
+    .auto_bus_xing_out_d_bits_opcode(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_opcode),
+    .auto_bus_xing_out_d_bits_param(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_param),
+    .auto_bus_xing_out_d_bits_size(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_size),
+    .auto_bus_xing_out_d_bits_source(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_source),
+    .auto_bus_xing_out_d_bits_sink(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_sink),
+    .auto_bus_xing_out_d_bits_denied(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_denied),
+    .auto_bus_xing_out_d_bits_data(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_data),
+    .auto_bus_xing_out_d_bits_corrupt(coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_corrupt)
+  );
+  TLInterconnectCoupler_2 coupler_to_bus_named_subsystem_l2 ( // @[LazyModule.scala 432:27]
+    .auto_widget_in_a_ready(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_ready),
+    .auto_widget_in_a_valid(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_valid),
+    .auto_widget_in_a_bits_opcode(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_opcode),
+    .auto_widget_in_a_bits_param(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_param),
+    .auto_widget_in_a_bits_size(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_size),
+    .auto_widget_in_a_bits_source(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_source),
+    .auto_widget_in_a_bits_address(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_address),
+    .auto_widget_in_a_bits_mask(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_mask),
+    .auto_widget_in_a_bits_data(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_data),
+    .auto_widget_in_a_bits_corrupt(coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_corrupt),
+    .auto_widget_in_b_ready(coupler_to_bus_named_subsystem_l2_auto_widget_in_b_ready),
+    .auto_widget_in_b_valid(coupler_to_bus_named_subsystem_l2_auto_widget_in_b_valid),
+    .auto_widget_in_b_bits_param(coupler_to_bus_named_subsystem_l2_auto_widget_in_b_bits_param),
+    .auto_widget_in_b_bits_address(coupler_to_bus_named_subsystem_l2_auto_widget_in_b_bits_address),
+    .auto_widget_in_c_ready(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_ready),
+    .auto_widget_in_c_valid(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_valid),
+    .auto_widget_in_c_bits_opcode(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_opcode),
+    .auto_widget_in_c_bits_param(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_param),
+    .auto_widget_in_c_bits_size(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_size),
+    .auto_widget_in_c_bits_source(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_source),
+    .auto_widget_in_c_bits_address(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_address),
+    .auto_widget_in_c_bits_data(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_data),
+    .auto_widget_in_c_bits_corrupt(coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_corrupt),
+    .auto_widget_in_d_ready(coupler_to_bus_named_subsystem_l2_auto_widget_in_d_ready),
+    .auto_widget_in_d_valid(coupler_to_bus_named_subsystem_l2_auto_widget_in_d_valid),
+    .auto_widget_in_d_bits_opcode(coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_opcode),
+    .auto_widget_in_d_bits_param(coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_param),
+    .auto_widget_in_d_bits_size(coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_size),
+    .auto_widget_in_d_bits_source(coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_source),
+    .auto_widget_in_d_bits_sink(coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_sink),
+    .auto_widget_in_d_bits_data(coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_data),
+    .auto_widget_in_e_valid(coupler_to_bus_named_subsystem_l2_auto_widget_in_e_valid),
+    .auto_widget_in_e_bits_sink(coupler_to_bus_named_subsystem_l2_auto_widget_in_e_bits_sink),
+    .auto_widget_out_a_ready(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_ready),
+    .auto_widget_out_a_valid(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_valid),
+    .auto_widget_out_a_bits_opcode(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_opcode),
+    .auto_widget_out_a_bits_param(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_param),
+    .auto_widget_out_a_bits_size(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_size),
+    .auto_widget_out_a_bits_source(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_source),
+    .auto_widget_out_a_bits_address(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_address),
+    .auto_widget_out_a_bits_mask(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_mask),
+    .auto_widget_out_a_bits_data(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_data),
+    .auto_widget_out_a_bits_corrupt(coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_corrupt),
+    .auto_widget_out_b_ready(coupler_to_bus_named_subsystem_l2_auto_widget_out_b_ready),
+    .auto_widget_out_b_valid(coupler_to_bus_named_subsystem_l2_auto_widget_out_b_valid),
+    .auto_widget_out_b_bits_param(coupler_to_bus_named_subsystem_l2_auto_widget_out_b_bits_param),
+    .auto_widget_out_b_bits_address(coupler_to_bus_named_subsystem_l2_auto_widget_out_b_bits_address),
+    .auto_widget_out_c_ready(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_ready),
+    .auto_widget_out_c_valid(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_valid),
+    .auto_widget_out_c_bits_opcode(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_opcode),
+    .auto_widget_out_c_bits_param(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_param),
+    .auto_widget_out_c_bits_size(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_size),
+    .auto_widget_out_c_bits_source(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_source),
+    .auto_widget_out_c_bits_address(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_address),
+    .auto_widget_out_c_bits_data(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_data),
+    .auto_widget_out_c_bits_corrupt(coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_corrupt),
+    .auto_widget_out_d_ready(coupler_to_bus_named_subsystem_l2_auto_widget_out_d_ready),
+    .auto_widget_out_d_valid(coupler_to_bus_named_subsystem_l2_auto_widget_out_d_valid),
+    .auto_widget_out_d_bits_opcode(coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_opcode),
+    .auto_widget_out_d_bits_param(coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_param),
+    .auto_widget_out_d_bits_size(coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_size),
+    .auto_widget_out_d_bits_source(coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_source),
+    .auto_widget_out_d_bits_sink(coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_sink),
+    .auto_widget_out_d_bits_data(coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_data),
+    .auto_widget_out_e_valid(coupler_to_bus_named_subsystem_l2_auto_widget_out_e_valid),
+    .auto_widget_out_e_bits_sink(coupler_to_bus_named_subsystem_l2_auto_widget_out_e_bits_sink)
+  );
+  TLInterconnectCoupler_3 coupler_from_tile ( // @[LazyModule.scala 432:27]
+    .auto_tl_master_clock_xing_in_a_ready(coupler_from_tile_auto_tl_master_clock_xing_in_a_ready),
+    .auto_tl_master_clock_xing_in_a_valid(coupler_from_tile_auto_tl_master_clock_xing_in_a_valid),
+    .auto_tl_master_clock_xing_in_a_bits_opcode(coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_opcode),
+    .auto_tl_master_clock_xing_in_a_bits_param(coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_param),
+    .auto_tl_master_clock_xing_in_a_bits_size(coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_size),
+    .auto_tl_master_clock_xing_in_a_bits_source(coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_source),
+    .auto_tl_master_clock_xing_in_a_bits_address(coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_address),
+    .auto_tl_master_clock_xing_in_a_bits_mask(coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_mask),
+    .auto_tl_master_clock_xing_in_a_bits_data(coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_data),
+    .auto_tl_master_clock_xing_in_a_bits_corrupt(coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_corrupt),
+    .auto_tl_master_clock_xing_in_b_ready(coupler_from_tile_auto_tl_master_clock_xing_in_b_ready),
+    .auto_tl_master_clock_xing_in_b_valid(coupler_from_tile_auto_tl_master_clock_xing_in_b_valid),
+    .auto_tl_master_clock_xing_in_b_bits_param(coupler_from_tile_auto_tl_master_clock_xing_in_b_bits_param),
+    .auto_tl_master_clock_xing_in_b_bits_address(coupler_from_tile_auto_tl_master_clock_xing_in_b_bits_address),
+    .auto_tl_master_clock_xing_in_c_ready(coupler_from_tile_auto_tl_master_clock_xing_in_c_ready),
+    .auto_tl_master_clock_xing_in_c_valid(coupler_from_tile_auto_tl_master_clock_xing_in_c_valid),
+    .auto_tl_master_clock_xing_in_c_bits_opcode(coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_opcode),
+    .auto_tl_master_clock_xing_in_c_bits_param(coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_param),
+    .auto_tl_master_clock_xing_in_c_bits_size(coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_size),
+    .auto_tl_master_clock_xing_in_c_bits_source(coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_source),
+    .auto_tl_master_clock_xing_in_c_bits_address(coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_address),
+    .auto_tl_master_clock_xing_in_c_bits_data(coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_data),
+    .auto_tl_master_clock_xing_in_c_bits_corrupt(coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_corrupt),
+    .auto_tl_master_clock_xing_in_d_ready(coupler_from_tile_auto_tl_master_clock_xing_in_d_ready),
+    .auto_tl_master_clock_xing_in_d_valid(coupler_from_tile_auto_tl_master_clock_xing_in_d_valid),
+    .auto_tl_master_clock_xing_in_d_bits_opcode(coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_opcode),
+    .auto_tl_master_clock_xing_in_d_bits_param(coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_param),
+    .auto_tl_master_clock_xing_in_d_bits_size(coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_size),
+    .auto_tl_master_clock_xing_in_d_bits_source(coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_source),
+    .auto_tl_master_clock_xing_in_d_bits_sink(coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_sink),
+    .auto_tl_master_clock_xing_in_d_bits_denied(coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_denied),
+    .auto_tl_master_clock_xing_in_d_bits_data(coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_data),
+    .auto_tl_master_clock_xing_in_d_bits_corrupt(coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_corrupt),
+    .auto_tl_master_clock_xing_in_e_valid(coupler_from_tile_auto_tl_master_clock_xing_in_e_valid),
+    .auto_tl_master_clock_xing_in_e_bits_sink(coupler_from_tile_auto_tl_master_clock_xing_in_e_bits_sink),
+    .auto_tl_out_a_ready(coupler_from_tile_auto_tl_out_a_ready),
+    .auto_tl_out_a_valid(coupler_from_tile_auto_tl_out_a_valid),
+    .auto_tl_out_a_bits_opcode(coupler_from_tile_auto_tl_out_a_bits_opcode),
+    .auto_tl_out_a_bits_param(coupler_from_tile_auto_tl_out_a_bits_param),
+    .auto_tl_out_a_bits_size(coupler_from_tile_auto_tl_out_a_bits_size),
+    .auto_tl_out_a_bits_source(coupler_from_tile_auto_tl_out_a_bits_source),
+    .auto_tl_out_a_bits_address(coupler_from_tile_auto_tl_out_a_bits_address),
+    .auto_tl_out_a_bits_mask(coupler_from_tile_auto_tl_out_a_bits_mask),
+    .auto_tl_out_a_bits_data(coupler_from_tile_auto_tl_out_a_bits_data),
+    .auto_tl_out_a_bits_corrupt(coupler_from_tile_auto_tl_out_a_bits_corrupt),
+    .auto_tl_out_b_ready(coupler_from_tile_auto_tl_out_b_ready),
+    .auto_tl_out_b_valid(coupler_from_tile_auto_tl_out_b_valid),
+    .auto_tl_out_b_bits_param(coupler_from_tile_auto_tl_out_b_bits_param),
+    .auto_tl_out_b_bits_address(coupler_from_tile_auto_tl_out_b_bits_address),
+    .auto_tl_out_c_ready(coupler_from_tile_auto_tl_out_c_ready),
+    .auto_tl_out_c_valid(coupler_from_tile_auto_tl_out_c_valid),
+    .auto_tl_out_c_bits_opcode(coupler_from_tile_auto_tl_out_c_bits_opcode),
+    .auto_tl_out_c_bits_param(coupler_from_tile_auto_tl_out_c_bits_param),
+    .auto_tl_out_c_bits_size(coupler_from_tile_auto_tl_out_c_bits_size),
+    .auto_tl_out_c_bits_source(coupler_from_tile_auto_tl_out_c_bits_source),
+    .auto_tl_out_c_bits_address(coupler_from_tile_auto_tl_out_c_bits_address),
+    .auto_tl_out_c_bits_data(coupler_from_tile_auto_tl_out_c_bits_data),
+    .auto_tl_out_c_bits_corrupt(coupler_from_tile_auto_tl_out_c_bits_corrupt),
+    .auto_tl_out_d_ready(coupler_from_tile_auto_tl_out_d_ready),
+    .auto_tl_out_d_valid(coupler_from_tile_auto_tl_out_d_valid),
+    .auto_tl_out_d_bits_opcode(coupler_from_tile_auto_tl_out_d_bits_opcode),
+    .auto_tl_out_d_bits_param(coupler_from_tile_auto_tl_out_d_bits_param),
+    .auto_tl_out_d_bits_size(coupler_from_tile_auto_tl_out_d_bits_size),
+    .auto_tl_out_d_bits_source(coupler_from_tile_auto_tl_out_d_bits_source),
+    .auto_tl_out_d_bits_sink(coupler_from_tile_auto_tl_out_d_bits_sink),
+    .auto_tl_out_d_bits_denied(coupler_from_tile_auto_tl_out_d_bits_denied),
+    .auto_tl_out_d_bits_data(coupler_from_tile_auto_tl_out_d_bits_data),
+    .auto_tl_out_d_bits_corrupt(coupler_from_tile_auto_tl_out_d_bits_corrupt),
+    .auto_tl_out_e_valid(coupler_from_tile_auto_tl_out_e_valid),
+    .auto_tl_out_e_bits_sink(coupler_from_tile_auto_tl_out_e_bits_sink)
+  );
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_a_ready = coupler_from_tile_auto_tl_master_clock_xing_in_a_ready
+    ; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_b_valid = coupler_from_tile_auto_tl_master_clock_xing_in_b_valid
+    ; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_param =
+    coupler_from_tile_auto_tl_master_clock_xing_in_b_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_address =
+    coupler_from_tile_auto_tl_master_clock_xing_in_b_bits_address; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_c_ready = coupler_from_tile_auto_tl_master_clock_xing_in_c_ready
+    ; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_valid = coupler_from_tile_auto_tl_master_clock_xing_in_d_valid
+    ; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_opcode =
+    coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_param =
+    coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_size =
+    coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_source =
+    coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_sink =
+    coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_denied =
+    coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_denied; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_data =
+    coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_corrupt =
+    coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_valid =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_opcode =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_param =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_size =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_source =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_address =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_mask =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_data =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_corrupt =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_b_ready =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_b_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_c_valid =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_c_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_opcode =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_param =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_size =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_source =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_address =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_data =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_corrupt =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_c_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_d_ready =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_e_valid =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_e_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_l2_widget_out_e_bits_sink =
+    coupler_to_bus_named_subsystem_l2_auto_widget_out_e_bits_sink; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_valid =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_opcode =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_param =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_size =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_source =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_address =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_mask =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_data =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_corrupt =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_ready =
+    coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_1_clock = fixedClockNode_auto_out_2_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_1_reset = fixedClockNode_auto_out_2_reset; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_clock =
+    subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_1_clock; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_reset =
+    subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_1_reset; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_clock =
+    subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_reset =
+    subsystem_sbus_clock_groups_auto_out_3_member_subsystem_l2_0_reset; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_clock =
+    subsystem_sbus_clock_groups_auto_out_2_member_subsystem_fbus_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_reset =
+    subsystem_sbus_clock_groups_auto_out_2_member_subsystem_fbus_0_reset; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_clock =
+    subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_1_clock; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_reset =
+    subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_1_reset; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_clock =
+    subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_reset =
+    subsystem_sbus_clock_groups_auto_out_1_member_subsystem_cbus_0_reset; // @[LazyModule.scala 311:12]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_5_clock =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_5_reset =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_reset; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_4_clock =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_4_reset =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_reset; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_3_clock =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_3_reset =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_reset; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_2_clock =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_2_reset =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_reset; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_1_clock =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_1_reset =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_reset; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_0_clock =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_sbus_clock_groups_auto_in_member_subsystem_sbus_0_reset =
+    auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_reset; // @[LazyModule.scala 309:16]
+  assign clockGroup_auto_in_member_subsystem_sbus_0_clock =
+    subsystem_sbus_clock_groups_auto_out_0_member_subsystem_sbus_0_clock; // @[LazyModule.scala 298:16]
+  assign clockGroup_auto_in_member_subsystem_sbus_0_reset =
+    subsystem_sbus_clock_groups_auto_out_0_member_subsystem_sbus_0_reset; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_clock = clockGroup_auto_out_clock; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_reset = clockGroup_auto_out_reset; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign system_bus_xbar_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_valid = fixer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_bits_opcode = fixer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_bits_param = fixer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_bits_size = fixer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_bits_source = fixer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_bits_address = fixer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_bits_mask = fixer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_bits_data = fixer_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_a_bits_corrupt = fixer_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_b_ready = fixer_auto_out_b_ready; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_c_valid = fixer_auto_out_c_valid; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_c_bits_opcode = fixer_auto_out_c_bits_opcode; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_c_bits_param = fixer_auto_out_c_bits_param; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_c_bits_size = fixer_auto_out_c_bits_size; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_c_bits_source = fixer_auto_out_c_bits_source; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_c_bits_address = fixer_auto_out_c_bits_address; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_c_bits_data = fixer_auto_out_c_bits_data; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_c_bits_corrupt = fixer_auto_out_c_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_d_ready = fixer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_e_valid = fixer_auto_out_e_valid; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_e_bits_sink = fixer_auto_out_e_bits_sink; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_out_1_a_ready = coupler_to_bus_named_subsystem_l2_auto_widget_in_a_ready; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_b_valid = coupler_to_bus_named_subsystem_l2_auto_widget_in_b_valid; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_b_bits_param = coupler_to_bus_named_subsystem_l2_auto_widget_in_b_bits_param; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_b_bits_address = coupler_to_bus_named_subsystem_l2_auto_widget_in_b_bits_address; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_c_ready = coupler_to_bus_named_subsystem_l2_auto_widget_in_c_ready; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_d_valid = coupler_to_bus_named_subsystem_l2_auto_widget_in_d_valid; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_d_bits_opcode = coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_d_bits_param = coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_d_bits_size = coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_d_bits_source = coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_d_bits_sink = coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_1_d_bits_data = coupler_to_bus_named_subsystem_l2_auto_widget_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_a_ready = coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_ready; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_valid = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_valid; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_bits_opcode = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_bits_param = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_bits_size = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_bits_source = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_bits_sink = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_bits_denied = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_bits_data = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_0_d_bits_corrupt = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign fixer_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fixer_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fixer_auto_in_a_valid = coupler_from_tile_auto_tl_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_opcode = coupler_from_tile_auto_tl_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_param = coupler_from_tile_auto_tl_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_size = coupler_from_tile_auto_tl_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_source = coupler_from_tile_auto_tl_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_address = coupler_from_tile_auto_tl_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_mask = coupler_from_tile_auto_tl_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_data = coupler_from_tile_auto_tl_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_corrupt = coupler_from_tile_auto_tl_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_b_ready = coupler_from_tile_auto_tl_out_b_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_c_valid = coupler_from_tile_auto_tl_out_c_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_c_bits_opcode = coupler_from_tile_auto_tl_out_c_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_c_bits_param = coupler_from_tile_auto_tl_out_c_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_c_bits_size = coupler_from_tile_auto_tl_out_c_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_c_bits_source = coupler_from_tile_auto_tl_out_c_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_c_bits_address = coupler_from_tile_auto_tl_out_c_bits_address; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_c_bits_data = coupler_from_tile_auto_tl_out_c_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_c_bits_corrupt = coupler_from_tile_auto_tl_out_c_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_d_ready = coupler_from_tile_auto_tl_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_e_valid = coupler_from_tile_auto_tl_out_e_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_e_bits_sink = coupler_from_tile_auto_tl_out_e_bits_sink; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_a_ready = system_bus_xbar_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_b_valid = system_bus_xbar_auto_in_b_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_b_bits_param = system_bus_xbar_auto_in_b_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_b_bits_address = system_bus_xbar_auto_in_b_bits_address; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_c_ready = system_bus_xbar_auto_in_c_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_valid = system_bus_xbar_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_opcode = system_bus_xbar_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_param = system_bus_xbar_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_size = system_bus_xbar_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_source = system_bus_xbar_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_sink = system_bus_xbar_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_denied = system_bus_xbar_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_data = system_bus_xbar_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_corrupt = system_bus_xbar_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_valid = system_bus_xbar_auto_out_0_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_opcode = system_bus_xbar_auto_out_0_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_param = system_bus_xbar_auto_out_0_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_size = system_bus_xbar_auto_out_0_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_source = system_bus_xbar_auto_out_0_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_address = system_bus_xbar_auto_out_0_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_mask = system_bus_xbar_auto_out_0_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_data = system_bus_xbar_auto_out_0_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_corrupt = system_bus_xbar_auto_out_0_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_ready = system_bus_xbar_auto_out_0_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_ready =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_valid =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_opcode =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_param =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_param; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_size =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_source =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_sink =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_denied =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_denied; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_data =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_d_bits_corrupt =
+    auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_valid = system_bus_xbar_auto_out_1_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_opcode = system_bus_xbar_auto_out_1_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_param = system_bus_xbar_auto_out_1_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_size = system_bus_xbar_auto_out_1_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_source = system_bus_xbar_auto_out_1_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_address = system_bus_xbar_auto_out_1_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_mask = system_bus_xbar_auto_out_1_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_data = system_bus_xbar_auto_out_1_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_a_bits_corrupt = system_bus_xbar_auto_out_1_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_b_ready = system_bus_xbar_auto_out_1_b_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_c_valid = system_bus_xbar_auto_out_1_c_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_opcode = system_bus_xbar_auto_out_1_c_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_param = system_bus_xbar_auto_out_1_c_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_size = system_bus_xbar_auto_out_1_c_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_source = system_bus_xbar_auto_out_1_c_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_address = system_bus_xbar_auto_out_1_c_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_data = system_bus_xbar_auto_out_1_c_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_c_bits_corrupt = system_bus_xbar_auto_out_1_c_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_d_ready = system_bus_xbar_auto_out_1_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_e_valid = system_bus_xbar_auto_out_1_e_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_in_e_bits_sink = system_bus_xbar_auto_out_1_e_bits_sink; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_a_ready =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_b_valid =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_b_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_b_bits_param =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_param; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_b_bits_address =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_address; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_c_ready =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_c_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_d_valid =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_opcode =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_param =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_param; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_size =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_source =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_sink =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_l2_auto_widget_out_d_bits_data =
+    auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_valid = auto_coupler_from_tile_tl_master_clock_xing_in_a_valid
+    ; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_opcode =
+    auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_param =
+    auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_size =
+    auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_source =
+    auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_address =
+    auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_mask =
+    auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_data =
+    auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_corrupt =
+    auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_b_ready = auto_coupler_from_tile_tl_master_clock_xing_in_b_ready
+    ; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_c_valid = auto_coupler_from_tile_tl_master_clock_xing_in_c_valid
+    ; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_opcode =
+    auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_opcode; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_param =
+    auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_param; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_size =
+    auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_size; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_source =
+    auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_source; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_address =
+    auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_address; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_data =
+    auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_data; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_c_bits_corrupt =
+    auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_d_ready = auto_coupler_from_tile_tl_master_clock_xing_in_d_ready
+    ; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_e_valid = auto_coupler_from_tile_tl_master_clock_xing_in_e_valid
+    ; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_master_clock_xing_in_e_bits_sink =
+    auto_coupler_from_tile_tl_master_clock_xing_in_e_bits_sink; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_out_a_ready = fixer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_b_valid = fixer_auto_in_b_valid; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_b_bits_param = fixer_auto_in_b_bits_param; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_b_bits_address = fixer_auto_in_b_bits_address; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_c_ready = fixer_auto_in_c_ready; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_valid = fixer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_opcode = fixer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_param = fixer_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_size = fixer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_source = fixer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_sink = fixer_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_denied = fixer_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_data = fixer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_corrupt = fixer_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+endmodule
+module ClockGroupAggregator_1(
+  input   auto_in_member_subsystem_pbus_0_clock,
+  input   auto_in_member_subsystem_pbus_0_reset,
+  output  auto_out_member_subsystem_pbus_0_clock,
+  output  auto_out_member_subsystem_pbus_0_reset
+);
+  assign auto_out_member_subsystem_pbus_0_clock = auto_in_member_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_member_subsystem_pbus_0_reset = auto_in_member_subsystem_pbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockGroup_1(
+  input   auto_in_member_subsystem_pbus_0_clock,
+  input   auto_in_member_subsystem_pbus_0_reset,
+  output  auto_out_clock,
+  output  auto_out_reset
+);
+  assign auto_out_clock = auto_in_member_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_reset = auto_in_member_subsystem_pbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module FixedClockBroadcast_1(
+  input   auto_in_clock,
+  input   auto_in_reset,
+  output  auto_out_14_clock,
+  output  auto_out_14_reset,
+  output  auto_out_13_clock,
+  output  auto_out_13_reset,
+  output  auto_out_12_clock,
+  output  auto_out_12_reset,
+  output  auto_out_11_clock,
+  output  auto_out_11_reset,
+  output  auto_out_10_clock,
+  output  auto_out_10_reset,
+  output  auto_out_9_clock,
+  output  auto_out_9_reset,
+  output  auto_out_8_clock,
+  output  auto_out_8_reset,
+  output  auto_out_7_clock,
+  output  auto_out_7_reset,
+  output  auto_out_6_clock,
+  output  auto_out_6_reset,
+  output  auto_out_5_clock,
+  output  auto_out_5_reset,
+  output  auto_out_4_clock,
+  output  auto_out_4_reset,
+  output  auto_out_3_clock,
+  output  auto_out_3_reset,
+  output  auto_out_2_clock,
+  output  auto_out_2_reset,
+  output  auto_out_1_clock,
+  output  auto_out_1_reset,
+  output  auto_out_0_clock,
+  output  auto_out_0_reset
+);
+  assign auto_out_14_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_14_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_2(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_45 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_48 = $signed(_T_46) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79; // @[Parameters.scala 671:42]
+  wire  _T_91 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84; // @[Parameters.scala 671:42]
+  wire  _T_101 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_102 = _source_ok_T & _T_101; // @[Mux.scala 27:73]
+  wire  _T_160 = _T_102 & _T_91; // @[Monitor.scala 83:78]
+  wire  _T_174 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_178 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_179 = _T_178 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_183 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_187 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_332 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_345 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_360 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_410 = _T_360 & _T_91; // @[Parameters.scala 670:56]
+  wire  _T_421 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_425 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_433 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_489 = _T_360 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_499 = source_ok & _T_489; // @[Monitor.scala 115:71]
+  wire  _T_517 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_597 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_598 = io_in_a_bits_mask & _T_597; // @[Monitor.scala 127:31]
+  wire  _T_599 = _T_598 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_603 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_674 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_682 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_753 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_761 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_832 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_844 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_848 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_852 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_868 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_896 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_925 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_942 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_960 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_990 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_991 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_995 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_999 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1003 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1007 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_1014 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1015 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1023 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1027 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1041 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_1044 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1046 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1048 = ~_T_1046[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1052 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1054 = ~_T_848; // @[Monitor.scala 671:74]
+  wire  _T_1055 = io_in_d_valid & d_first_1 & ~_T_848; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1054 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1054 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1041 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1065 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1067 = _T_1065[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1072 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1073 = io_in_d_bits_opcode == _GEN_32 | _T_1072; // @[Monitor.scala 685:77]
+  wire  _T_1077 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1084 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1085 = io_in_d_bits_opcode == _GEN_48 | _T_1084; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1089 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1099 = _T_1052 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1054; // @[Monitor.scala 694:116]
+  wire  _T_1101 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1110 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1136 = io_in_d_valid & d_first_2 & _T_848; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_848 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_848 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_1144 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_1154 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1174 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_332 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_332) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_410 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_410) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_674 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_674) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_753 & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~_T_753) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_832 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_832) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_844 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_844) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_925 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_925 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_942 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_942 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_960 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_960 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_991 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_991) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_995 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_995) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_999 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_999) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1003 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_1003) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1007 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_1007) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1015 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1015) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1023 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1023) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1027 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1027) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1048 & (_T_1044 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1044 & ~reset & ~_T_1048) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1067 & (_T_1055 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & _T_2 & ~_T_1067) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1073 & (_T_1055 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & same_cycle_resp & _T_2 & ~_T_1073) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1077 & (_T_1055 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & same_cycle_resp & _T_2 & ~_T_1077) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1085 & (_T_1055 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & ~same_cycle_resp & _T_2 & ~_T_1085) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1089 & (_T_1055 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & ~same_cycle_resp & _T_2 & ~_T_1089) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1101 & (_T_1099 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1099 & _T_2 & ~_T_1101) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1110 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1110) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1144[0] & (_T_1136 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1136 & _T_2 & ~_T_1144[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1154 & (_T_1136 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1136 & _T_2 & ~_T_1154) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1174 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFIFOFixer_1(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  TLMonitor_2 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_in_a_ready = auto_out_a_ready; // @[FIFOFixer.scala 88:33]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[FIFOFixer.scala 87:33]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_out_a_ready; // @[FIFOFixer.scala 88:33]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLXbar_1(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Xbar.scala 228:69]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Xbar.scala 323:53]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_3(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_45 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_48 = $signed(_T_46) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79; // @[Parameters.scala 671:42]
+  wire  _T_91 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84; // @[Parameters.scala 671:42]
+  wire  _T_101 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_102 = _source_ok_T & _T_101; // @[Mux.scala 27:73]
+  wire  _T_160 = _T_102 & _T_91; // @[Monitor.scala 83:78]
+  wire  _T_174 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_178 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_179 = _T_178 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_183 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_187 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_332 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_345 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_360 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_410 = _T_360 & _T_91; // @[Parameters.scala 670:56]
+  wire  _T_421 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_425 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_433 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_489 = _T_360 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_499 = source_ok & _T_489; // @[Monitor.scala 115:71]
+  wire  _T_517 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_597 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_598 = io_in_a_bits_mask & _T_597; // @[Monitor.scala 127:31]
+  wire  _T_599 = _T_598 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_603 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_674 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_682 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_753 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_761 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_832 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_844 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_848 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_852 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_868 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_896 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_925 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_942 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_960 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_990 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_991 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_995 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_999 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1003 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1007 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_1014 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1015 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1023 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1027 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1041 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_1044 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1046 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1048 = ~_T_1046[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1052 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1054 = ~_T_848; // @[Monitor.scala 671:74]
+  wire  _T_1055 = io_in_d_valid & d_first_1 & ~_T_848; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1054 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1054 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1041 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1065 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1067 = _T_1065[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1072 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1073 = io_in_d_bits_opcode == _GEN_32 | _T_1072; // @[Monitor.scala 685:77]
+  wire  _T_1077 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1084 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1085 = io_in_d_bits_opcode == _GEN_48 | _T_1084; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1089 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1099 = _T_1052 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1054; // @[Monitor.scala 694:116]
+  wire  _T_1101 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1110 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1136 = io_in_d_valid & d_first_2 & _T_848; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_848 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_848 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_1144 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_1154 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1174 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_332 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_332) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_410 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_410) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_674 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_674) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_753 & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~_T_753) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_832 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_832) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_844 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_844) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_925 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_925 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_942 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_942 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_960 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_960 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_991 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_991) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_995 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_995) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_999 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_999) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1003 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_1003) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1007 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_1007) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1015 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1015) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1023 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1023) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1027 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1027) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1048 & (_T_1044 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1044 & ~reset & ~_T_1048) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1067 & (_T_1055 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & _T_2 & ~_T_1067) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1073 & (_T_1055 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & same_cycle_resp & _T_2 & ~_T_1073) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1077 & (_T_1055 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & same_cycle_resp & _T_2 & ~_T_1077) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1085 & (_T_1055 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & ~same_cycle_resp & _T_2 & ~_T_1085) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1089 & (_T_1055 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & ~same_cycle_resp & _T_2 & ~_T_1089) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1101 & (_T_1099 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1099 & _T_2 & ~_T_1101) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1110 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1110) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1144[0] & (_T_1136 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1136 & _T_2 & ~_T_1144[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1154 & (_T_1136 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1136 & _T_2 & ~_T_1154) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1174 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLXbar_2(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_14_a_ready,
+  output        auto_out_14_a_valid,
+  output [2:0]  auto_out_14_a_bits_opcode,
+  output [2:0]  auto_out_14_a_bits_param,
+  output [2:0]  auto_out_14_a_bits_size,
+  output [1:0]  auto_out_14_a_bits_source,
+  output [28:0] auto_out_14_a_bits_address,
+  output [3:0]  auto_out_14_a_bits_mask,
+  output [31:0] auto_out_14_a_bits_data,
+  output        auto_out_14_a_bits_corrupt,
+  output        auto_out_14_d_ready,
+  input         auto_out_14_d_valid,
+  input  [2:0]  auto_out_14_d_bits_opcode,
+  input  [2:0]  auto_out_14_d_bits_size,
+  input  [1:0]  auto_out_14_d_bits_source,
+  input  [31:0] auto_out_14_d_bits_data,
+  input         auto_out_13_a_ready,
+  output        auto_out_13_a_valid,
+  output [2:0]  auto_out_13_a_bits_opcode,
+  output [2:0]  auto_out_13_a_bits_param,
+  output [2:0]  auto_out_13_a_bits_size,
+  output [1:0]  auto_out_13_a_bits_source,
+  output [28:0] auto_out_13_a_bits_address,
+  output [3:0]  auto_out_13_a_bits_mask,
+  output [31:0] auto_out_13_a_bits_data,
+  output        auto_out_13_a_bits_corrupt,
+  output        auto_out_13_d_ready,
+  input         auto_out_13_d_valid,
+  input  [2:0]  auto_out_13_d_bits_opcode,
+  input  [2:0]  auto_out_13_d_bits_size,
+  input  [1:0]  auto_out_13_d_bits_source,
+  input  [31:0] auto_out_13_d_bits_data,
+  input         auto_out_12_a_ready,
+  output        auto_out_12_a_valid,
+  output [2:0]  auto_out_12_a_bits_opcode,
+  output [2:0]  auto_out_12_a_bits_param,
+  output [2:0]  auto_out_12_a_bits_size,
+  output [1:0]  auto_out_12_a_bits_source,
+  output [28:0] auto_out_12_a_bits_address,
+  output [3:0]  auto_out_12_a_bits_mask,
+  output [31:0] auto_out_12_a_bits_data,
+  output        auto_out_12_a_bits_corrupt,
+  output        auto_out_12_d_ready,
+  input         auto_out_12_d_valid,
+  input  [2:0]  auto_out_12_d_bits_opcode,
+  input  [2:0]  auto_out_12_d_bits_size,
+  input  [1:0]  auto_out_12_d_bits_source,
+  input  [31:0] auto_out_12_d_bits_data,
+  input         auto_out_11_a_ready,
+  output        auto_out_11_a_valid,
+  output [2:0]  auto_out_11_a_bits_opcode,
+  output [2:0]  auto_out_11_a_bits_param,
+  output [2:0]  auto_out_11_a_bits_size,
+  output [1:0]  auto_out_11_a_bits_source,
+  output [28:0] auto_out_11_a_bits_address,
+  output [3:0]  auto_out_11_a_bits_mask,
+  output [31:0] auto_out_11_a_bits_data,
+  output        auto_out_11_a_bits_corrupt,
+  output        auto_out_11_d_ready,
+  input         auto_out_11_d_valid,
+  input  [2:0]  auto_out_11_d_bits_opcode,
+  input  [2:0]  auto_out_11_d_bits_size,
+  input  [1:0]  auto_out_11_d_bits_source,
+  input  [31:0] auto_out_11_d_bits_data,
+  input         auto_out_10_a_ready,
+  output        auto_out_10_a_valid,
+  output [2:0]  auto_out_10_a_bits_opcode,
+  output [2:0]  auto_out_10_a_bits_param,
+  output [2:0]  auto_out_10_a_bits_size,
+  output [1:0]  auto_out_10_a_bits_source,
+  output [28:0] auto_out_10_a_bits_address,
+  output [3:0]  auto_out_10_a_bits_mask,
+  output [31:0] auto_out_10_a_bits_data,
+  output        auto_out_10_a_bits_corrupt,
+  output        auto_out_10_d_ready,
+  input         auto_out_10_d_valid,
+  input  [2:0]  auto_out_10_d_bits_opcode,
+  input  [2:0]  auto_out_10_d_bits_size,
+  input  [1:0]  auto_out_10_d_bits_source,
+  input  [31:0] auto_out_10_d_bits_data,
+  input         auto_out_9_a_ready,
+  output        auto_out_9_a_valid,
+  output [2:0]  auto_out_9_a_bits_opcode,
+  output [2:0]  auto_out_9_a_bits_param,
+  output [2:0]  auto_out_9_a_bits_size,
+  output [1:0]  auto_out_9_a_bits_source,
+  output [28:0] auto_out_9_a_bits_address,
+  output [3:0]  auto_out_9_a_bits_mask,
+  output [31:0] auto_out_9_a_bits_data,
+  output        auto_out_9_a_bits_corrupt,
+  output        auto_out_9_d_ready,
+  input         auto_out_9_d_valid,
+  input  [2:0]  auto_out_9_d_bits_opcode,
+  input  [2:0]  auto_out_9_d_bits_size,
+  input  [1:0]  auto_out_9_d_bits_source,
+  input  [31:0] auto_out_9_d_bits_data,
+  input         auto_out_8_a_ready,
+  output        auto_out_8_a_valid,
+  output [2:0]  auto_out_8_a_bits_opcode,
+  output [2:0]  auto_out_8_a_bits_param,
+  output [2:0]  auto_out_8_a_bits_size,
+  output [1:0]  auto_out_8_a_bits_source,
+  output [28:0] auto_out_8_a_bits_address,
+  output [3:0]  auto_out_8_a_bits_mask,
+  output [31:0] auto_out_8_a_bits_data,
+  output        auto_out_8_a_bits_corrupt,
+  output        auto_out_8_d_ready,
+  input         auto_out_8_d_valid,
+  input  [2:0]  auto_out_8_d_bits_opcode,
+  input  [2:0]  auto_out_8_d_bits_size,
+  input  [1:0]  auto_out_8_d_bits_source,
+  input  [31:0] auto_out_8_d_bits_data,
+  input         auto_out_7_a_ready,
+  output        auto_out_7_a_valid,
+  output [2:0]  auto_out_7_a_bits_opcode,
+  output [2:0]  auto_out_7_a_bits_param,
+  output [2:0]  auto_out_7_a_bits_size,
+  output [1:0]  auto_out_7_a_bits_source,
+  output [28:0] auto_out_7_a_bits_address,
+  output [3:0]  auto_out_7_a_bits_mask,
+  output [31:0] auto_out_7_a_bits_data,
+  output        auto_out_7_a_bits_corrupt,
+  output        auto_out_7_d_ready,
+  input         auto_out_7_d_valid,
+  input  [2:0]  auto_out_7_d_bits_opcode,
+  input  [2:0]  auto_out_7_d_bits_size,
+  input  [1:0]  auto_out_7_d_bits_source,
+  input  [31:0] auto_out_7_d_bits_data,
+  input         auto_out_6_a_ready,
+  output        auto_out_6_a_valid,
+  output [2:0]  auto_out_6_a_bits_opcode,
+  output [2:0]  auto_out_6_a_bits_param,
+  output [2:0]  auto_out_6_a_bits_size,
+  output [1:0]  auto_out_6_a_bits_source,
+  output [29:0] auto_out_6_a_bits_address,
+  output [3:0]  auto_out_6_a_bits_mask,
+  output        auto_out_6_a_bits_corrupt,
+  output        auto_out_6_d_ready,
+  input         auto_out_6_d_valid,
+  input  [2:0]  auto_out_6_d_bits_size,
+  input  [1:0]  auto_out_6_d_bits_source,
+  input  [31:0] auto_out_6_d_bits_data,
+  input         auto_out_5_a_ready,
+  output        auto_out_5_a_valid,
+  output [2:0]  auto_out_5_a_bits_opcode,
+  output [2:0]  auto_out_5_a_bits_param,
+  output [2:0]  auto_out_5_a_bits_size,
+  output [1:0]  auto_out_5_a_bits_source,
+  output [28:0] auto_out_5_a_bits_address,
+  output [3:0]  auto_out_5_a_bits_mask,
+  output [31:0] auto_out_5_a_bits_data,
+  output        auto_out_5_a_bits_corrupt,
+  output        auto_out_5_d_ready,
+  input         auto_out_5_d_valid,
+  input  [2:0]  auto_out_5_d_bits_opcode,
+  input  [2:0]  auto_out_5_d_bits_size,
+  input  [1:0]  auto_out_5_d_bits_source,
+  input  [31:0] auto_out_5_d_bits_data,
+  input         auto_out_4_a_ready,
+  output        auto_out_4_a_valid,
+  output [2:0]  auto_out_4_a_bits_opcode,
+  output [2:0]  auto_out_4_a_bits_param,
+  output [2:0]  auto_out_4_a_bits_size,
+  output [1:0]  auto_out_4_a_bits_source,
+  output [28:0] auto_out_4_a_bits_address,
+  output [3:0]  auto_out_4_a_bits_mask,
+  output [31:0] auto_out_4_a_bits_data,
+  output        auto_out_4_a_bits_corrupt,
+  output        auto_out_4_d_ready,
+  input         auto_out_4_d_valid,
+  input  [2:0]  auto_out_4_d_bits_opcode,
+  input  [2:0]  auto_out_4_d_bits_size,
+  input  [1:0]  auto_out_4_d_bits_source,
+  input  [31:0] auto_out_4_d_bits_data,
+  input         auto_out_3_a_ready,
+  output        auto_out_3_a_valid,
+  output [2:0]  auto_out_3_a_bits_opcode,
+  output [2:0]  auto_out_3_a_bits_param,
+  output [2:0]  auto_out_3_a_bits_size,
+  output [1:0]  auto_out_3_a_bits_source,
+  output [28:0] auto_out_3_a_bits_address,
+  output [3:0]  auto_out_3_a_bits_mask,
+  output [31:0] auto_out_3_a_bits_data,
+  output        auto_out_3_a_bits_corrupt,
+  output        auto_out_3_d_ready,
+  input         auto_out_3_d_valid,
+  input  [2:0]  auto_out_3_d_bits_opcode,
+  input  [2:0]  auto_out_3_d_bits_size,
+  input  [1:0]  auto_out_3_d_bits_source,
+  input  [31:0] auto_out_3_d_bits_data,
+  input         auto_out_2_a_ready,
+  output        auto_out_2_a_valid,
+  output [2:0]  auto_out_2_a_bits_opcode,
+  output [2:0]  auto_out_2_a_bits_param,
+  output [2:0]  auto_out_2_a_bits_size,
+  output [1:0]  auto_out_2_a_bits_source,
+  output [28:0] auto_out_2_a_bits_address,
+  output [3:0]  auto_out_2_a_bits_mask,
+  output [31:0] auto_out_2_a_bits_data,
+  output        auto_out_2_a_bits_corrupt,
+  output        auto_out_2_d_ready,
+  input         auto_out_2_d_valid,
+  input  [2:0]  auto_out_2_d_bits_opcode,
+  input  [2:0]  auto_out_2_d_bits_size,
+  input  [1:0]  auto_out_2_d_bits_source,
+  input  [31:0] auto_out_2_d_bits_data,
+  input         auto_out_1_a_ready,
+  output        auto_out_1_a_valid,
+  output [2:0]  auto_out_1_a_bits_opcode,
+  output [2:0]  auto_out_1_a_bits_param,
+  output [2:0]  auto_out_1_a_bits_size,
+  output [1:0]  auto_out_1_a_bits_source,
+  output [28:0] auto_out_1_a_bits_address,
+  output [3:0]  auto_out_1_a_bits_mask,
+  output [31:0] auto_out_1_a_bits_data,
+  output        auto_out_1_a_bits_corrupt,
+  output        auto_out_1_d_ready,
+  input         auto_out_1_d_valid,
+  input  [2:0]  auto_out_1_d_bits_opcode,
+  input  [2:0]  auto_out_1_d_bits_size,
+  input  [1:0]  auto_out_1_d_bits_source,
+  input  [31:0] auto_out_1_d_bits_data,
+  input         auto_out_0_a_ready,
+  output        auto_out_0_a_valid,
+  output [2:0]  auto_out_0_a_bits_opcode,
+  output [2:0]  auto_out_0_a_bits_param,
+  output [2:0]  auto_out_0_a_bits_size,
+  output [1:0]  auto_out_0_a_bits_source,
+  output [28:0] auto_out_0_a_bits_address,
+  output [3:0]  auto_out_0_a_bits_mask,
+  output [31:0] auto_out_0_a_bits_data,
+  output        auto_out_0_a_bits_corrupt,
+  output        auto_out_0_d_ready,
+  input         auto_out_0_d_valid,
+  input  [2:0]  auto_out_0_d_bits_opcode,
+  input  [2:0]  auto_out_0_d_bits_size,
+  input  [1:0]  auto_out_0_d_bits_source,
+  input  [31:0] auto_out_0_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  reg [3:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 4'h0; // @[Arbiter.scala 88:28]
+  wire [6:0] readys_lo = {auto_out_6_d_valid,auto_out_5_d_valid,auto_out_4_d_valid,auto_out_3_d_valid,auto_out_2_d_valid
+    ,auto_out_1_d_valid,auto_out_0_d_valid}; // @[Cat.scala 31:58]
+  wire [14:0] readys_valid = {auto_out_14_d_valid,auto_out_13_d_valid,auto_out_12_d_valid,auto_out_11_d_valid,
+    auto_out_10_d_valid,auto_out_9_d_valid,auto_out_8_d_valid,auto_out_7_d_valid,readys_lo}; // @[Cat.scala 31:58]
+  reg [14:0] readys_mask; // @[Arbiter.scala 23:23]
+  wire [14:0] _readys_filter_T = ~readys_mask; // @[Arbiter.scala 24:30]
+  wire [14:0] _readys_filter_T_1 = readys_valid & _readys_filter_T; // @[Arbiter.scala 24:28]
+  wire [29:0] readys_filter = {_readys_filter_T_1,auto_out_14_d_valid,auto_out_13_d_valid,auto_out_12_d_valid,
+    auto_out_11_d_valid,auto_out_10_d_valid,auto_out_9_d_valid,auto_out_8_d_valid,auto_out_7_d_valid,readys_lo}; // @[Cat.scala 31:58]
+  wire [29:0] _GEN_1 = {{1'd0}, readys_filter[29:1]}; // @[package.scala 253:43]
+  wire [29:0] _readys_unready_T_1 = readys_filter | _GEN_1; // @[package.scala 253:43]
+  wire [29:0] _GEN_2 = {{2'd0}, _readys_unready_T_1[29:2]}; // @[package.scala 253:43]
+  wire [29:0] _readys_unready_T_3 = _readys_unready_T_1 | _GEN_2; // @[package.scala 253:43]
+  wire [29:0] _GEN_3 = {{4'd0}, _readys_unready_T_3[29:4]}; // @[package.scala 253:43]
+  wire [29:0] _readys_unready_T_5 = _readys_unready_T_3 | _GEN_3; // @[package.scala 253:43]
+  wire [29:0] _GEN_4 = {{8'd0}, _readys_unready_T_5[29:8]}; // @[package.scala 253:43]
+  wire [29:0] _readys_unready_T_7 = _readys_unready_T_5 | _GEN_4; // @[package.scala 253:43]
+  wire [29:0] _readys_unready_T_10 = {readys_mask, 15'h0}; // @[Arbiter.scala 25:66]
+  wire [29:0] _GEN_5 = {{1'd0}, _readys_unready_T_7[29:1]}; // @[Arbiter.scala 25:58]
+  wire [29:0] readys_unready = _GEN_5 | _readys_unready_T_10; // @[Arbiter.scala 25:58]
+  wire [14:0] _readys_readys_T_2 = readys_unready[29:15] & readys_unready[14:0]; // @[Arbiter.scala 26:39]
+  wire [14:0] readys_readys = ~_readys_readys_T_2; // @[Arbiter.scala 26:18]
+  wire  readys_0 = readys_readys[0]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_0 = readys_0 & auto_out_0_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_0; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_0 = idle ? earlyWinner_0 : state_0; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_244 = muxStateEarly_0 ? auto_out_0_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire  readys_1 = readys_readys[1]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_1 = readys_1 & auto_out_1_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_1; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1 = idle ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_245 = muxStateEarly_1 ? auto_out_1_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_259 = _T_244 | _T_245; // @[Mux.scala 27:73]
+  wire  readys_2 = readys_readys[2]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_2 = readys_2 & auto_out_2_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_2; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_2 = idle ? earlyWinner_2 : state_2; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_246 = muxStateEarly_2 ? auto_out_2_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_260 = _T_259 | _T_246; // @[Mux.scala 27:73]
+  wire  readys_3 = readys_readys[3]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_3 = readys_3 & auto_out_3_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_3; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_3 = idle ? earlyWinner_3 : state_3; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_247 = muxStateEarly_3 ? auto_out_3_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_261 = _T_260 | _T_247; // @[Mux.scala 27:73]
+  wire  readys_4 = readys_readys[4]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_4 = readys_4 & auto_out_4_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_4; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_4 = idle ? earlyWinner_4 : state_4; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_248 = muxStateEarly_4 ? auto_out_4_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_262 = _T_261 | _T_248; // @[Mux.scala 27:73]
+  wire  readys_5 = readys_readys[5]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_5 = readys_5 & auto_out_5_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_5; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_5 = idle ? earlyWinner_5 : state_5; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_249 = muxStateEarly_5 ? auto_out_5_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_263 = _T_262 | _T_249; // @[Mux.scala 27:73]
+  wire  readys_6 = readys_readys[6]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_6 = readys_6 & auto_out_6_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_6; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_6 = idle ? earlyWinner_6 : state_6; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_250 = muxStateEarly_6 ? auto_out_6_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_264 = _T_263 | _T_250; // @[Mux.scala 27:73]
+  wire  readys_7 = readys_readys[7]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_7 = readys_7 & auto_out_7_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_7; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_7 = idle ? earlyWinner_7 : state_7; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_251 = muxStateEarly_7 ? auto_out_7_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_265 = _T_264 | _T_251; // @[Mux.scala 27:73]
+  wire  readys_8 = readys_readys[8]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_8 = readys_8 & auto_out_8_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_8; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_8 = idle ? earlyWinner_8 : state_8; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_252 = muxStateEarly_8 ? auto_out_8_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_266 = _T_265 | _T_252; // @[Mux.scala 27:73]
+  wire  readys_9 = readys_readys[9]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_9 = readys_9 & auto_out_9_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_9; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_9 = idle ? earlyWinner_9 : state_9; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_253 = muxStateEarly_9 ? auto_out_9_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_267 = _T_266 | _T_253; // @[Mux.scala 27:73]
+  wire  readys_10 = readys_readys[10]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_10 = readys_10 & auto_out_10_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_10; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_10 = idle ? earlyWinner_10 : state_10; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_254 = muxStateEarly_10 ? auto_out_10_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_268 = _T_267 | _T_254; // @[Mux.scala 27:73]
+  wire  readys_11 = readys_readys[11]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_11 = readys_11 & auto_out_11_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_11; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_11 = idle ? earlyWinner_11 : state_11; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_255 = muxStateEarly_11 ? auto_out_11_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_269 = _T_268 | _T_255; // @[Mux.scala 27:73]
+  wire  readys_12 = readys_readys[12]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_12 = readys_12 & auto_out_12_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_12; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_12 = idle ? earlyWinner_12 : state_12; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_256 = muxStateEarly_12 ? auto_out_12_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_270 = _T_269 | _T_256; // @[Mux.scala 27:73]
+  wire  readys_13 = readys_readys[13]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_13 = readys_13 & auto_out_13_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_13; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_13 = idle ? earlyWinner_13 : state_13; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_257 = muxStateEarly_13 ? auto_out_13_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_271 = _T_270 | _T_257; // @[Mux.scala 27:73]
+  wire  readys_14 = readys_readys[14]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_14 = readys_14 & auto_out_14_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_14; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_14 = idle ? earlyWinner_14 : state_14; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_258 = muxStateEarly_14 ? auto_out_14_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [29:0] _requestAIO_T = auto_in_a_bits_address ^ 30'h13000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_1 = {1'b0,$signed(_requestAIO_T)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_3 = $signed(_requestAIO_T_1) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_0 = $signed(_requestAIO_T_3) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_5 = auto_in_a_bits_address ^ 30'h23000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_6 = {1'b0,$signed(_requestAIO_T_5)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_8 = $signed(_requestAIO_T_6) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_1 = $signed(_requestAIO_T_8) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_10 = auto_in_a_bits_address ^ 30'h33000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_11 = {1'b0,$signed(_requestAIO_T_10)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_13 = $signed(_requestAIO_T_11) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_2 = $signed(_requestAIO_T_13) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_15 = auto_in_a_bits_address ^ 30'h43000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_16 = {1'b0,$signed(_requestAIO_T_15)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_18 = $signed(_requestAIO_T_16) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_3 = $signed(_requestAIO_T_18) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_20 = auto_in_a_bits_address ^ 30'h53000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_21 = {1'b0,$signed(_requestAIO_T_20)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_23 = $signed(_requestAIO_T_21) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_4 = $signed(_requestAIO_T_23) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_25 = auto_in_a_bits_address ^ 30'h14000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_26 = {1'b0,$signed(_requestAIO_T_25)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_28 = $signed(_requestAIO_T_26) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_5 = $signed(_requestAIO_T_28) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_30 = auto_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_31 = {1'b0,$signed(_requestAIO_T_30)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_33 = $signed(_requestAIO_T_31) & 31'sh20000000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_6 = $signed(_requestAIO_T_33) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_35 = auto_in_a_bits_address ^ 30'h34000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_36 = {1'b0,$signed(_requestAIO_T_35)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_38 = $signed(_requestAIO_T_36) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_7 = $signed(_requestAIO_T_38) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_40 = auto_in_a_bits_address ^ 30'h24000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_41 = {1'b0,$signed(_requestAIO_T_40)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_43 = $signed(_requestAIO_T_41) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_8 = $signed(_requestAIO_T_43) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_45 = auto_in_a_bits_address ^ 30'h12000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_46 = {1'b0,$signed(_requestAIO_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_48 = $signed(_requestAIO_T_46) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_9 = $signed(_requestAIO_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_50 = auto_in_a_bits_address ^ 30'h15000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_51 = {1'b0,$signed(_requestAIO_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_53 = $signed(_requestAIO_T_51) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_10 = $signed(_requestAIO_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_55 = auto_in_a_bits_address ^ 30'h25000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_56 = {1'b0,$signed(_requestAIO_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_58 = $signed(_requestAIO_T_56) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_11 = $signed(_requestAIO_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_60 = auto_in_a_bits_address ^ 30'h35000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_61 = {1'b0,$signed(_requestAIO_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_63 = $signed(_requestAIO_T_61) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_12 = $signed(_requestAIO_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_65 = auto_in_a_bits_address ^ 30'h16000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_66 = {1'b0,$signed(_requestAIO_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_68 = $signed(_requestAIO_T_66) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_13 = $signed(_requestAIO_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_70 = auto_in_a_bits_address ^ 30'h26000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_71 = {1'b0,$signed(_requestAIO_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_73 = $signed(_requestAIO_T_71) & 31'sh20077000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_14 = $signed(_requestAIO_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [12:0] _beatsDO_decode_T_1 = 13'h3f << auto_out_0_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_3 = ~_beatsDO_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode = _beatsDO_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata = auto_out_0_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_0 = beatsDO_opdata ? beatsDO_decode : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_5 = 13'h3f << auto_out_1_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_7 = ~_beatsDO_decode_T_5[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_1 = _beatsDO_decode_T_7[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_1 = auto_out_1_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_1 = beatsDO_opdata_1 ? beatsDO_decode_1 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_9 = 13'h3f << auto_out_2_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_11 = ~_beatsDO_decode_T_9[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_2 = _beatsDO_decode_T_11[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_2 = auto_out_2_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_2 = beatsDO_opdata_2 ? beatsDO_decode_2 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_13 = 13'h3f << auto_out_3_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_15 = ~_beatsDO_decode_T_13[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_3 = _beatsDO_decode_T_15[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_3 = auto_out_3_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_3 = beatsDO_opdata_3 ? beatsDO_decode_3 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_17 = 13'h3f << auto_out_4_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_19 = ~_beatsDO_decode_T_17[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_4 = _beatsDO_decode_T_19[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_4 = auto_out_4_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_4 = beatsDO_opdata_4 ? beatsDO_decode_4 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_21 = 13'h3f << auto_out_5_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_23 = ~_beatsDO_decode_T_21[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_5 = _beatsDO_decode_T_23[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_5 = auto_out_5_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_5 = beatsDO_opdata_5 ? beatsDO_decode_5 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_25 = 13'h3f << auto_out_6_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_27 = ~_beatsDO_decode_T_25[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_6 = _beatsDO_decode_T_27[5:2]; // @[Edges.scala 219:59]
+  wire [12:0] _beatsDO_decode_T_29 = 13'h3f << auto_out_7_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_31 = ~_beatsDO_decode_T_29[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_7 = _beatsDO_decode_T_31[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_7 = auto_out_7_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_7 = beatsDO_opdata_7 ? beatsDO_decode_7 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_33 = 13'h3f << auto_out_8_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_35 = ~_beatsDO_decode_T_33[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_8 = _beatsDO_decode_T_35[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_8 = auto_out_8_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_8 = beatsDO_opdata_8 ? beatsDO_decode_8 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_37 = 13'h3f << auto_out_9_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_39 = ~_beatsDO_decode_T_37[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_9 = _beatsDO_decode_T_39[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_9 = auto_out_9_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_9 = beatsDO_opdata_9 ? beatsDO_decode_9 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_41 = 13'h3f << auto_out_10_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_43 = ~_beatsDO_decode_T_41[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_10 = _beatsDO_decode_T_43[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_10 = auto_out_10_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_10 = beatsDO_opdata_10 ? beatsDO_decode_10 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_45 = 13'h3f << auto_out_11_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_47 = ~_beatsDO_decode_T_45[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_11 = _beatsDO_decode_T_47[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_11 = auto_out_11_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_11 = beatsDO_opdata_11 ? beatsDO_decode_11 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_49 = 13'h3f << auto_out_12_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_51 = ~_beatsDO_decode_T_49[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_12 = _beatsDO_decode_T_51[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_12 = auto_out_12_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_12 = beatsDO_opdata_12 ? beatsDO_decode_12 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_53 = 13'h3f << auto_out_13_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_55 = ~_beatsDO_decode_T_53[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_13 = _beatsDO_decode_T_55[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_13 = auto_out_13_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_13 = beatsDO_opdata_13 ? beatsDO_decode_13 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _beatsDO_decode_T_57 = 13'h3f << auto_out_14_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_59 = ~_beatsDO_decode_T_57[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_14 = _beatsDO_decode_T_59[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_14 = auto_out_14_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_14 = beatsDO_opdata_14 ? beatsDO_decode_14 : 4'h0; // @[Edges.scala 220:14]
+  wire  latch = idle & auto_in_d_ready; // @[Arbiter.scala 89:24]
+  wire  _readys_T_3 = ~reset; // @[Arbiter.scala 22:12]
+  wire [14:0] _readys_mask_T = readys_readys & readys_valid; // @[Arbiter.scala 28:29]
+  wire [15:0] _readys_mask_T_1 = {_readys_mask_T, 1'h0}; // @[package.scala 244:48]
+  wire [14:0] _readys_mask_T_3 = _readys_mask_T | _readys_mask_T_1[14:0]; // @[package.scala 244:43]
+  wire [16:0] _readys_mask_T_4 = {_readys_mask_T_3, 2'h0}; // @[package.scala 244:48]
+  wire [14:0] _readys_mask_T_6 = _readys_mask_T_3 | _readys_mask_T_4[14:0]; // @[package.scala 244:43]
+  wire [18:0] _readys_mask_T_7 = {_readys_mask_T_6, 4'h0}; // @[package.scala 244:48]
+  wire [14:0] _readys_mask_T_9 = _readys_mask_T_6 | _readys_mask_T_7[14:0]; // @[package.scala 244:43]
+  wire [22:0] _readys_mask_T_10 = {_readys_mask_T_9, 8'h0}; // @[package.scala 244:48]
+  wire [14:0] _readys_mask_T_12 = _readys_mask_T_9 | _readys_mask_T_10[14:0]; // @[package.scala 244:43]
+  wire  prefixOR_2 = earlyWinner_0 | earlyWinner_1; // @[Arbiter.scala 104:53]
+  wire  prefixOR_3 = prefixOR_2 | earlyWinner_2; // @[Arbiter.scala 104:53]
+  wire  prefixOR_4 = prefixOR_3 | earlyWinner_3; // @[Arbiter.scala 104:53]
+  wire  prefixOR_5 = prefixOR_4 | earlyWinner_4; // @[Arbiter.scala 104:53]
+  wire  prefixOR_6 = prefixOR_5 | earlyWinner_5; // @[Arbiter.scala 104:53]
+  wire  prefixOR_7 = prefixOR_6 | earlyWinner_6; // @[Arbiter.scala 104:53]
+  wire  prefixOR_8 = prefixOR_7 | earlyWinner_7; // @[Arbiter.scala 104:53]
+  wire  prefixOR_9 = prefixOR_8 | earlyWinner_8; // @[Arbiter.scala 104:53]
+  wire  prefixOR_10 = prefixOR_9 | earlyWinner_9; // @[Arbiter.scala 104:53]
+  wire  prefixOR_11 = prefixOR_10 | earlyWinner_10; // @[Arbiter.scala 104:53]
+  wire  prefixOR_12 = prefixOR_11 | earlyWinner_11; // @[Arbiter.scala 104:53]
+  wire  prefixOR_13 = prefixOR_12 | earlyWinner_12; // @[Arbiter.scala 104:53]
+  wire  prefixOR_14 = prefixOR_13 | earlyWinner_13; // @[Arbiter.scala 104:53]
+  wire  _prefixOR_T = prefixOR_14 | earlyWinner_14; // @[Arbiter.scala 104:53]
+  wire  _T_26 = ~prefixOR_8 | ~earlyWinner_8; // @[Arbiter.scala 105:64]
+  wire  _T_29 = ~prefixOR_9 | ~earlyWinner_9; // @[Arbiter.scala 105:64]
+  wire  _T_32 = ~prefixOR_10 | ~earlyWinner_10; // @[Arbiter.scala 105:64]
+  wire  _T_54 = (~earlyWinner_0 | ~earlyWinner_1) & (~prefixOR_2 | ~earlyWinner_2) & (~prefixOR_3 | ~earlyWinner_3) & (~
+    prefixOR_4 | ~earlyWinner_4) & (~prefixOR_5 | ~earlyWinner_5) & (~prefixOR_6 | ~earlyWinner_6) & (~prefixOR_7 | ~
+    earlyWinner_7) & _T_26 & _T_29 & _T_32; // @[Arbiter.scala 105:82]
+  wire  _T_75 = auto_out_0_d_valid | auto_out_1_d_valid | auto_out_2_d_valid | auto_out_3_d_valid | auto_out_4_d_valid
+     | auto_out_5_d_valid | auto_out_6_d_valid | auto_out_7_d_valid | auto_out_8_d_valid | auto_out_9_d_valid |
+    auto_out_10_d_valid | auto_out_11_d_valid | auto_out_12_d_valid | auto_out_13_d_valid | auto_out_14_d_valid; // @[Arbiter.scala 107:36]
+  wire  _T_76 = ~(auto_out_0_d_valid | auto_out_1_d_valid | auto_out_2_d_valid | auto_out_3_d_valid | auto_out_4_d_valid
+     | auto_out_5_d_valid | auto_out_6_d_valid | auto_out_7_d_valid | auto_out_8_d_valid | auto_out_9_d_valid |
+    auto_out_10_d_valid | auto_out_11_d_valid | auto_out_12_d_valid | auto_out_13_d_valid | auto_out_14_d_valid); // @[Arbiter.scala 107:15]
+  wire [3:0] maskedBeats_0 = earlyWinner_0 ? beatsDO_0 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_1 = earlyWinner_1 ? beatsDO_1 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_2 = earlyWinner_2 ? beatsDO_2 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_3 = earlyWinner_3 ? beatsDO_3 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_4 = earlyWinner_4 ? beatsDO_4 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_5 = earlyWinner_5 ? beatsDO_5 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_6 = earlyWinner_6 ? beatsDO_decode_6 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_7 = earlyWinner_7 ? beatsDO_7 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_8 = earlyWinner_8 ? beatsDO_8 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_9 = earlyWinner_9 ? beatsDO_9 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_10 = earlyWinner_10 ? beatsDO_10 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_11 = earlyWinner_11 ? beatsDO_11 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_12 = earlyWinner_12 ? beatsDO_12 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_13 = earlyWinner_13 ? beatsDO_13 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_14 = earlyWinner_14 ? beatsDO_14 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] _initBeats_T = maskedBeats_0 | maskedBeats_1; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_1 = _initBeats_T | maskedBeats_2; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_2 = _initBeats_T_1 | maskedBeats_3; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_3 = _initBeats_T_2 | maskedBeats_4; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_4 = _initBeats_T_3 | maskedBeats_5; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_5 = _initBeats_T_4 | maskedBeats_6; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_6 = _initBeats_T_5 | maskedBeats_7; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_7 = _initBeats_T_6 | maskedBeats_8; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_8 = _initBeats_T_7 | maskedBeats_9; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_9 = _initBeats_T_8 | maskedBeats_10; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_10 = _initBeats_T_9 | maskedBeats_11; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_11 = _initBeats_T_10 | maskedBeats_12; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_12 = _initBeats_T_11 | maskedBeats_13; // @[Arbiter.scala 112:44]
+  wire [3:0] initBeats = _initBeats_T_12 | maskedBeats_14; // @[Arbiter.scala 112:44]
+  wire  _sink_ACancel_earlyValid_T_42 = state_0 & auto_out_0_d_valid | state_1 & auto_out_1_d_valid | state_2 &
+    auto_out_2_d_valid | state_3 & auto_out_3_d_valid | state_4 & auto_out_4_d_valid | state_5 & auto_out_5_d_valid |
+    state_6 & auto_out_6_d_valid | state_7 & auto_out_7_d_valid | state_8 & auto_out_8_d_valid | state_9 &
+    auto_out_9_d_valid | state_10 & auto_out_10_d_valid | state_11 & auto_out_11_d_valid | state_12 &
+    auto_out_12_d_valid | state_13 & auto_out_13_d_valid | state_14 & auto_out_14_d_valid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_31_earlyValid = idle ? _T_75 : _sink_ACancel_earlyValid_T_42; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_in_d_ready & sink_ACancel_31_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [3:0] _GEN_6 = {{3'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [3:0] _beatsLeft_T_4 = beatsLeft - _GEN_6; // @[Arbiter.scala 113:52]
+  wire  allowed_0 = idle ? readys_0 : state_0; // @[Arbiter.scala 121:24]
+  wire  allowed_1 = idle ? readys_1 : state_1; // @[Arbiter.scala 121:24]
+  wire  allowed_2 = idle ? readys_2 : state_2; // @[Arbiter.scala 121:24]
+  wire  allowed_3 = idle ? readys_3 : state_3; // @[Arbiter.scala 121:24]
+  wire  allowed_4 = idle ? readys_4 : state_4; // @[Arbiter.scala 121:24]
+  wire  allowed_5 = idle ? readys_5 : state_5; // @[Arbiter.scala 121:24]
+  wire  allowed_6 = idle ? readys_6 : state_6; // @[Arbiter.scala 121:24]
+  wire  allowed_7 = idle ? readys_7 : state_7; // @[Arbiter.scala 121:24]
+  wire  allowed_8 = idle ? readys_8 : state_8; // @[Arbiter.scala 121:24]
+  wire  allowed_9 = idle ? readys_9 : state_9; // @[Arbiter.scala 121:24]
+  wire  allowed_10 = idle ? readys_10 : state_10; // @[Arbiter.scala 121:24]
+  wire  allowed_11 = idle ? readys_11 : state_11; // @[Arbiter.scala 121:24]
+  wire  allowed_12 = idle ? readys_12 : state_12; // @[Arbiter.scala 121:24]
+  wire  allowed_13 = idle ? readys_13 : state_13; // @[Arbiter.scala 121:24]
+  wire  allowed_14 = idle ? readys_14 : state_14; // @[Arbiter.scala 121:24]
+  wire [31:0] _T_157 = muxStateEarly_0 ? auto_out_0_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_158 = muxStateEarly_1 ? auto_out_1_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_159 = muxStateEarly_2 ? auto_out_2_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_160 = muxStateEarly_3 ? auto_out_3_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_161 = muxStateEarly_4 ? auto_out_4_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_162 = muxStateEarly_5 ? auto_out_5_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_163 = muxStateEarly_6 ? auto_out_6_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_164 = muxStateEarly_7 ? auto_out_7_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_165 = muxStateEarly_8 ? auto_out_8_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_166 = muxStateEarly_9 ? auto_out_9_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_167 = muxStateEarly_10 ? auto_out_10_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_168 = muxStateEarly_11 ? auto_out_11_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_169 = muxStateEarly_12 ? auto_out_12_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_170 = muxStateEarly_13 ? auto_out_13_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_171 = muxStateEarly_14 ? auto_out_14_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_172 = _T_157 | _T_158; // @[Mux.scala 27:73]
+  wire [31:0] _T_173 = _T_172 | _T_159; // @[Mux.scala 27:73]
+  wire [31:0] _T_174 = _T_173 | _T_160; // @[Mux.scala 27:73]
+  wire [31:0] _T_175 = _T_174 | _T_161; // @[Mux.scala 27:73]
+  wire [31:0] _T_176 = _T_175 | _T_162; // @[Mux.scala 27:73]
+  wire [31:0] _T_177 = _T_176 | _T_163; // @[Mux.scala 27:73]
+  wire [31:0] _T_178 = _T_177 | _T_164; // @[Mux.scala 27:73]
+  wire [31:0] _T_179 = _T_178 | _T_165; // @[Mux.scala 27:73]
+  wire [31:0] _T_180 = _T_179 | _T_166; // @[Mux.scala 27:73]
+  wire [31:0] _T_181 = _T_180 | _T_167; // @[Mux.scala 27:73]
+  wire [31:0] _T_182 = _T_181 | _T_168; // @[Mux.scala 27:73]
+  wire [31:0] _T_183 = _T_182 | _T_169; // @[Mux.scala 27:73]
+  wire [31:0] _T_184 = _T_183 | _T_170; // @[Mux.scala 27:73]
+  wire [2:0] _T_273 = muxStateEarly_0 ? auto_out_0_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_274 = muxStateEarly_1 ? auto_out_1_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_275 = muxStateEarly_2 ? auto_out_2_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_276 = muxStateEarly_3 ? auto_out_3_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_277 = muxStateEarly_4 ? auto_out_4_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_278 = muxStateEarly_5 ? auto_out_5_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_279 = muxStateEarly_6 ? auto_out_6_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_280 = muxStateEarly_7 ? auto_out_7_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_281 = muxStateEarly_8 ? auto_out_8_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_282 = muxStateEarly_9 ? auto_out_9_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_283 = muxStateEarly_10 ? auto_out_10_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_284 = muxStateEarly_11 ? auto_out_11_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_285 = muxStateEarly_12 ? auto_out_12_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_286 = muxStateEarly_13 ? auto_out_13_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_287 = muxStateEarly_14 ? auto_out_14_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_288 = _T_273 | _T_274; // @[Mux.scala 27:73]
+  wire [2:0] _T_289 = _T_288 | _T_275; // @[Mux.scala 27:73]
+  wire [2:0] _T_290 = _T_289 | _T_276; // @[Mux.scala 27:73]
+  wire [2:0] _T_291 = _T_290 | _T_277; // @[Mux.scala 27:73]
+  wire [2:0] _T_292 = _T_291 | _T_278; // @[Mux.scala 27:73]
+  wire [2:0] _T_293 = _T_292 | _T_279; // @[Mux.scala 27:73]
+  wire [2:0] _T_294 = _T_293 | _T_280; // @[Mux.scala 27:73]
+  wire [2:0] _T_295 = _T_294 | _T_281; // @[Mux.scala 27:73]
+  wire [2:0] _T_296 = _T_295 | _T_282; // @[Mux.scala 27:73]
+  wire [2:0] _T_297 = _T_296 | _T_283; // @[Mux.scala 27:73]
+  wire [2:0] _T_298 = _T_297 | _T_284; // @[Mux.scala 27:73]
+  wire [2:0] _T_299 = _T_298 | _T_285; // @[Mux.scala 27:73]
+  wire [2:0] _T_300 = _T_299 | _T_286; // @[Mux.scala 27:73]
+  wire [2:0] _T_331 = muxStateEarly_0 ? auto_out_0_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_332 = muxStateEarly_1 ? auto_out_1_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_333 = muxStateEarly_2 ? auto_out_2_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_334 = muxStateEarly_3 ? auto_out_3_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_335 = muxStateEarly_4 ? auto_out_4_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_336 = muxStateEarly_5 ? auto_out_5_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_337 = muxStateEarly_6 ? 3'h1 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_338 = muxStateEarly_7 ? auto_out_7_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_339 = muxStateEarly_8 ? auto_out_8_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_340 = muxStateEarly_9 ? auto_out_9_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_341 = muxStateEarly_10 ? auto_out_10_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_342 = muxStateEarly_11 ? auto_out_11_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_343 = muxStateEarly_12 ? auto_out_12_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_344 = muxStateEarly_13 ? auto_out_13_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_345 = muxStateEarly_14 ? auto_out_14_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_346 = _T_331 | _T_332; // @[Mux.scala 27:73]
+  wire [2:0] _T_347 = _T_346 | _T_333; // @[Mux.scala 27:73]
+  wire [2:0] _T_348 = _T_347 | _T_334; // @[Mux.scala 27:73]
+  wire [2:0] _T_349 = _T_348 | _T_335; // @[Mux.scala 27:73]
+  wire [2:0] _T_350 = _T_349 | _T_336; // @[Mux.scala 27:73]
+  wire [2:0] _T_351 = _T_350 | _T_337; // @[Mux.scala 27:73]
+  wire [2:0] _T_352 = _T_351 | _T_338; // @[Mux.scala 27:73]
+  wire [2:0] _T_353 = _T_352 | _T_339; // @[Mux.scala 27:73]
+  wire [2:0] _T_354 = _T_353 | _T_340; // @[Mux.scala 27:73]
+  wire [2:0] _T_355 = _T_354 | _T_341; // @[Mux.scala 27:73]
+  wire [2:0] _T_356 = _T_355 | _T_342; // @[Mux.scala 27:73]
+  wire [2:0] _T_357 = _T_356 | _T_343; // @[Mux.scala 27:73]
+  wire [2:0] _T_358 = _T_357 | _T_344; // @[Mux.scala 27:73]
+  TLMonitor_3 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_in_a_ready = requestAIO_0_0 & auto_out_0_a_ready | requestAIO_0_1 & auto_out_1_a_ready | requestAIO_0_2 &
+    auto_out_2_a_ready | requestAIO_0_3 & auto_out_3_a_ready | requestAIO_0_4 & auto_out_4_a_ready | requestAIO_0_5 &
+    auto_out_5_a_ready | requestAIO_0_6 & auto_out_6_a_ready | requestAIO_0_7 & auto_out_7_a_ready | requestAIO_0_8 &
+    auto_out_8_a_ready | requestAIO_0_9 & auto_out_9_a_ready | requestAIO_0_10 & auto_out_10_a_ready | requestAIO_0_11
+     & auto_out_11_a_ready | requestAIO_0_12 & auto_out_12_a_ready | requestAIO_0_13 & auto_out_13_a_ready |
+    requestAIO_0_14 & auto_out_14_a_ready; // @[Mux.scala 27:73]
+  assign auto_in_d_valid = idle ? _T_75 : _sink_ACancel_earlyValid_T_42; // @[Arbiter.scala 125:29]
+  assign auto_in_d_bits_opcode = _T_358 | _T_345; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_size = _T_300 | _T_287; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_source = _T_271 | _T_258; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_data = _T_184 | _T_171; // @[Mux.scala 27:73]
+  assign auto_out_14_a_valid = auto_in_a_valid & requestAIO_0_14; // @[Xbar.scala 428:50]
+  assign auto_out_14_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_14_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_14_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_14_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_14_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_14_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_14_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_14_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_14_d_ready = auto_in_d_ready & allowed_14; // @[Arbiter.scala 123:31]
+  assign auto_out_13_a_valid = auto_in_a_valid & requestAIO_0_13; // @[Xbar.scala 428:50]
+  assign auto_out_13_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_13_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_13_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13_d_ready = auto_in_d_ready & allowed_13; // @[Arbiter.scala 123:31]
+  assign auto_out_12_a_valid = auto_in_a_valid & requestAIO_0_12; // @[Xbar.scala 428:50]
+  assign auto_out_12_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_12_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_12_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12_d_ready = auto_in_d_ready & allowed_12; // @[Arbiter.scala 123:31]
+  assign auto_out_11_a_valid = auto_in_a_valid & requestAIO_0_11; // @[Xbar.scala 428:50]
+  assign auto_out_11_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_11_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_11_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11_d_ready = auto_in_d_ready & allowed_11; // @[Arbiter.scala 123:31]
+  assign auto_out_10_a_valid = auto_in_a_valid & requestAIO_0_10; // @[Xbar.scala 428:50]
+  assign auto_out_10_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_10_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_10_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10_d_ready = auto_in_d_ready & allowed_10; // @[Arbiter.scala 123:31]
+  assign auto_out_9_a_valid = auto_in_a_valid & requestAIO_0_9; // @[Xbar.scala 428:50]
+  assign auto_out_9_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_9_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_9_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9_d_ready = auto_in_d_ready & allowed_9; // @[Arbiter.scala 123:31]
+  assign auto_out_8_a_valid = auto_in_a_valid & requestAIO_0_8; // @[Xbar.scala 428:50]
+  assign auto_out_8_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_8_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_8_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8_d_ready = auto_in_d_ready & allowed_8; // @[Arbiter.scala 123:31]
+  assign auto_out_7_a_valid = auto_in_a_valid & requestAIO_0_7; // @[Xbar.scala 428:50]
+  assign auto_out_7_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_7_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_7_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_d_ready = auto_in_d_ready & allowed_7; // @[Arbiter.scala 123:31]
+  assign auto_out_6_a_valid = auto_in_a_valid & requestAIO_0_6; // @[Xbar.scala 428:50]
+  assign auto_out_6_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_6_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_d_ready = auto_in_d_ready & allowed_6; // @[Arbiter.scala 123:31]
+  assign auto_out_5_a_valid = auto_in_a_valid & requestAIO_0_5; // @[Xbar.scala 428:50]
+  assign auto_out_5_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_5_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_5_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_d_ready = auto_in_d_ready & allowed_5; // @[Arbiter.scala 123:31]
+  assign auto_out_4_a_valid = auto_in_a_valid & requestAIO_0_4; // @[Xbar.scala 428:50]
+  assign auto_out_4_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_4_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_4_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_d_ready = auto_in_d_ready & allowed_4; // @[Arbiter.scala 123:31]
+  assign auto_out_3_a_valid = auto_in_a_valid & requestAIO_0_3; // @[Xbar.scala 428:50]
+  assign auto_out_3_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_3_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_3_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_d_ready = auto_in_d_ready & allowed_3; // @[Arbiter.scala 123:31]
+  assign auto_out_2_a_valid = auto_in_a_valid & requestAIO_0_2; // @[Xbar.scala 428:50]
+  assign auto_out_2_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_2_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_2_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_d_ready = auto_in_d_ready & allowed_2; // @[Arbiter.scala 123:31]
+  assign auto_out_1_a_valid = auto_in_a_valid & requestAIO_0_1; // @[Xbar.scala 428:50]
+  assign auto_out_1_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_1_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_1_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_d_ready = auto_in_d_ready & allowed_1; // @[Arbiter.scala 123:31]
+  assign auto_out_0_a_valid = auto_in_a_valid & requestAIO_0_0; // @[Xbar.scala 428:50]
+  assign auto_out_0_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_0_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_0_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_d_ready = auto_in_d_ready & allowed_0; // @[Arbiter.scala 123:31]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = requestAIO_0_0 & auto_out_0_a_ready | requestAIO_0_1 & auto_out_1_a_ready |
+    requestAIO_0_2 & auto_out_2_a_ready | requestAIO_0_3 & auto_out_3_a_ready | requestAIO_0_4 & auto_out_4_a_ready |
+    requestAIO_0_5 & auto_out_5_a_ready | requestAIO_0_6 & auto_out_6_a_ready | requestAIO_0_7 & auto_out_7_a_ready |
+    requestAIO_0_8 & auto_out_8_a_ready | requestAIO_0_9 & auto_out_9_a_ready | requestAIO_0_10 & auto_out_10_a_ready |
+    requestAIO_0_11 & auto_out_11_a_ready | requestAIO_0_12 & auto_out_12_a_ready | requestAIO_0_13 &
+    auto_out_13_a_ready | requestAIO_0_14 & auto_out_14_a_ready; // @[Mux.scala 27:73]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = idle ? _T_75 : _sink_ACancel_earlyValid_T_42; // @[Arbiter.scala 125:29]
+  assign monitor_io_in_d_bits_opcode = _T_358 | _T_345; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_size = _T_300 | _T_287; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_source = _T_271 | _T_258; // @[Mux.scala 27:73]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 4'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      beatsLeft <= initBeats;
+    end else begin
+      beatsLeft <= _beatsLeft_T_4;
+    end
+    if (reset) begin // @[Arbiter.scala 23:23]
+      readys_mask <= 15'h7fff; // @[Arbiter.scala 23:23]
+    end else if (latch & |readys_valid) begin // @[Arbiter.scala 27:32]
+      readys_mask <= _readys_mask_T_12; // @[Arbiter.scala 28:12]
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_0 <= earlyWinner_0;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_1 <= earlyWinner_1;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_2 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_2 <= earlyWinner_2;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_3 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_3 <= earlyWinner_3;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_4 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_4 <= earlyWinner_4;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_5 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_5 <= earlyWinner_5;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_6 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_6 <= earlyWinner_6;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_7 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_7 <= earlyWinner_7;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_8 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_8 <= earlyWinner_8;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_9 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_9 <= earlyWinner_9;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_10 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_10 <= earlyWinner_10;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_11 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_11 <= earlyWinner_11;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_12 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_12 <= earlyWinner_12;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_13 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_13 <= earlyWinner_13;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_14 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_14 <= earlyWinner_14;
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_54 & (~prefixOR_11 | ~earlyWinner_11) & (~prefixOR_12 | ~earlyWinner_12) & (~prefixOR_13 | ~
+          earlyWinner_13) & (~prefixOR_14 | ~earlyWinner_14)) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(_T_54 & (~prefixOR_11 | ~earlyWinner_11) & (~prefixOR_12 | ~earlyWinner_12) & (~prefixOR_13
+           | ~earlyWinner_13) & (~prefixOR_14 | ~earlyWinner_14))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(auto_out_0_d_valid | auto_out_1_d_valid | auto_out_2_d_valid | auto_out_3_d_valid | auto_out_4_d_valid
+           | auto_out_5_d_valid | auto_out_6_d_valid | auto_out_7_d_valid | auto_out_8_d_valid | auto_out_9_d_valid |
+          auto_out_10_d_valid | auto_out_11_d_valid | auto_out_12_d_valid | auto_out_13_d_valid | auto_out_14_d_valid)
+           | _prefixOR_T) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(~(auto_out_0_d_valid | auto_out_1_d_valid | auto_out_2_d_valid | auto_out_3_d_valid |
+          auto_out_4_d_valid | auto_out_5_d_valid | auto_out_6_d_valid | auto_out_7_d_valid | auto_out_8_d_valid |
+          auto_out_9_d_valid | auto_out_10_d_valid | auto_out_11_d_valid | auto_out_12_d_valid | auto_out_13_d_valid |
+          auto_out_14_d_valid) | _prefixOR_T)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_76 | _T_75) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(_T_76 | _T_75)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  beatsLeft = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  readys_mask = _RAND_1[14:0];
+  _RAND_2 = {1{`RANDOM}};
+  state_0 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  state_1 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  state_2 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  state_3 = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  state_4 = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  state_5 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  state_6 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  state_7 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  state_8 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  state_9 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  state_10 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  state_11 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  state_12 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  state_13 = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  state_14 = _RAND_16[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_4(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_45 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_48 = $signed(_T_46) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79; // @[Parameters.scala 671:42]
+  wire  _T_91 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84; // @[Parameters.scala 671:42]
+  wire  _T_101 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_102 = _source_ok_T & _T_101; // @[Mux.scala 27:73]
+  wire  _T_160 = _T_102 & _T_91; // @[Monitor.scala 83:78]
+  wire  _T_174 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_178 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_179 = _T_178 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_183 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_187 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_332 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_345 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_360 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_410 = _T_360 & _T_91; // @[Parameters.scala 670:56]
+  wire  _T_421 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_425 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_433 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_489 = _T_360 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_499 = source_ok & _T_489; // @[Monitor.scala 115:71]
+  wire  _T_517 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_597 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_598 = io_in_a_bits_mask & _T_597; // @[Monitor.scala 127:31]
+  wire  _T_599 = _T_598 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_603 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_674 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_682 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_753 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_761 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_832 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_844 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_848 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_852 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_856 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_860 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_864 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_868 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_879 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_883 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_896 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_916 = _T_864 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_925 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_942 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_960 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_990 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_991 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_995 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_999 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1003 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1007 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1014 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1015 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1019 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1023 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1027 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1031 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1035 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1041 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1044 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1046 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1048 = ~_T_1046[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1052 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1054 = ~_T_848; // @[Monitor.scala 671:74]
+  wire  _T_1055 = io_in_d_valid & d_first_1 & ~_T_848; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_848 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1054 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1054 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1041 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1065 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1067 = _T_1065[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1072 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1073 = io_in_d_bits_opcode == _GEN_32 | _T_1072; // @[Monitor.scala 685:77]
+  wire  _T_1077 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1084 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1085 = io_in_d_bits_opcode == _GEN_48 | _T_1084; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1089 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1099 = _T_1052 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1054; // @[Monitor.scala 694:116]
+  wire  _T_1101 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_1108 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1117 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1143 = io_in_d_valid & d_first_2 & _T_848; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_848 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_848 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_1151 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_1161 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1186 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_332 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_332) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_410 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_410) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_674 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_674) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_753 & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~_T_753) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_682 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_682 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_832 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_832) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_761 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_761 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_844 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_844) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_856 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~_T_856) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_860 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~_T_860) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_864 & (io_in_d_valid & _T_848 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_848 & _T_2 & ~_T_864) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_879 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~_T_879) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_883 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~_T_883) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_860 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~_T_860) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_864 & (io_in_d_valid & _T_868 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_868 & _T_2 & ~_T_864) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_852 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~_T_852) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_879 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~_T_879) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_883 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~_T_883) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_916 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~_T_916) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_864 & (io_in_d_valid & _T_896 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_896 & _T_2 & ~_T_864) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_925 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_925 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_856 & (io_in_d_valid & _T_925 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_925 & _T_2 & ~_T_856) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_860 & (io_in_d_valid & _T_925 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_925 & _T_2 & ~_T_860) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_864 & (io_in_d_valid & _T_925 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_925 & _T_2 & ~_T_864) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_942 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_942 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_856 & (io_in_d_valid & _T_942 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_942 & _T_2 & ~_T_856) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_916 & (io_in_d_valid & _T_942 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_942 & _T_2 & ~_T_916) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_864 & (io_in_d_valid & _T_942 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_942 & _T_2 & ~_T_864) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_960 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_960 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_856 & (io_in_d_valid & _T_960 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_960 & _T_2 & ~_T_856) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_860 & (io_in_d_valid & _T_960 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_960 & _T_2 & ~_T_860) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_864 & (io_in_d_valid & _T_960 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_960 & _T_2 & ~_T_864) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_991 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_991) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_995 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_995) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_999 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_999) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1003 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_1003) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1007 & (_T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_990 & ~reset & ~_T_1007) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1015 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1015) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1019 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1019) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1023 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1023) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1027 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1027) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1031 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1031) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1035 & (_T_1014 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1014 & _T_2 & ~_T_1035) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1048 & (_T_1044 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1044 & ~reset & ~_T_1048) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1067 & (_T_1055 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & _T_2 & ~_T_1067) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1073 & (_T_1055 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & same_cycle_resp & _T_2 & ~_T_1073) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1077 & (_T_1055 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & same_cycle_resp & _T_2 & ~_T_1077) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1085 & (_T_1055 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & ~same_cycle_resp & _T_2 & ~_T_1085) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1089 & (_T_1055 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1055 & ~same_cycle_resp & _T_2 & ~_T_1089) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1101 & (_T_1099 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1099 & _T_2 & ~_T_1101) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1108 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_1108) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1117 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1117) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1151[0] & (_T_1143 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1143 & _T_2 & ~_T_1151[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1161 & (_T_1143 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1143 & _T_2 & ~_T_1161) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1186 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1186) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[11:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[3:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[11:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[3:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [29:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input  [31:0] io_enq_bits_data,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [29:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [29:0] ram_address [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [29:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [29:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_mask [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = io_enq_bits_corrupt;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[29:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_7[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_8 = {1{`RANDOM}};
+  value = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  value_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  maybe_full = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_1(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [1:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input         io_enq_bits_sink,
+  input         io_enq_bits_denied,
+  input  [31:0] io_enq_bits_data,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [1:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output        io_deq_bits_sink,
+  output        io_deq_bits_denied,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_sink [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_denied [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_sink_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_sink_io_deq_bits_MPORT_addr = value_1;
+  assign ram_sink_io_deq_bits_MPORT_data = ram_sink[ram_sink_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_sink_MPORT_data = io_enq_bits_sink;
+  assign ram_sink_MPORT_addr = value;
+  assign ram_sink_MPORT_mask = 1'h1;
+  assign ram_sink_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_denied_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_denied_io_deq_bits_MPORT_addr = value_1;
+  assign ram_denied_io_deq_bits_MPORT_data = ram_denied[ram_denied_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_denied_MPORT_data = io_enq_bits_denied;
+  assign ram_denied_MPORT_addr = value;
+  assign ram_denied_MPORT_mask = 1'h1;
+  assign ram_denied_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = io_enq_bits_corrupt;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_sink = ram_sink_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_denied = ram_denied_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_sink_MPORT_en & ram_sink_MPORT_mask) begin
+      ram_sink[ram_sink_MPORT_addr] <= ram_sink_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_denied_MPORT_en & ram_denied_MPORT_mask) begin
+      ram_denied[ram_denied_MPORT_addr] <= ram_denied_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_sink[initvar] = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_denied[initvar] = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_7[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_8 = {1{`RANDOM}};
+  value = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  value_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  maybe_full = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [29:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [29:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  TLMonitor_4 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  Queue bundleOut_0_a_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_a_q_clock),
+    .reset(bundleOut_0_a_q_reset),
+    .io_enq_ready(bundleOut_0_a_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_q_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_q_io_enq_bits_mask),
+    .io_enq_bits_data(bundleOut_0_a_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleOut_0_a_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleOut_0_a_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_q_io_deq_bits_mask),
+    .io_deq_bits_data(bundleOut_0_a_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_a_q_io_deq_bits_corrupt)
+  );
+  Queue_1 bundleIn_0_d_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleIn_0_d_q_clock),
+    .reset(bundleIn_0_d_q_reset),
+    .io_enq_ready(bundleIn_0_d_q_io_enq_ready),
+    .io_enq_valid(bundleIn_0_d_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleIn_0_d_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleIn_0_d_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleIn_0_d_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_q_io_enq_bits_source),
+    .io_enq_bits_sink(bundleIn_0_d_q_io_enq_bits_sink),
+    .io_enq_bits_denied(bundleIn_0_d_q_io_enq_bits_denied),
+    .io_enq_bits_data(bundleIn_0_d_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleIn_0_d_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleIn_0_d_q_io_deq_ready),
+    .io_deq_valid(bundleIn_0_d_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_d_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_d_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_d_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_d_q_io_deq_bits_source),
+    .io_deq_bits_sink(bundleIn_0_d_q_io_deq_bits_sink),
+    .io_deq_bits_denied(bundleIn_0_d_q_io_deq_bits_denied),
+    .io_deq_bits_data(bundleIn_0_d_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleIn_0_d_q_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_data = bundleIn_0_d_q_io_deq_bits_data; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_out_a_valid = bundleOut_0_a_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_q_io_deq_bits_mask; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_data = bundleOut_0_a_q_io_deq_bits_data; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_d_ready = bundleIn_0_d_q_io_enq_ready; // @[Nodes.scala 1207:84 Decoupled.scala 365:17]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign bundleOut_0_a_q_clock = clock;
+  assign bundleOut_0_a_q_reset = reset;
+  assign bundleOut_0_a_q_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_clock = clock;
+  assign bundleIn_0_d_q_reset = reset;
+  assign bundleIn_0_d_q_io_enq_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_param = 2'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_sink = 1'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_denied = 1'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_corrupt = 1'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_deq_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_5(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_45 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_48 = $signed(_T_46) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79; // @[Parameters.scala 671:42]
+  wire  _T_91 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84; // @[Parameters.scala 671:42]
+  wire  _T_101 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_102 = _source_ok_T & _T_101; // @[Mux.scala 27:73]
+  wire  _T_160 = _T_102 & _T_91; // @[Monitor.scala 83:78]
+  wire  _T_174 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_178 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_179 = _T_178 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_183 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_187 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_332 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_345 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_360 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_410 = _T_360 & _T_91; // @[Parameters.scala 670:56]
+  wire  _T_421 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_425 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_433 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_489 = _T_360 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_499 = source_ok & _T_489; // @[Monitor.scala 115:71]
+  wire  _T_517 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_597 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_598 = io_in_a_bits_mask & _T_597; // @[Monitor.scala 127:31]
+  wire  _T_599 = _T_598 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_603 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_615 = io_in_a_bits_size <= 3'h2; // @[Parameters.scala 92:42]
+  wire  _T_659 = _T_615 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_669 = source_ok & _T_659; // @[Monitor.scala 131:74]
+  wire  _T_679 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_687 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_763 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_771 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_842 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_854 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_858 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_862 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_866 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_870 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_874 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_878 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_889 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_893 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_906 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_926 = _T_874 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_935 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_952 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_970 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1000 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1001 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1005 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1009 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1013 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1017 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1024 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1025 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1029 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1033 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1037 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1041 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1045 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1051 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1054 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1056 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1058 = ~_T_1056[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1062 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1064 = ~_T_858; // @[Monitor.scala 671:74]
+  wire  _T_1065 = io_in_d_valid & d_first_1 & ~_T_858; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_858 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1064 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1064 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1051 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1075 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1077 = _T_1075[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1082 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1083 = io_in_d_bits_opcode == _GEN_32 | _T_1082; // @[Monitor.scala 685:77]
+  wire  _T_1087 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1094 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1095 = io_in_d_bits_opcode == _GEN_48 | _T_1094; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1099 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1109 = _T_1062 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1064; // @[Monitor.scala 694:116]
+  wire  _T_1111 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_1118 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1127 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1153 = io_in_d_valid & d_first_2 & _T_858; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_858 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_858 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_1161 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_1171 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1196 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_332 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_332) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_410 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_410) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_669 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_669) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_679 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_679) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_669 & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~_T_669) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_763 & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~_T_763) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_842 & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~_T_842) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_854 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_854) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_862 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~_T_862) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_870 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~_T_870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_862 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_862) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_889 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_889) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_893 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_893) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_870 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_862 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_862) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_889 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_889) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_893 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_893) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_926 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_926) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_935 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_935 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_d_valid & _T_935 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_935 & _T_2 & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_870 & (io_in_d_valid & _T_935 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_935 & _T_2 & ~_T_870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_935 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_935 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_952 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_952 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_d_valid & _T_952 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_952 & _T_2 & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_926 & (io_in_d_valid & _T_952 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_952 & _T_2 & ~_T_926) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_952 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_952 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_970 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_970 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_d_valid & _T_970 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_970 & _T_2 & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_870 & (io_in_d_valid & _T_970 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_970 & _T_2 & ~_T_870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_970 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_970 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1001 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1001) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1005 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1005) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1009 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1009) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1013 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1013) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1017 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1017) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1025 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1025) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1029 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1029) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1033 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1033) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1037 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1037) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1041 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1041) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1045 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1045) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1058 & (_T_1054 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1054 & ~reset & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1077 & (_T_1065 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & _T_2 & ~_T_1077) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1083 & (_T_1065 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & same_cycle_resp & _T_2 & ~_T_1083) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1087 & (_T_1065 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & same_cycle_resp & _T_2 & ~_T_1087) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1095 & (_T_1065 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & ~same_cycle_resp & _T_2 & ~_T_1095) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1099 & (_T_1065 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & ~same_cycle_resp & _T_2 & ~_T_1099) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1111 & (_T_1109 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1109 & _T_2 & ~_T_1111) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1118 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_1118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1127 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1127) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1161[0] & (_T_1153 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1153 & _T_2 & ~_T_1161[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1171 & (_T_1153 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1153 & _T_2 & ~_T_1171) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1196 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1196) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[11:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[3:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[11:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[3:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLAtomicAutomata(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  reg [1:0] cam_s_0_state; // @[AtomicAutomata.scala 76:28]
+  reg [2:0] cam_a_0_bits_opcode; // @[AtomicAutomata.scala 77:24]
+  reg [2:0] cam_a_0_bits_param; // @[AtomicAutomata.scala 77:24]
+  reg [2:0] cam_a_0_bits_size; // @[AtomicAutomata.scala 77:24]
+  reg [1:0] cam_a_0_bits_source; // @[AtomicAutomata.scala 77:24]
+  reg [29:0] cam_a_0_bits_address; // @[AtomicAutomata.scala 77:24]
+  reg [3:0] cam_a_0_bits_mask; // @[AtomicAutomata.scala 77:24]
+  reg [31:0] cam_a_0_bits_data; // @[AtomicAutomata.scala 77:24]
+  reg  cam_a_0_bits_corrupt; // @[AtomicAutomata.scala 77:24]
+  reg [3:0] cam_a_0_lut; // @[AtomicAutomata.scala 77:24]
+  reg [31:0] cam_d_0_data; // @[AtomicAutomata.scala 78:24]
+  reg  cam_d_0_denied; // @[AtomicAutomata.scala 78:24]
+  reg  cam_d_0_corrupt; // @[AtomicAutomata.scala 78:24]
+  wire  cam_free_0 = cam_s_0_state == 2'h0; // @[AtomicAutomata.scala 80:44]
+  wire  cam_amo_0 = cam_s_0_state == 2'h2; // @[AtomicAutomata.scala 81:44]
+  wire  cam_abusy_0 = cam_s_0_state == 2'h3 | cam_amo_0; // @[AtomicAutomata.scala 82:57]
+  wire  cam_dmatch_0 = cam_s_0_state != 2'h0; // @[AtomicAutomata.scala 83:49]
+  wire  a_isLogical = auto_in_a_bits_opcode == 3'h3; // @[AtomicAutomata.scala 90:47]
+  wire  a_isArithmetic = auto_in_a_bits_opcode == 3'h2; // @[AtomicAutomata.scala 91:47]
+  wire  _a_isSupported_T = a_isArithmetic ? 1'h0 : 1'h1; // @[AtomicAutomata.scala 92:63]
+  wire  a_isSupported = a_isLogical ? 1'h0 : _a_isSupported_T; // @[AtomicAutomata.scala 92:32]
+  wire [1:0] indexes_0 = {cam_a_0_bits_data[0],cam_d_0_data[0]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_1 = {cam_a_0_bits_data[1],cam_d_0_data[1]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_2 = {cam_a_0_bits_data[2],cam_d_0_data[2]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_3 = {cam_a_0_bits_data[3],cam_d_0_data[3]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_4 = {cam_a_0_bits_data[4],cam_d_0_data[4]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_5 = {cam_a_0_bits_data[5],cam_d_0_data[5]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_6 = {cam_a_0_bits_data[6],cam_d_0_data[6]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_7 = {cam_a_0_bits_data[7],cam_d_0_data[7]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_8 = {cam_a_0_bits_data[8],cam_d_0_data[8]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_9 = {cam_a_0_bits_data[9],cam_d_0_data[9]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_10 = {cam_a_0_bits_data[10],cam_d_0_data[10]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_11 = {cam_a_0_bits_data[11],cam_d_0_data[11]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_12 = {cam_a_0_bits_data[12],cam_d_0_data[12]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_13 = {cam_a_0_bits_data[13],cam_d_0_data[13]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_14 = {cam_a_0_bits_data[14],cam_d_0_data[14]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_15 = {cam_a_0_bits_data[15],cam_d_0_data[15]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_16 = {cam_a_0_bits_data[16],cam_d_0_data[16]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_17 = {cam_a_0_bits_data[17],cam_d_0_data[17]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_18 = {cam_a_0_bits_data[18],cam_d_0_data[18]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_19 = {cam_a_0_bits_data[19],cam_d_0_data[19]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_20 = {cam_a_0_bits_data[20],cam_d_0_data[20]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_21 = {cam_a_0_bits_data[21],cam_d_0_data[21]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_22 = {cam_a_0_bits_data[22],cam_d_0_data[22]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_23 = {cam_a_0_bits_data[23],cam_d_0_data[23]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_24 = {cam_a_0_bits_data[24],cam_d_0_data[24]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_25 = {cam_a_0_bits_data[25],cam_d_0_data[25]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_26 = {cam_a_0_bits_data[26],cam_d_0_data[26]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_27 = {cam_a_0_bits_data[27],cam_d_0_data[27]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_28 = {cam_a_0_bits_data[28],cam_d_0_data[28]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_29 = {cam_a_0_bits_data[29],cam_d_0_data[29]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_30 = {cam_a_0_bits_data[30],cam_d_0_data[30]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_31 = {cam_a_0_bits_data[31],cam_d_0_data[31]}; // @[Cat.scala 31:58]
+  wire [3:0] _logic_out_T = cam_a_0_lut >> indexes_0; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_2 = cam_a_0_lut >> indexes_1; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_4 = cam_a_0_lut >> indexes_2; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_6 = cam_a_0_lut >> indexes_3; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_8 = cam_a_0_lut >> indexes_4; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_10 = cam_a_0_lut >> indexes_5; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_12 = cam_a_0_lut >> indexes_6; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_14 = cam_a_0_lut >> indexes_7; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_16 = cam_a_0_lut >> indexes_8; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_18 = cam_a_0_lut >> indexes_9; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_20 = cam_a_0_lut >> indexes_10; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_22 = cam_a_0_lut >> indexes_11; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_24 = cam_a_0_lut >> indexes_12; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_26 = cam_a_0_lut >> indexes_13; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_28 = cam_a_0_lut >> indexes_14; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_30 = cam_a_0_lut >> indexes_15; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_32 = cam_a_0_lut >> indexes_16; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_34 = cam_a_0_lut >> indexes_17; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_36 = cam_a_0_lut >> indexes_18; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_38 = cam_a_0_lut >> indexes_19; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_40 = cam_a_0_lut >> indexes_20; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_42 = cam_a_0_lut >> indexes_21; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_44 = cam_a_0_lut >> indexes_22; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_46 = cam_a_0_lut >> indexes_23; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_48 = cam_a_0_lut >> indexes_24; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_50 = cam_a_0_lut >> indexes_25; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_52 = cam_a_0_lut >> indexes_26; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_54 = cam_a_0_lut >> indexes_27; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_56 = cam_a_0_lut >> indexes_28; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_58 = cam_a_0_lut >> indexes_29; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_60 = cam_a_0_lut >> indexes_30; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_62 = cam_a_0_lut >> indexes_31; // @[AtomicAutomata.scala 114:57]
+  wire [7:0] logic_out_lo_lo = {_logic_out_T_14[0],_logic_out_T_12[0],_logic_out_T_10[0],_logic_out_T_8[0],
+    _logic_out_T_6[0],_logic_out_T_4[0],_logic_out_T_2[0],_logic_out_T[0]}; // @[Cat.scala 31:58]
+  wire [15:0] logic_out_lo = {_logic_out_T_30[0],_logic_out_T_28[0],_logic_out_T_26[0],_logic_out_T_24[0],
+    _logic_out_T_22[0],_logic_out_T_20[0],_logic_out_T_18[0],_logic_out_T_16[0],logic_out_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] logic_out_hi_lo = {_logic_out_T_46[0],_logic_out_T_44[0],_logic_out_T_42[0],_logic_out_T_40[0],
+    _logic_out_T_38[0],_logic_out_T_36[0],_logic_out_T_34[0],_logic_out_T_32[0]}; // @[Cat.scala 31:58]
+  wire [31:0] logic_out = {_logic_out_T_62[0],_logic_out_T_60[0],_logic_out_T_58[0],_logic_out_T_56[0],_logic_out_T_54[0
+    ],_logic_out_T_52[0],_logic_out_T_50[0],_logic_out_T_48[0],logic_out_hi_lo,logic_out_lo}; // @[Cat.scala 31:58]
+  wire  unsigned_ = cam_a_0_bits_param[1]; // @[AtomicAutomata.scala 117:42]
+  wire  take_max = cam_a_0_bits_param[0]; // @[AtomicAutomata.scala 118:42]
+  wire  adder = cam_a_0_bits_param[2]; // @[AtomicAutomata.scala 119:39]
+  wire [3:0] _signSel_T = ~cam_a_0_bits_mask; // @[AtomicAutomata.scala 121:25]
+  wire [3:0] _GEN_39 = {{1'd0}, cam_a_0_bits_mask[3:1]}; // @[AtomicAutomata.scala 121:31]
+  wire [3:0] _signSel_T_2 = _signSel_T | _GEN_39; // @[AtomicAutomata.scala 121:31]
+  wire [3:0] signSel = ~_signSel_T_2; // @[AtomicAutomata.scala 121:23]
+  wire [3:0] signbits_a = {cam_a_0_bits_data[31],cam_a_0_bits_data[23],cam_a_0_bits_data[15],cam_a_0_bits_data[7]}; // @[Cat.scala 31:58]
+  wire [3:0] signbits_d = {cam_d_0_data[31],cam_d_0_data[23],cam_d_0_data[15],cam_d_0_data[7]}; // @[Cat.scala 31:58]
+  wire [3:0] _signbit_a_T = signbits_a & signSel; // @[AtomicAutomata.scala 125:38]
+  wire [4:0] _signbit_a_T_1 = {_signbit_a_T, 1'h0}; // @[AtomicAutomata.scala 125:49]
+  wire [3:0] signbit_a = _signbit_a_T_1[3:0]; // @[AtomicAutomata.scala 125:54]
+  wire [3:0] _signbit_d_T = signbits_d & signSel; // @[AtomicAutomata.scala 126:38]
+  wire [4:0] _signbit_d_T_1 = {_signbit_d_T, 1'h0}; // @[AtomicAutomata.scala 126:49]
+  wire [3:0] signbit_d = _signbit_d_T_1[3:0]; // @[AtomicAutomata.scala 126:54]
+  wire [4:0] _signext_a_T = {signbit_a, 1'h0}; // @[package.scala 244:48]
+  wire [3:0] _signext_a_T_2 = signbit_a | _signext_a_T[3:0]; // @[package.scala 244:43]
+  wire [5:0] _signext_a_T_3 = {_signext_a_T_2, 2'h0}; // @[package.scala 244:48]
+  wire [3:0] _signext_a_T_5 = _signext_a_T_2 | _signext_a_T_3[3:0]; // @[package.scala 244:43]
+  wire [7:0] _signext_a_T_12 = _signext_a_T_5[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_14 = _signext_a_T_5[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_16 = _signext_a_T_5[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_18 = _signext_a_T_5[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] signext_a = {_signext_a_T_18,_signext_a_T_16,_signext_a_T_14,_signext_a_T_12}; // @[Cat.scala 31:58]
+  wire [4:0] _signext_d_T = {signbit_d, 1'h0}; // @[package.scala 244:48]
+  wire [3:0] _signext_d_T_2 = signbit_d | _signext_d_T[3:0]; // @[package.scala 244:43]
+  wire [5:0] _signext_d_T_3 = {_signext_d_T_2, 2'h0}; // @[package.scala 244:48]
+  wire [3:0] _signext_d_T_5 = _signext_d_T_2 | _signext_d_T_3[3:0]; // @[package.scala 244:43]
+  wire [7:0] _signext_d_T_12 = _signext_d_T_5[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_14 = _signext_d_T_5[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_16 = _signext_d_T_5[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_18 = _signext_d_T_5[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] signext_d = {_signext_d_T_18,_signext_d_T_16,_signext_d_T_14,_signext_d_T_12}; // @[Cat.scala 31:58]
+  wire [7:0] _wide_mask_T_5 = cam_a_0_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_7 = cam_a_0_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_9 = cam_a_0_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_11 = cam_a_0_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] wide_mask = {_wide_mask_T_11,_wide_mask_T_9,_wide_mask_T_7,_wide_mask_T_5}; // @[Cat.scala 31:58]
+  wire [31:0] _a_a_ext_T = cam_a_0_bits_data & wide_mask; // @[AtomicAutomata.scala 131:28]
+  wire [31:0] a_a_ext = _a_a_ext_T | signext_a; // @[AtomicAutomata.scala 131:41]
+  wire [31:0] _a_d_ext_T = cam_d_0_data & wide_mask; // @[AtomicAutomata.scala 132:28]
+  wire [31:0] a_d_ext = _a_d_ext_T | signext_d; // @[AtomicAutomata.scala 132:41]
+  wire [31:0] _a_d_inv_T = ~a_d_ext; // @[AtomicAutomata.scala 133:43]
+  wire [31:0] a_d_inv = adder ? a_d_ext : _a_d_inv_T; // @[AtomicAutomata.scala 133:26]
+  wire [31:0] adder_out = a_a_ext + a_d_inv; // @[AtomicAutomata.scala 134:33]
+  wire  a_bigger_uneq = unsigned_ == a_a_ext[31]; // @[AtomicAutomata.scala 136:38]
+  wire  a_bigger = a_a_ext[31] == a_d_ext[31] ? ~adder_out[31] : a_bigger_uneq; // @[AtomicAutomata.scala 137:27]
+  wire  pick_a = take_max == a_bigger; // @[AtomicAutomata.scala 138:31]
+  wire [31:0] _arith_out_T = pick_a ? cam_a_0_bits_data : cam_d_0_data; // @[AtomicAutomata.scala 139:50]
+  wire [31:0] arith_out = adder ? adder_out : _arith_out_T; // @[AtomicAutomata.scala 139:28]
+  wire [31:0] amo_data = cam_a_0_bits_opcode[0] ? logic_out : arith_out; // @[AtomicAutomata.scala 145:14]
+  wire  a_allow = ~cam_abusy_0 & (a_isSupported | cam_free_0); // @[AtomicAutomata.scala 149:35]
+  reg [3:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 4'h0; // @[Arbiter.scala 88:28]
+  wire  source_i_valid = auto_in_a_valid & a_allow; // @[AtomicAutomata.scala 151:38]
+  wire [1:0] _readys_T = {source_i_valid,cam_amo_0}; // @[Cat.scala 31:58]
+  wire [2:0] _readys_T_1 = {_readys_T, 1'h0}; // @[package.scala 244:48]
+  wire [1:0] _readys_T_3 = _readys_T | _readys_T_1[1:0]; // @[package.scala 244:43]
+  wire [2:0] _readys_T_5 = {_readys_T_3, 1'h0}; // @[Arbiter.scala 16:78]
+  wire [1:0] _readys_T_7 = ~_readys_T_5[1:0]; // @[Arbiter.scala 16:61]
+  wire  readys_1 = _readys_T_7[1]; // @[Arbiter.scala 95:86]
+  reg  state_1; // @[Arbiter.scala 116:26]
+  wire  allowed_1 = idle ? readys_1 : state_1; // @[Arbiter.scala 121:24]
+  wire  out_1_ready = auto_out_a_ready & allowed_1; // @[Arbiter.scala 123:31]
+  wire  _T = ~a_isSupported; // @[AtomicAutomata.scala 153:15]
+  wire [2:0] source_i_bits_opcode = ~a_isSupported ? 3'h4 : auto_in_a_bits_opcode; // @[AtomicAutomata.scala 152:24 153:31 154:32]
+  wire [2:0] source_i_bits_param = ~a_isSupported ? 3'h0 : auto_in_a_bits_param; // @[AtomicAutomata.scala 152:24 153:31 155:32]
+  wire  source_c_bits_a_corrupt = cam_a_0_bits_corrupt | cam_d_0_corrupt; // @[AtomicAutomata.scala 166:45]
+  wire  source_c_bits_a_mask_sizeOH_shiftAmount = cam_a_0_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _source_c_bits_a_mask_sizeOH_T_1 = 2'h1 << source_c_bits_a_mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] source_c_bits_a_mask_sizeOH = _source_c_bits_a_mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _source_c_bits_a_mask_T = cam_a_0_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  source_c_bits_a_mask_size = source_c_bits_a_mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit = cam_a_0_bits_address[1]; // @[Misc.scala 209:26]
+  wire  source_c_bits_a_mask_nbit = ~source_c_bits_a_mask_bit; // @[Misc.scala 210:20]
+  wire  source_c_bits_a_mask_acc = _source_c_bits_a_mask_T | source_c_bits_a_mask_size & source_c_bits_a_mask_nbit; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_acc_1 = _source_c_bits_a_mask_T | source_c_bits_a_mask_size & source_c_bits_a_mask_bit; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_size_1 = source_c_bits_a_mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit_1 = cam_a_0_bits_address[0]; // @[Misc.scala 209:26]
+  wire  source_c_bits_a_mask_nbit_1 = ~source_c_bits_a_mask_bit_1; // @[Misc.scala 210:20]
+  wire  source_c_bits_a_mask_eq_2 = source_c_bits_a_mask_nbit & source_c_bits_a_mask_nbit_1; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_2 = source_c_bits_a_mask_acc | source_c_bits_a_mask_size_1 & source_c_bits_a_mask_eq_2; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_3 = source_c_bits_a_mask_nbit & source_c_bits_a_mask_bit_1; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_3 = source_c_bits_a_mask_acc | source_c_bits_a_mask_size_1 & source_c_bits_a_mask_eq_3; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_4 = source_c_bits_a_mask_bit & source_c_bits_a_mask_nbit_1; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_4 = source_c_bits_a_mask_acc_1 | source_c_bits_a_mask_size_1 &
+    source_c_bits_a_mask_eq_4; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_5 = source_c_bits_a_mask_bit & source_c_bits_a_mask_bit_1; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_5 = source_c_bits_a_mask_acc_1 | source_c_bits_a_mask_size_1 &
+    source_c_bits_a_mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] source_c_bits_a_mask = {source_c_bits_a_mask_acc_5,source_c_bits_a_mask_acc_4,source_c_bits_a_mask_acc_3,
+    source_c_bits_a_mask_acc_2}; // @[Cat.scala 31:58]
+  wire [12:0] _decode_T_1 = 13'h3f << auto_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] _decode_T_3 = ~_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] decode = _decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  opdata = ~auto_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire  latch = idle & auto_out_a_ready; // @[Arbiter.scala 89:24]
+  wire  readys_0 = _readys_T_7[0]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_0 = readys_0 & cam_amo_0; // @[Arbiter.scala 97:79]
+  wire  earlyWinner_1 = readys_1 & source_i_valid; // @[Arbiter.scala 97:79]
+  wire  _prefixOR_T = earlyWinner_0 | earlyWinner_1; // @[Arbiter.scala 104:53]
+  wire  _T_10 = ~reset; // @[Arbiter.scala 105:13]
+  wire  _T_12 = cam_amo_0 | source_i_valid; // @[Arbiter.scala 107:36]
+  wire  _T_13 = ~(cam_amo_0 | source_i_valid); // @[Arbiter.scala 107:15]
+  reg  state_0; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_0 = idle ? earlyWinner_0 : state_0; // @[Arbiter.scala 117:30]
+  wire  muxStateEarly_1 = idle ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  wire  _sink_ACancel_earlyValid_T_3 = state_0 & cam_amo_0 | state_1 & source_i_valid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_earlyValid = idle ? _T_12 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_out_a_ready & sink_ACancel_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [3:0] _GEN_40 = {{3'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [3:0] _beatsLeft_T_4 = beatsLeft - _GEN_40; // @[Arbiter.scala 113:52]
+  wire  allowed_0 = idle ? readys_0 : state_0; // @[Arbiter.scala 121:24]
+  wire  out_ready = auto_out_a_ready & allowed_0; // @[Arbiter.scala 123:31]
+  wire [31:0] _T_29 = muxStateEarly_0 ? amo_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_30 = muxStateEarly_1 ? auto_in_a_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_32 = muxStateEarly_0 ? source_c_bits_a_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_33 = muxStateEarly_1 ? auto_in_a_bits_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [29:0] _T_35 = muxStateEarly_0 ? cam_a_0_bits_address : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _T_36 = muxStateEarly_1 ? auto_in_a_bits_address : 30'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_38 = muxStateEarly_0 ? cam_a_0_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_39 = muxStateEarly_1 ? auto_in_a_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_41 = muxStateEarly_0 ? cam_a_0_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_42 = muxStateEarly_1 ? auto_in_a_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire  _T_50 = out_1_ready & source_i_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] _GEN_41 = {{1'd0}, auto_in_a_bits_param[1:0]}; // @[Mux.scala 81:61]
+  wire [3:0] _cam_a_0_lut_T_2 = 3'h1 == _GEN_41 ? 4'he : 4'h8; // @[Mux.scala 81:58]
+  wire [1:0] _GEN_12 = cam_free_0 ? 2'h3 : cam_s_0_state; // @[AtomicAutomata.scala 187:23 188:23 76:28]
+  wire [1:0] _GEN_23 = _T_50 & _T ? _GEN_12 : cam_s_0_state; // @[AtomicAutomata.scala 174:50 76:28]
+  wire  _T_53 = out_ready & cam_amo_0; // @[Decoupled.scala 50:35]
+  wire [1:0] _GEN_24 = cam_amo_0 ? 2'h1 : _GEN_23; // @[AtomicAutomata.scala 196:23 197:23]
+  wire [1:0] _GEN_25 = _T_53 ? _GEN_24 : _GEN_23; // @[AtomicAutomata.scala 194:32]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  wire  d_ackd = auto_out_d_bits_opcode == 3'h1; // @[AtomicAutomata.scala 213:40]
+  wire  d_cam_sel_raw_0 = cam_a_0_bits_source == auto_out_d_bits_source; // @[AtomicAutomata.scala 204:53]
+  wire  d_cam_sel_match_0 = d_cam_sel_raw_0 & cam_dmatch_0; // @[AtomicAutomata.scala 205:83]
+  wire  d_drop = d_first & d_ackd & d_cam_sel_match_0; // @[AtomicAutomata.scala 232:40]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | d_drop; // @[AtomicAutomata.scala 236:35]
+  wire  _d_first_T = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_ack = auto_out_d_bits_opcode == 3'h0; // @[AtomicAutomata.scala 214:40]
+  wire  d_replace = d_first & d_ack & d_cam_sel_match_0; // @[AtomicAutomata.scala 233:42]
+  TLMonitor_5 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  assign auto_in_a_ready = out_1_ready & a_allow; // @[AtomicAutomata.scala 150:38]
+  assign auto_in_d_valid = auto_out_d_valid & ~d_drop; // @[AtomicAutomata.scala 235:35]
+  assign auto_in_d_bits_opcode = d_replace ? 3'h1 : auto_out_d_bits_opcode; // @[AtomicAutomata.scala 238:19 239:26 240:28]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = d_replace ? cam_d_0_denied | auto_out_d_bits_denied : auto_out_d_bits_denied; // @[AtomicAutomata.scala 238:19 239:26 243:29]
+  assign auto_in_d_bits_data = d_replace ? cam_d_0_data : auto_out_d_bits_data; // @[AtomicAutomata.scala 238:19 239:26 241:26]
+  assign auto_in_d_bits_corrupt = d_replace ? cam_d_0_corrupt | auto_out_d_bits_denied : auto_out_d_bits_corrupt; // @[AtomicAutomata.scala 238:19 239:26 242:29]
+  assign auto_out_a_valid = idle ? _T_12 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_out_a_bits_opcode = muxStateEarly_1 ? source_i_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_param = muxStateEarly_1 ? source_i_bits_param : 3'h0; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_size = _T_41 | _T_42; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_source = _T_38 | _T_39; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_address = _T_35 | _T_36; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_mask = _T_32 | _T_33; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_data = _T_29 | _T_30; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_corrupt = muxStateEarly_0 & source_c_bits_a_corrupt | muxStateEarly_1 & auto_in_a_bits_corrupt; // @[Mux.scala 27:73]
+  assign auto_out_d_ready = auto_in_d_ready | d_drop; // @[AtomicAutomata.scala 236:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = out_1_ready & a_allow; // @[AtomicAutomata.scala 150:38]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~d_drop; // @[AtomicAutomata.scala 235:35]
+  assign monitor_io_in_d_bits_opcode = d_replace ? 3'h1 : auto_out_d_bits_opcode; // @[AtomicAutomata.scala 238:19 239:26 240:28]
+  assign monitor_io_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_denied = d_replace ? cam_d_0_denied | auto_out_d_bits_denied : auto_out_d_bits_denied; // @[AtomicAutomata.scala 238:19 239:26 243:29]
+  assign monitor_io_in_d_bits_corrupt = d_replace ? cam_d_0_corrupt | auto_out_d_bits_denied : auto_out_d_bits_corrupt; // @[AtomicAutomata.scala 238:19 239:26 242:29]
+  always @(posedge clock) begin
+    if (reset) begin // @[AtomicAutomata.scala 76:28]
+      cam_s_0_state <= 2'h0; // @[AtomicAutomata.scala 76:28]
+    end else if (_d_first_T & d_first) begin // @[AtomicAutomata.scala 216:40]
+      if (d_cam_sel_match_0) begin // @[AtomicAutomata.scala 225:23]
+        if (d_ackd) begin // @[AtomicAutomata.scala 227:29]
+          cam_s_0_state <= 2'h2;
+        end else begin
+          cam_s_0_state <= 2'h0;
+        end
+      end else begin
+        cam_s_0_state <= _GEN_25;
+      end
+    end else begin
+      cam_s_0_state <= _GEN_25;
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_opcode <= auto_in_a_bits_opcode; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_param <= auto_in_a_bits_param; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_size <= auto_in_a_bits_size; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_source <= auto_in_a_bits_source; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_address <= auto_in_a_bits_address; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_mask <= auto_in_a_bits_mask; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_data <= auto_in_a_bits_data; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_corrupt <= auto_in_a_bits_corrupt; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        if (3'h3 == _GEN_41) begin // @[Mux.scala 81:58]
+          cam_a_0_lut <= 4'hc;
+        end else if (3'h0 == _GEN_41) begin // @[Mux.scala 81:58]
+          cam_a_0_lut <= 4'h6;
+        end else begin
+          cam_a_0_lut <= _cam_a_0_lut_T_2;
+        end
+      end
+    end
+    if (_d_first_T & d_first) begin // @[AtomicAutomata.scala 216:40]
+      if (d_cam_sel_match_0 & d_ackd) begin // @[AtomicAutomata.scala 218:33]
+        cam_d_0_data <= auto_out_d_bits_data; // @[AtomicAutomata.scala 219:22]
+      end
+    end
+    if (_d_first_T & d_first) begin // @[AtomicAutomata.scala 216:40]
+      if (d_cam_sel_match_0 & d_ackd) begin // @[AtomicAutomata.scala 218:33]
+        cam_d_0_denied <= auto_out_d_bits_denied; // @[AtomicAutomata.scala 220:24]
+      end
+    end
+    if (_d_first_T & d_first) begin // @[AtomicAutomata.scala 216:40]
+      if (d_cam_sel_match_0 & d_ackd) begin // @[AtomicAutomata.scala 218:33]
+        cam_d_0_corrupt <= auto_out_d_bits_corrupt; // @[AtomicAutomata.scala 221:25]
+      end
+    end
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 4'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      if (earlyWinner_1) begin // @[Arbiter.scala 111:73]
+        if (opdata) begin // @[Edges.scala 220:14]
+          beatsLeft <= decode;
+        end else begin
+          beatsLeft <= 4'h0;
+        end
+      end else begin
+        beatsLeft <= 4'h0;
+      end
+    end else begin
+      beatsLeft <= _beatsLeft_T_4;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_1 <= earlyWinner_1;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_0 <= earlyWinner_0;
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~earlyWinner_0 | ~earlyWinner_1) & ~reset) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~earlyWinner_0 | ~earlyWinner_1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(cam_amo_0 | source_i_valid) | _prefixOR_T) & _T_10) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_10 & ~(~(cam_amo_0 | source_i_valid) | _prefixOR_T)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_13 | _T_12) & _T_10) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_10 & ~(_T_13 | _T_12)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  cam_s_0_state = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  cam_a_0_bits_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  cam_a_0_bits_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  cam_a_0_bits_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  cam_a_0_bits_source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  cam_a_0_bits_address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  cam_a_0_bits_mask = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  cam_a_0_bits_data = _RAND_7[31:0];
+  _RAND_8 = {1{`RANDOM}};
+  cam_a_0_bits_corrupt = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  cam_a_0_lut = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  cam_d_0_data = _RAND_10[31:0];
+  _RAND_11 = {1{`RANDOM}};
+  cam_d_0_denied = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  cam_d_0_corrupt = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  beatsLeft = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  state_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  state_0 = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  d_first_counter = _RAND_16[3:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_6(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_45 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_48 = $signed(_T_46) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79; // @[Parameters.scala 671:42]
+  wire  _T_91 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84; // @[Parameters.scala 671:42]
+  wire  _T_101 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_102 = _source_ok_T & _T_101; // @[Mux.scala 27:73]
+  wire  _T_160 = _T_102 & _T_91; // @[Monitor.scala 83:78]
+  wire  _T_174 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_178 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_179 = _T_178 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_183 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_187 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_332 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_345 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_360 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_410 = _T_360 & _T_91; // @[Parameters.scala 670:56]
+  wire  _T_421 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_425 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_433 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_489 = _T_360 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_499 = source_ok & _T_489; // @[Monitor.scala 115:71]
+  wire  _T_517 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_597 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_598 = io_in_a_bits_mask & _T_597; // @[Monitor.scala 127:31]
+  wire  _T_599 = _T_598 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_603 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_615 = io_in_a_bits_size <= 3'h2; // @[Parameters.scala 92:42]
+  wire  _T_659 = _T_615 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_669 = source_ok & _T_659; // @[Monitor.scala 131:74]
+  wire  _T_679 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_687 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_763 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_771 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_842 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_854 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_858 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_862 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_866 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_870 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_874 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_878 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_889 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_893 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_906 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_926 = _T_874 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_935 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_952 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_970 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1000 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1001 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1005 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1009 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1013 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1017 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1024 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1025 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1029 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1033 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1037 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1041 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1045 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1051 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1054 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1056 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1058 = ~_T_1056[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1062 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1064 = ~_T_858; // @[Monitor.scala 671:74]
+  wire  _T_1065 = io_in_d_valid & d_first_1 & ~_T_858; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_858 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1064 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1064 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1051 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1075 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1077 = _T_1075[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1082 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1083 = io_in_d_bits_opcode == _GEN_32 | _T_1082; // @[Monitor.scala 685:77]
+  wire  _T_1087 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1094 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1095 = io_in_d_bits_opcode == _GEN_48 | _T_1094; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1099 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1109 = _T_1062 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1064; // @[Monitor.scala 694:116]
+  wire  _T_1111 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_1118 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1127 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1153 = io_in_d_valid & d_first_2 & _T_858; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_858 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_858 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_1161 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_1171 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1196 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_160 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_160) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_174 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_174) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_332 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_332) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_179 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_187 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_187 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_410 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_410) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_433 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_433 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_421 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (io_in_a_valid & _T_517 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_517 & ~reset & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_669 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_669) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_679 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_679) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_603 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_603 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_669 & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~_T_669) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_763 & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~_T_763) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_687 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_687 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_842 & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~_T_842) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_425 & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~_T_425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_771 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_771 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_854 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_854) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_862 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~_T_862) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_870 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~_T_870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_858 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_858 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_862 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_862) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_889 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_889) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_893 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_893) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_870 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_878 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_878 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_862 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_862) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_889 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_889) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_893 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_893) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_926 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_926) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_906 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_906 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_935 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_935 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_d_valid & _T_935 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_935 & _T_2 & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_870 & (io_in_d_valid & _T_935 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_935 & _T_2 & ~_T_870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_935 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_935 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_952 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_952 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_d_valid & _T_952 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_952 & _T_2 & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_926 & (io_in_d_valid & _T_952 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_952 & _T_2 & ~_T_926) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_952 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_952 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_970 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_970 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_d_valid & _T_970 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_970 & _T_2 & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_870 & (io_in_d_valid & _T_970 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_970 & _T_2 & ~_T_870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_874 & (io_in_d_valid & _T_970 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_970 & _T_2 & ~_T_874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1001 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1001) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1005 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1005) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1009 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1009) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1013 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1013) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1017 & (_T_1000 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1000 & ~reset & ~_T_1017) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1025 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1025) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1029 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1029) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1033 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1033) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1037 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1037) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1041 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1041) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1045 & (_T_1024 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1024 & _T_2 & ~_T_1045) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1058 & (_T_1054 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1054 & ~reset & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1077 & (_T_1065 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & _T_2 & ~_T_1077) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1083 & (_T_1065 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & same_cycle_resp & _T_2 & ~_T_1083) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1087 & (_T_1065 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & same_cycle_resp & _T_2 & ~_T_1087) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1095 & (_T_1065 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & ~same_cycle_resp & _T_2 & ~_T_1095) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1099 & (_T_1065 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1065 & ~same_cycle_resp & _T_2 & ~_T_1099) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1111 & (_T_1109 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1109 & _T_2 & ~_T_1111) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1118 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_1118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 4 (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1127 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1127) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1161[0] & (_T_1153 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1153 & _T_2 & ~_T_1161[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1171 & (_T_1153 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1153 & _T_2 & ~_T_1171) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1196 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1196) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:44)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[11:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[3:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[11:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[3:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer_1(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [29:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [29:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  TLMonitor_6 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  Queue bundleOut_0_a_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_a_q_clock),
+    .reset(bundleOut_0_a_q_reset),
+    .io_enq_ready(bundleOut_0_a_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_q_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_q_io_enq_bits_mask),
+    .io_enq_bits_data(bundleOut_0_a_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleOut_0_a_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleOut_0_a_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_q_io_deq_bits_mask),
+    .io_deq_bits_data(bundleOut_0_a_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_a_q_io_deq_bits_corrupt)
+  );
+  Queue_1 bundleIn_0_d_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleIn_0_d_q_clock),
+    .reset(bundleIn_0_d_q_reset),
+    .io_enq_ready(bundleIn_0_d_q_io_enq_ready),
+    .io_enq_valid(bundleIn_0_d_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleIn_0_d_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleIn_0_d_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleIn_0_d_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_q_io_enq_bits_source),
+    .io_enq_bits_sink(bundleIn_0_d_q_io_enq_bits_sink),
+    .io_enq_bits_denied(bundleIn_0_d_q_io_enq_bits_denied),
+    .io_enq_bits_data(bundleIn_0_d_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleIn_0_d_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleIn_0_d_q_io_deq_ready),
+    .io_deq_valid(bundleIn_0_d_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_d_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_d_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_d_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_d_q_io_deq_bits_source),
+    .io_deq_bits_sink(bundleIn_0_d_q_io_deq_bits_sink),
+    .io_deq_bits_denied(bundleIn_0_d_q_io_deq_bits_denied),
+    .io_deq_bits_data(bundleIn_0_d_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleIn_0_d_q_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_data = bundleIn_0_d_q_io_deq_bits_data; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_out_a_valid = bundleOut_0_a_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_q_io_deq_bits_mask; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_data = bundleOut_0_a_q_io_deq_bits_data; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_d_ready = bundleIn_0_d_q_io_enq_ready; // @[Nodes.scala 1207:84 Decoupled.scala 365:17]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign bundleOut_0_a_q_clock = clock;
+  assign bundleOut_0_a_q_reset = reset;
+  assign bundleOut_0_a_q_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_clock = clock;
+  assign bundleIn_0_d_q_reset = reset;
+  assign bundleIn_0_d_q_io_enq_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_deq_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_7(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10013000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater(
+  input         clock,
+  input         reset,
+  input         io_repeat,
+  output        io_full,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [28:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [28:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg  full; // @[Repeater.scala 19:21]
+  reg [2:0] saved_opcode; // @[Repeater.scala 20:18]
+  reg [2:0] saved_param; // @[Repeater.scala 20:18]
+  reg [2:0] saved_size; // @[Repeater.scala 20:18]
+  reg [1:0] saved_source; // @[Repeater.scala 20:18]
+  reg [28:0] saved_address; // @[Repeater.scala 20:18]
+  reg [3:0] saved_mask; // @[Repeater.scala 20:18]
+  reg  saved_corrupt; // @[Repeater.scala 20:18]
+  wire  _T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = _T & io_repeat | full; // @[Repeater.scala 19:21 28:{38,45}]
+  wire  _T_2 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign io_full = full; // @[Repeater.scala 26:11]
+  assign io_enq_ready = io_deq_ready & ~full; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid | full; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = full ? saved_opcode : io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = full ? saved_param : io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = full ? saved_size : io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = full ? saved_source : io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = full ? saved_address : io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = full ? saved_mask : io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_corrupt = full ? saved_corrupt : io_enq_bits_corrupt; // @[Repeater.scala 25:21]
+  always @(posedge clock) begin
+    if (reset) begin // @[Repeater.scala 19:21]
+      full <= 1'h0; // @[Repeater.scala 19:21]
+    end else if (_T_2 & ~io_repeat) begin // @[Repeater.scala 29:38]
+      full <= 1'h0; // @[Repeater.scala 29:45]
+    end else begin
+      full <= _GEN_0;
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_opcode <= io_enq_bits_opcode; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_param <= io_enq_bits_param; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_size <= io_enq_bits_size; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_source <= io_enq_bits_source; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_address <= io_enq_bits_address; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_mask <= io_enq_bits_mask; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_corrupt <= io_enq_bits_corrupt; // @[Repeater.scala 28:62]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  full = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  saved_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  saved_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  saved_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  saved_source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  saved_corrupt = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_7 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_4(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_8(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10023000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_1(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_8 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_5(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_1 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_9(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10033000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_2(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_9 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_6(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_2 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_10(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10043000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_3(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_10 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_7(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_3 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_11(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10053000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at UART.scala:268:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_4(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_11 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_8(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_4 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_12(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10014000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:118:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:118:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_5(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_12 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_9(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_5 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_13(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input         io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_45 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_48 = $signed(_T_46) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_260 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_299 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_328 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_336 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_365 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_373 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_402 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg [5:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [5:0] a_first_counter1 = a_first_counter - 6'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 6'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_560 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_561 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_565 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_569 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_573 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_577 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] d_first_beats1_decode = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  reg [5:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1 = d_first_counter - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 6'h0; // @[Edges.scala 230:25]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_584 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_593 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_597 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [5:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [5:0] a_first_counter1_1 = a_first_counter_1 - 6'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 6'h0; // @[Edges.scala 230:25]
+  reg [5:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1_1 = d_first_counter_1 - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 6'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_611 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_614 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_616 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_618 = ~_T_616[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_622 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_611 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_635 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_637 = _T_635[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_642 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_643 = 3'h1 == _GEN_32 | _T_642; // @[Monitor.scala 685:77]
+  wire  _T_647 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_654 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_655 = 3'h1 == _GEN_48 | _T_654; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_659 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_667 = _T_622 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_671 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_680 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 6'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 6'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= d_first_beats1_decode;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 6'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= d_first_beats1_decode;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_328 & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~_T_328) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_365 & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~_T_365) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_561 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_561) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_569 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_569) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_593 & (_T_584 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_584 & _T_2 & ~_T_593) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:131:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_597 & (_T_584 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_584 & _T_2 & ~_T_597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:131:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_618 & (_T_614 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_614 & ~reset & ~_T_618) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_637 & (_T_622 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & _T_2 & ~_T_637) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:131:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_622 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & same_cycle_resp & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:131:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_647 & (_T_622 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & same_cycle_resp & _T_2 & ~_T_647) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:131:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_655 & (_T_622 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & ~same_cycle_resp & _T_2 & ~_T_655) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:131:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_659 & (_T_622 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & ~same_cycle_resp & _T_2 & ~_T_659) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:131:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_671 & (_T_667 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_667 & _T_2 & ~_T_671) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_680 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_680) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:131:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[5:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[5:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[11:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[5:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[5:0];
+  _RAND_14 = {1{`RANDOM}};
+  watchdog = _RAND_14[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater_6(
+  input         clock,
+  input         reset,
+  input         io_repeat,
+  output        io_full,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [29:0] io_enq_bits_address,
+  input         io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [29:0] io_deq_bits_address,
+  output        io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg  full; // @[Repeater.scala 19:21]
+  reg [2:0] saved_opcode; // @[Repeater.scala 20:18]
+  reg [2:0] saved_param; // @[Repeater.scala 20:18]
+  reg [2:0] saved_size; // @[Repeater.scala 20:18]
+  reg [1:0] saved_source; // @[Repeater.scala 20:18]
+  reg [29:0] saved_address; // @[Repeater.scala 20:18]
+  reg  saved_mask; // @[Repeater.scala 20:18]
+  reg  saved_corrupt; // @[Repeater.scala 20:18]
+  wire  _T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = _T & io_repeat | full; // @[Repeater.scala 19:21 28:{38,45}]
+  wire  _T_2 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign io_full = full; // @[Repeater.scala 26:11]
+  assign io_enq_ready = io_deq_ready & ~full; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid | full; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = full ? saved_opcode : io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = full ? saved_param : io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = full ? saved_size : io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = full ? saved_source : io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = full ? saved_address : io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = full ? saved_mask : io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_corrupt = full ? saved_corrupt : io_enq_bits_corrupt; // @[Repeater.scala 25:21]
+  always @(posedge clock) begin
+    if (reset) begin // @[Repeater.scala 19:21]
+      full <= 1'h0; // @[Repeater.scala 19:21]
+    end else if (_T_2 & ~io_repeat) begin // @[Repeater.scala 29:38]
+      full <= 1'h0; // @[Repeater.scala 29:45]
+    end else begin
+      full <= _GEN_0;
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_opcode <= io_enq_bits_opcode; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_param <= io_enq_bits_param; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_size <= io_enq_bits_size; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_source <= io_enq_bits_source; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_address <= io_enq_bits_address; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_mask <= io_enq_bits_mask; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_corrupt <= io_enq_bits_corrupt; // @[Repeater.scala 28:62]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  full = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  saved_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  saved_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  saved_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  saved_source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  saved_corrupt = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_6(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input         auto_in_a_bits_mask,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [7:0]  auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output        auto_out_a_bits_size,
+  output [8:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output        auto_out_a_bits_mask,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input         auto_out_d_bits_size,
+  input  [8:0]  auto_out_d_bits_source,
+  input  [7:0]  auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [29:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [29:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [5:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [5:0] dFragnum = auto_out_d_bits_source[5:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 6'h0; // @[Fragmenter.scala 193:29]
+  wire [1:0] _dsizeOH1_T_1 = 2'h1 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire  dsizeOH1 = ~_dsizeOH1_T_1[0]; // @[package.scala 234:46]
+  wire [5:0] _GEN_7 = {{5'd0}, dsizeOH1}; // @[Fragmenter.scala 202:50]
+  wire [5:0] _T_1 = dFragnum & _GEN_7; // @[Fragmenter.scala 202:50]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire [5:0] dFirst_acknum = dFragnum | _GEN_7; // @[Fragmenter.scala 203:45]
+  wire [6:0] _dFirst_size_T_2 = {dFirst_acknum, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,dFirst_acknum}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_10 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_10 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  _T_7 = auto_in_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [5:0] _acknum_T_1 = acknum - 6'h1; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h0 ? 3'h0 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [7:0] _aFragOH1_T_1 = 8'h1 << aFrag; // @[package.scala 234:77]
+  wire  aFragOH1 = ~_aFragOH1_T_1[0]; // @[package.scala 234:46]
+  reg [5:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 6'h0; // @[Fragmenter.scala 292:29]
+  wire [5:0] _old_gennum1_T_2 = gennum - 6'h1; // @[Fragmenter.scala 293:79]
+  wire [5:0] old_gennum1 = aFirst ? aOrigOH1 : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [5:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [5:0] _GEN_11 = {{5'd0}, aFragOH1}; // @[Fragmenter.scala 294:41]
+  wire [5:0] _new_gennum_T_2 = _new_gennum_T | _GEN_11; // @[Fragmenter.scala 294:41]
+  wire [5:0] new_gennum = ~_new_gennum_T_2; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = old_gennum1 | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_11; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_3; // @[Fragmenter.scala 304:51]
+  wire [29:0] _GEN_14 = {{24'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_13 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_6 repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[8:7]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_14; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full | auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[8:7]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = new_gennum != 6'h0; // @[Fragmenter.scala 302:53]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 6'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFirst_acknum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[6]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 6'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~auto_out_d_valid | _T_1 == 6'h0) & ~reset) begin
+          $fatal; // @[Fragmenter.scala 202:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~auto_out_d_valid | _T_1 == 6'h0)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:202 assert (!out.d.valid || (acknum_fragment & acknum_size) === UInt(0))\n"
+            ); // @[Fragmenter.scala 202:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[5:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[5:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_14(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input         io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_45 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_48 = $signed(_T_46) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_260 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_299 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_328 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_336 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_365 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_373 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_402 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg [5:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [5:0] a_first_counter1 = a_first_counter - 6'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 6'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_560 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_561 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_565 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_569 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_573 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_577 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] d_first_beats1_decode = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  reg [5:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1 = d_first_counter - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 6'h0; // @[Edges.scala 230:25]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_584 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_593 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_597 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [5:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [5:0] a_first_counter1_1 = a_first_counter_1 - 6'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 6'h0; // @[Edges.scala 230:25]
+  reg [5:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1_1 = d_first_counter_1 - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 6'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_611 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_614 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_616 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_618 = ~_T_616[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_622 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_611 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_635 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_637 = _T_635[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_642 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_643 = 3'h1 == _GEN_32 | _T_642; // @[Monitor.scala 685:77]
+  wire  _T_647 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_654 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_655 = 3'h1 == _GEN_48 | _T_654; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_659 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_667 = _T_622 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_671 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_678 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_687 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 6'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 6'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= d_first_beats1_decode;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 6'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= d_first_beats1_decode;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_328 & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~_T_328) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_365 & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~_T_365) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_94 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & _T_94) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_561 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_561) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_569 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_569) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_593 & (_T_584 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_584 & _T_2 & ~_T_593) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_597 & (_T_584 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_584 & _T_2 & ~_T_597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_618 & (_T_614 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_614 & ~reset & ~_T_618) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_637 & (_T_622 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & _T_2 & ~_T_637) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_622 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & same_cycle_resp & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_647 & (_T_622 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & same_cycle_resp & _T_2 & ~_T_647) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_655 & (_T_622 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & ~same_cycle_resp & _T_2 & ~_T_655) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_659 & (_T_622 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & ~same_cycle_resp & _T_2 & ~_T_659) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_671 & (_T_667 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_667 & _T_2 & ~_T_671) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_678 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_678) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at SPI.scala:132:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_687 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_687) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:132:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[5:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[5:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[11:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[5:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[5:0];
+  _RAND_14 = {1{`RANDOM}};
+  watchdog = _RAND_14[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_4(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [29:0] io_enq_bits_address,
+  input         io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [29:0] io_deq_bits_address,
+  output        io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_param [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_size [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [29:0] ram_address [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [29:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [29:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_mask [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] value; // @[Counter.scala 62:40]
+  reg [2:0] value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] _value_T_1 = value + 3'h1; // @[Counter.scala 78:24]
+  wire [2:0] _value_T_3 = value_1 + 3'h1; // @[Counter.scala 78:24]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = io_enq_bits_corrupt;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 3'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= _value_T_1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 3'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= _value_T_3; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[29:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_6[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_7 = {1{`RANDOM}};
+  value = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  value_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  maybe_full = _RAND_9[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer_2(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input         auto_in_a_bits_mask,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [7:0]  auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output        auto_out_a_bits_mask,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [7:0]  auto_out_d_bits_data
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [29:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [29:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  TLMonitor_14 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Queue_4 bundleOut_0_a_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_a_q_clock),
+    .reset(bundleOut_0_a_q_reset),
+    .io_enq_ready(bundleOut_0_a_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_q_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_q_io_enq_bits_mask),
+    .io_enq_bits_corrupt(bundleOut_0_a_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleOut_0_a_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_q_io_deq_bits_mask),
+    .io_deq_bits_corrupt(bundleOut_0_a_q_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = bundleOut_0_a_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_q_io_deq_bits_mask; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleOut_0_a_q_clock = clock;
+  assign bundleOut_0_a_q_reset = reset;
+  assign bundleOut_0_a_q_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_15(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_45 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_48 = $signed(_T_46) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_260 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_293 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_294 = io_in_a_bits_mask & _T_293; // @[Monitor.scala 127:31]
+  wire  _T_295 = _T_294 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_299 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_328 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_336 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_365 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_373 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_402 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_560 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_561 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_565 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_569 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_573 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_577 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_584 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_593 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_597 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_611 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_614 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_616 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_618 = ~_T_616[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_622 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_611 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_635 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_637 = _T_635[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_642 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_643 = 3'h1 == _GEN_32 | _T_642; // @[Monitor.scala 685:77]
+  wire  _T_647 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_654 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_655 = 3'h1 == _GEN_48 | _T_654; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_659 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_667 = _T_622 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_671 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_678 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_687 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 4'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= d_first_beats1_decode;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 4'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= d_first_beats1_decode;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_295 & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~_T_295) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_328 & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~_T_328) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_365 & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~_T_365) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_561 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_561) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_569 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_569) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_593 & (_T_584 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_584 & _T_2 & ~_T_593) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_597 & (_T_584 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_584 & _T_2 & ~_T_597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_618 & (_T_614 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_614 & ~reset & ~_T_618) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_637 & (_T_622 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & _T_2 & ~_T_637) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_622 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & same_cycle_resp & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_647 & (_T_622 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & same_cycle_resp & _T_2 & ~_T_647) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_655 & (_T_622 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & ~same_cycle_resp & _T_2 & ~_T_655) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_659 & (_T_622 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & ~same_cycle_resp & _T_2 & ~_T_659) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_671 & (_T_667 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_667 & _T_2 & ~_T_671) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_678 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_678) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at SPI.scala:133:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_687 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_687) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:133:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[11:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[3:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  watchdog = _RAND_14[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater_7(
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [29:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [29:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+  assign io_enq_ready = io_deq_ready; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_corrupt = io_enq_bits_corrupt; // @[Repeater.scala 25:21]
+endmodule
+module TLWidthWidget_3(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output        auto_out_a_bits_mask,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [7:0]  auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeated_repeater_io_enq_ready; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_enq_valid; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_enq_bits_opcode; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_enq_bits_param; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_enq_bits_size; // @[Repeater.scala 35:26]
+  wire [1:0] repeated_repeater_io_enq_bits_source; // @[Repeater.scala 35:26]
+  wire [29:0] repeated_repeater_io_enq_bits_address; // @[Repeater.scala 35:26]
+  wire [3:0] repeated_repeater_io_enq_bits_mask; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_enq_bits_corrupt; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_deq_ready; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_deq_valid; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_deq_bits_opcode; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_deq_bits_param; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_deq_bits_size; // @[Repeater.scala 35:26]
+  wire [1:0] repeated_repeater_io_deq_bits_source; // @[Repeater.scala 35:26]
+  wire [29:0] repeated_repeater_io_deq_bits_address; // @[Repeater.scala 35:26]
+  wire [3:0] repeated_repeater_io_deq_bits_mask; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_deq_bits_corrupt; // @[Repeater.scala 35:26]
+  wire [29:0] cated_bits_address = repeated_repeater_io_deq_bits_address; // @[WidthWidget.scala 155:25 156:15]
+  wire [1:0] repeat_sel = cated_bits_address[1:0]; // @[WidthWidget.scala 110:39]
+  wire [3:0] cated_bits_mask = repeated_repeater_io_deq_bits_mask; // @[WidthWidget.scala 155:25 156:15]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_0 = cated_bits_mask[0]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_1 = cated_bits_mask[1]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_2 = cated_bits_mask[2]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_3 = cated_bits_mask[3]; // @[WidthWidget.scala 122:55]
+  wire  _GEN_3 = 2'h1 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_1 : repeat_bundleOut_0_a_bits_mask_mux_0; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_4 = 2'h2 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_2 : _GEN_3; // @[WidthWidget.scala 134:{53,53}]
+  wire [8:0] _limit_T_1 = 9'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] limit = ~_limit_T_1[1:0]; // @[package.scala 234:46]
+  reg [1:0] count; // @[WidthWidget.scala 34:27]
+  wire  last = count == limit; // @[WidthWidget.scala 36:26]
+  wire [1:0] _enable_T_1 = count & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_0 = ~(|_enable_T_1); // @[WidthWidget.scala 37:47]
+  wire [1:0] _enable_T_3 = count ^ 2'h1; // @[WidthWidget.scala 37:56]
+  wire [1:0] _enable_T_4 = _enable_T_3 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_1 = ~(|_enable_T_4); // @[WidthWidget.scala 37:47]
+  wire [1:0] _enable_T_6 = count ^ 2'h2; // @[WidthWidget.scala 37:56]
+  wire [1:0] _enable_T_7 = _enable_T_6 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_2 = ~(|_enable_T_7); // @[WidthWidget.scala 37:47]
+  wire  _bundleOut_0_d_ready_T = ~last; // @[WidthWidget.scala 70:32]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | ~last; // @[WidthWidget.scala 70:29]
+  wire  _T = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [1:0] _count_T_1 = count + 2'h1; // @[WidthWidget.scala 44:24]
+  reg  bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 56:41]
+  wire  bundleIn_0_d_bits_data_masked_enable_0 = enable_0 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_1 = enable_1 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_2 = enable_2 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_0; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_1; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_2; // @[WidthWidget.scala 60:24]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_0 = bundleIn_0_d_bits_data_masked_enable_0 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_0; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_1 = bundleIn_0_d_bits_data_masked_enable_1 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_1; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_2 = bundleIn_0_d_bits_data_masked_enable_2 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_2; // @[WidthWidget.scala 62:88]
+  wire  _GEN_10 = _T & _bundleOut_0_d_ready_T | bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 63:35 64:30 56:41]
+  wire [15:0] bundleIn_0_d_bits_data_lo = {bundleIn_0_d_bits_data_mdata_1,bundleIn_0_d_bits_data_mdata_0}; // @[Cat.scala 31:58]
+  wire [15:0] bundleIn_0_d_bits_data_hi = {auto_out_d_bits_data,bundleIn_0_d_bits_data_mdata_2}; // @[Cat.scala 31:58]
+  TLMonitor_15 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_7 repeated_repeater ( // @[Repeater.scala 35:26]
+    .io_enq_ready(repeated_repeater_io_enq_ready),
+    .io_enq_valid(repeated_repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeated_repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeated_repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeated_repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeated_repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeated_repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeated_repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeated_repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeated_repeater_io_deq_ready),
+    .io_deq_valid(repeated_repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeated_repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeated_repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeated_repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeated_repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeated_repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeated_repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeated_repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeated_repeater_io_enq_ready; // @[Nodes.scala 1210:84 Repeater.scala 37:21]
+  assign auto_in_d_valid = auto_out_d_valid & last; // @[WidthWidget.scala 71:29]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = {bundleIn_0_d_bits_data_hi,bundleIn_0_d_bits_data_lo}; // @[Cat.scala 31:58]
+  assign auto_out_a_valid = repeated_repeater_io_deq_valid; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_opcode = repeated_repeater_io_deq_bits_opcode; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_param = repeated_repeater_io_deq_bits_param; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_size = repeated_repeater_io_deq_bits_size; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_source = repeated_repeater_io_deq_bits_source; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_address = repeated_repeater_io_deq_bits_address; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_mask = 2'h3 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_3 : _GEN_4; // @[WidthWidget.scala 134:{53,53}]
+  assign auto_out_a_bits_corrupt = repeated_repeater_io_deq_bits_corrupt; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_d_ready = auto_in_d_ready | ~last; // @[WidthWidget.scala 70:29]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeated_repeater_io_enq_ready; // @[Nodes.scala 1210:84 Repeater.scala 37:21]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & last; // @[WidthWidget.scala 71:29]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign repeated_repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[WidthWidget.scala 34:27]
+      count <= 2'h0; // @[WidthWidget.scala 34:27]
+    end else if (_T) begin // @[WidthWidget.scala 43:24]
+      if (last) begin // @[WidthWidget.scala 46:21]
+        count <= 2'h0; // @[WidthWidget.scala 47:17]
+      end else begin
+        count <= _count_T_1; // @[WidthWidget.scala 44:15]
+      end
+    end
+    if (reset) begin // @[WidthWidget.scala 56:41]
+      bundleIn_0_d_bits_data_rdata_written_once <= 1'h0; // @[WidthWidget.scala 56:41]
+    end else begin
+      bundleIn_0_d_bits_data_rdata_written_once <= _GEN_10;
+    end
+    if (_T & _bundleOut_0_d_ready_T) begin // @[WidthWidget.scala 63:35]
+      if (bundleIn_0_d_bits_data_masked_enable_0) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_0 <= auto_out_d_bits_data;
+      end
+    end
+    if (_T & _bundleOut_0_d_ready_T) begin // @[WidthWidget.scala 63:35]
+      if (bundleIn_0_d_bits_data_masked_enable_1) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_1 <= auto_out_d_bits_data;
+      end
+    end
+    if (_T & _bundleOut_0_d_ready_T) begin // @[WidthWidget.scala 63:35]
+      if (bundleIn_0_d_bits_data_masked_enable_2) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_2 <= auto_out_d_bits_data;
+      end
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  count = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_written_once = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_0 = _RAND_2[7:0];
+  _RAND_3 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_1 = _RAND_3[7:0];
+  _RAND_4 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_2 = _RAND_4[7:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_10(
+  input         clock,
+  input         reset,
+  input         auto_mem_xing_out_a_ready,
+  output        auto_mem_xing_out_a_valid,
+  output [2:0]  auto_mem_xing_out_a_bits_opcode,
+  output [2:0]  auto_mem_xing_out_a_bits_param,
+  output        auto_mem_xing_out_a_bits_size,
+  output [8:0]  auto_mem_xing_out_a_bits_source,
+  output [29:0] auto_mem_xing_out_a_bits_address,
+  output        auto_mem_xing_out_a_bits_mask,
+  output        auto_mem_xing_out_a_bits_corrupt,
+  output        auto_mem_xing_out_d_ready,
+  input         auto_mem_xing_out_d_valid,
+  input         auto_mem_xing_out_d_bits_size,
+  input  [8:0]  auto_mem_xing_out_d_bits_source,
+  input  [7:0]  auto_mem_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [29:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [29:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [8:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [29:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [8:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  buffer_clock; // @[Buffer.scala 68:28]
+  wire  buffer_reset; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  widget_clock; // @[WidthWidget.scala 219:28]
+  wire  widget_reset; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [29:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [29:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  TLFragmenter_6 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  TLBuffer_2 buffer ( // @[Buffer.scala 68:28]
+    .clock(buffer_clock),
+    .reset(buffer_reset),
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  TLWidthWidget_3 widget ( // @[WidthWidget.scala 219:28]
+    .clock(widget_clock),
+    .reset(widget_reset),
+    .auto_in_a_ready(widget_auto_in_a_ready),
+    .auto_in_a_valid(widget_auto_in_a_valid),
+    .auto_in_a_bits_opcode(widget_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(widget_auto_in_a_bits_param),
+    .auto_in_a_bits_size(widget_auto_in_a_bits_size),
+    .auto_in_a_bits_source(widget_auto_in_a_bits_source),
+    .auto_in_a_bits_address(widget_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(widget_auto_in_a_bits_mask),
+    .auto_in_a_bits_corrupt(widget_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(widget_auto_in_d_ready),
+    .auto_in_d_valid(widget_auto_in_d_valid),
+    .auto_in_d_bits_size(widget_auto_in_d_bits_size),
+    .auto_in_d_bits_source(widget_auto_in_d_bits_source),
+    .auto_in_d_bits_data(widget_auto_in_d_bits_data),
+    .auto_out_a_ready(widget_auto_out_a_ready),
+    .auto_out_a_valid(widget_auto_out_a_valid),
+    .auto_out_a_bits_opcode(widget_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(widget_auto_out_a_bits_param),
+    .auto_out_a_bits_size(widget_auto_out_a_bits_size),
+    .auto_out_a_bits_source(widget_auto_out_a_bits_source),
+    .auto_out_a_bits_address(widget_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(widget_auto_out_a_bits_mask),
+    .auto_out_a_bits_corrupt(widget_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(widget_auto_out_d_ready),
+    .auto_out_d_valid(widget_auto_out_d_valid),
+    .auto_out_d_bits_size(widget_auto_out_d_bits_size),
+    .auto_out_d_bits_source(widget_auto_out_d_bits_source),
+    .auto_out_d_bits_data(widget_auto_out_d_bits_data)
+  );
+  assign auto_mem_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = widget_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = widget_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = widget_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = widget_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = widget_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_a_ready = auto_mem_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_mem_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_mem_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_mem_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_mem_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_clock = clock;
+  assign buffer_reset = reset;
+  assign buffer_auto_in_a_valid = widget_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_opcode = widget_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_param = widget_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_size = widget_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_source = widget_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_address = widget_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_mask = widget_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_corrupt = widget_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_d_ready = widget_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_a_ready = fragmenter_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = fragmenter_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_size = fragmenter_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = fragmenter_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = fragmenter_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign widget_clock = clock;
+  assign widget_reset = reset;
+  assign widget_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_out_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_source = buffer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+endmodule
+module TLMonitor_16(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10034000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:65:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:65:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_7(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_16 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_11(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_7 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_17(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10024000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:61:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:61:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_8(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_17 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_12(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_8 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_18(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10012000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at GPIO.scala:307:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at GPIO.scala:307:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_9(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_18 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_13(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_9 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_19(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10015000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_10(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_19 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_14(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_10 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_20(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10025000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_11(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_20 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_15(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_11 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_21(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10035000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PWM.scala:160:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PWM.scala:160:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_12(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_21 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_16(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_12 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_22(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10016000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_13(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_22 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_17(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_13 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_23(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10026000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at I2C.scala:622:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at I2C.scala:622:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_14(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_23 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_18(
+  input         clock,
+  input         reset,
+  input         auto_control_xing_out_a_ready,
+  output        auto_control_xing_out_a_valid,
+  output [2:0]  auto_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_control_xing_out_a_bits_param,
+  output [1:0]  auto_control_xing_out_a_bits_size,
+  output [6:0]  auto_control_xing_out_a_bits_source,
+  output [28:0] auto_control_xing_out_a_bits_address,
+  output [3:0]  auto_control_xing_out_a_bits_mask,
+  output [31:0] auto_control_xing_out_a_bits_data,
+  output        auto_control_xing_out_a_bits_corrupt,
+  output        auto_control_xing_out_d_ready,
+  input         auto_control_xing_out_d_valid,
+  input  [2:0]  auto_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_control_xing_out_d_bits_size,
+  input  [6:0]  auto_control_xing_out_d_bits_source,
+  input  [31:0] auto_control_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_14 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_control_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_control_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_control_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_control_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_control_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_control_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_control_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module PeripheryBus(
+  input         auto_coupler_to_device_named_i2c_1_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_i2c_1_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_i2c_1_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_i2c_1_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_i2c_0_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_i2c_0_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_i2c_0_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_i2c_0_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_pwm_2_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_pwm_2_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_pwm_2_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_pwm_2_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_pwm_1_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_pwm_1_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_pwm_1_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_pwm_1_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_pwm_0_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_pwm_0_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_pwm_0_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_pwm_0_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_gpio_0_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_gpio_0_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_gpio_0_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_gpio_0_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_spi_0_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_spi_0_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_spi_0_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_spi_0_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_qspi_0_mem_xing_out_a_ready,
+  output        auto_coupler_to_device_named_qspi_0_mem_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_param,
+  output        auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_size,
+  output [8:0]  auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_source,
+  output [29:0] auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_address,
+  output        auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_mask,
+  output        auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_qspi_0_mem_xing_out_d_ready,
+  input         auto_coupler_to_device_named_qspi_0_mem_xing_out_d_valid,
+  input         auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_size,
+  input  [8:0]  auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_source,
+  input  [7:0]  auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_qspi_0_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_qspi_0_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_qspi_0_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_qspi_0_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_uart_4_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_uart_4_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_uart_4_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_uart_4_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_uart_3_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_uart_3_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_uart_3_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_uart_3_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_uart_2_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_uart_2_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_uart_2_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_uart_2_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_uart_1_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_uart_1_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_uart_1_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_uart_1_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_uart_0_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_uart_0_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_uart_0_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_uart_0_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_data,
+  output        auto_fixedClockNode_out_13_clock,
+  output        auto_fixedClockNode_out_13_reset,
+  output        auto_fixedClockNode_out_12_clock,
+  output        auto_fixedClockNode_out_12_reset,
+  output        auto_fixedClockNode_out_11_clock,
+  output        auto_fixedClockNode_out_11_reset,
+  output        auto_fixedClockNode_out_10_clock,
+  output        auto_fixedClockNode_out_10_reset,
+  output        auto_fixedClockNode_out_9_clock,
+  output        auto_fixedClockNode_out_9_reset,
+  output        auto_fixedClockNode_out_8_clock,
+  output        auto_fixedClockNode_out_8_reset,
+  output        auto_fixedClockNode_out_7_clock,
+  output        auto_fixedClockNode_out_7_reset,
+  output        auto_fixedClockNode_out_6_clock,
+  output        auto_fixedClockNode_out_6_reset,
+  output        auto_fixedClockNode_out_5_clock,
+  output        auto_fixedClockNode_out_5_reset,
+  output        auto_fixedClockNode_out_4_clock,
+  output        auto_fixedClockNode_out_4_reset,
+  output        auto_fixedClockNode_out_3_clock,
+  output        auto_fixedClockNode_out_3_reset,
+  output        auto_fixedClockNode_out_2_clock,
+  output        auto_fixedClockNode_out_2_reset,
+  output        auto_fixedClockNode_out_1_clock,
+  output        auto_fixedClockNode_out_1_reset,
+  output        auto_fixedClockNode_out_0_clock,
+  output        auto_fixedClockNode_out_0_reset,
+  input         auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_clock,
+  input         auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_reset,
+  output        auto_bus_xing_in_a_ready,
+  input         auto_bus_xing_in_a_valid,
+  input  [2:0]  auto_bus_xing_in_a_bits_opcode,
+  input  [2:0]  auto_bus_xing_in_a_bits_param,
+  input  [2:0]  auto_bus_xing_in_a_bits_size,
+  input  [1:0]  auto_bus_xing_in_a_bits_source,
+  input  [29:0] auto_bus_xing_in_a_bits_address,
+  input  [3:0]  auto_bus_xing_in_a_bits_mask,
+  input  [31:0] auto_bus_xing_in_a_bits_data,
+  input         auto_bus_xing_in_a_bits_corrupt,
+  input         auto_bus_xing_in_d_ready,
+  output        auto_bus_xing_in_d_valid,
+  output [2:0]  auto_bus_xing_in_d_bits_opcode,
+  output [1:0]  auto_bus_xing_in_d_bits_param,
+  output [2:0]  auto_bus_xing_in_d_bits_size,
+  output [1:0]  auto_bus_xing_in_d_bits_source,
+  output        auto_bus_xing_in_d_bits_sink,
+  output        auto_bus_xing_in_d_bits_denied,
+  output [31:0] auto_bus_xing_in_d_bits_data,
+  output        auto_bus_xing_in_d_bits_corrupt
+);
+  wire  subsystem_pbus_clock_groups_auto_in_member_subsystem_pbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_pbus_clock_groups_auto_in_member_subsystem_pbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_pbus_clock_groups_auto_out_member_subsystem_pbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_pbus_clock_groups_auto_out_member_subsystem_pbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  clockGroup_auto_in_member_subsystem_pbus_0_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_in_member_subsystem_pbus_0_reset; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_reset; // @[BusWrapper.scala 41:38]
+  wire  fixedClockNode_auto_in_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_in_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_14_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_14_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_13_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_13_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_12_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_12_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_11_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_11_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_10_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_10_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_9_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_9_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_8_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_8_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_7_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_7_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_6_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_6_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_5_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_5_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_4_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_4_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_3_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_3_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_2_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_2_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_1_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_1_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_0_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_0_reset; // @[ClockGroup.scala 106:107]
+  wire  fixer_clock; // @[PeripheryBus.scala 47:33]
+  wire  fixer_reset; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_a_ready; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_a_valid; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_a_bits_opcode; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_a_bits_param; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_a_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_in_a_bits_source; // @[PeripheryBus.scala 47:33]
+  wire [29:0] fixer_auto_in_a_bits_address; // @[PeripheryBus.scala 47:33]
+  wire [3:0] fixer_auto_in_a_bits_mask; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_in_a_bits_data; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_a_bits_corrupt; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_d_ready; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_d_valid; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_d_bits_opcode; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_d_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_in_d_bits_source; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_in_d_bits_data; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_a_ready; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_a_valid; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_out_a_bits_opcode; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_out_a_bits_param; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_out_a_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_out_a_bits_source; // @[PeripheryBus.scala 47:33]
+  wire [29:0] fixer_auto_out_a_bits_address; // @[PeripheryBus.scala 47:33]
+  wire [3:0] fixer_auto_out_a_bits_mask; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_out_a_bits_data; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_a_bits_corrupt; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_d_ready; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_d_valid; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_out_d_bits_opcode; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_out_d_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_out_d_bits_source; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_out_d_bits_data; // @[PeripheryBus.scala 47:33]
+  wire  in_xbar_auto_in_a_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_a_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_a_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_a_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_a_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_a_bits_source; // @[PeripheryBus.scala 49:29]
+  wire [29:0] in_xbar_auto_in_a_bits_address; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_in_a_bits_mask; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_in_a_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_a_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_d_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_d_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_d_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_d_bits_source; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_bits_sink; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_bits_denied; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_in_d_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_a_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_a_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_out_a_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_out_a_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_out_a_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_out_a_bits_source; // @[PeripheryBus.scala 49:29]
+  wire [29:0] in_xbar_auto_out_a_bits_address; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_out_a_bits_mask; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_out_a_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_a_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_out_d_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_out_d_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_out_d_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_out_d_bits_source; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_bits_sink; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_bits_denied; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_out_d_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  out_xbar_clock; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_reset; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_in_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_in_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_in_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_in_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [29:0] out_xbar_auto_in_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_in_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_in_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_in_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_in_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_in_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_in_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_14_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_14_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_14_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_14_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_14_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_14_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_14_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_14_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_14_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_14_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_14_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_14_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_14_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_14_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_14_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_14_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_13_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_13_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_13_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_13_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_13_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_13_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_13_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_13_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_13_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_13_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_13_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_13_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_13_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_13_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_13_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_13_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_12_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_12_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_12_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_12_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_12_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_12_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_12_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_12_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_12_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_12_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_12_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_12_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_12_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_12_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_12_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_12_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_11_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_11_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_11_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_11_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_11_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_11_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_11_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_11_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_11_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_11_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_11_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_11_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_11_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_11_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_11_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_11_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_10_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_10_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_10_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_10_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_10_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_10_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_10_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_10_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_10_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_10_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_10_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_10_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_10_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_10_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_10_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_10_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_9_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_9_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_9_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_9_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_9_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_9_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_9_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_9_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_9_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_9_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_9_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_9_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_9_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_9_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_9_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_9_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_8_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_8_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_8_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_8_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_8_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_8_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_8_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_8_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_8_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_8_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_8_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_8_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_8_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_8_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_8_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_8_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_7_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_7_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_7_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_7_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_7_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_7_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_6_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [29:0] out_xbar_auto_out_6_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_6_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_6_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_6_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_5_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_5_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_5_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_5_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_5_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_5_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_4_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_4_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_4_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_4_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_4_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_4_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_3_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_3_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_3_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_3_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_3_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_3_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_2_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_2_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_2_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_2_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_2_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_2_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_1_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_1_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_1_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_1_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_1_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_1_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_0_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_0_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_0_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_0_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_0_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_0_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  buffer_clock; // @[Buffer.scala 68:28]
+  wire  buffer_reset; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  atomics_clock; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_reset; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_a_ready; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_a_valid; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_in_a_bits_opcode; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_in_a_bits_param; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_in_a_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_in_a_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire [29:0] atomics_auto_in_a_bits_address; // @[AtomicAutomata.scala 283:29]
+  wire [3:0] atomics_auto_in_a_bits_mask; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_in_a_bits_data; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_a_bits_corrupt; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_ready; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_valid; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_in_d_bits_opcode; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_in_d_bits_param; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_in_d_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_in_d_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_bits_sink; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_bits_denied; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_in_d_bits_data; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_bits_corrupt; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_a_ready; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_a_valid; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_out_a_bits_opcode; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_out_a_bits_param; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_out_a_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_out_a_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire [29:0] atomics_auto_out_a_bits_address; // @[AtomicAutomata.scala 283:29]
+  wire [3:0] atomics_auto_out_a_bits_mask; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_out_a_bits_data; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_a_bits_corrupt; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_ready; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_valid; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_out_d_bits_opcode; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_out_d_bits_param; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_out_d_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_out_d_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_bits_sink; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_bits_denied; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_out_d_bits_data; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_bits_corrupt; // @[AtomicAutomata.scala 283:29]
+  wire  buffer_1_clock; // @[Buffer.scala 68:28]
+  wire  buffer_1_reset; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_d_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_d_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  coupler_to_device_named_uart_0_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_0_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_0_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_0_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_0_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_0_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_0_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_0_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_1_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_1_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_1_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_1_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_1_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_1_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_1_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_1_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_2_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_2_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_2_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_2_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_2_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_2_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_2_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_2_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_2_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_2_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_2_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_2_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_3_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_3_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_3_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_3_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_3_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_3_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_3_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_3_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_3_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_3_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_3_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_3_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_4_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_4_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_4_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_4_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_uart_4_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_uart_4_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_4_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_uart_4_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_4_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_uart_4_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_uart_4_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_uart_4_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_0_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_qspi_0_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_qspi_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_0_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [8:0] coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [29:0] coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [8:0] coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [29:0] coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_0_1_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_spi_0_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_spi_0_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_spi_0_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_spi_0_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_spi_0_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_spi_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_spi_0_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_spi_0_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_spi_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_spi_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_spi_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_spi_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_gpio_0_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_gpio_0_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_gpio_0_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_gpio_0_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_gpio_0_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_gpio_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_gpio_0_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_gpio_0_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_gpio_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_gpio_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_gpio_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_gpio_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_0_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_0_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_0_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_0_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_pwm_0_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_pwm_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_0_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_0_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_1_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_1_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_1_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_1_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_pwm_1_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_pwm_1_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_1_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_1_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_2_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_2_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_2_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_2_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_pwm_2_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_pwm_2_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_2_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_pwm_2_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_2_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_pwm_2_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_pwm_2_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_pwm_2_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_0_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_0_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_0_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_i2c_0_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_i2c_0_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_i2c_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_i2c_0_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_0_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_i2c_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_i2c_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_1_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_1_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_1_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_i2c_1_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_i2c_1_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_i2c_1_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_i2c_1_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_i2c_1_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_i2c_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_i2c_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_i2c_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  ClockGroupAggregator_1 subsystem_pbus_clock_groups ( // @[BusWrapper.scala 40:48]
+    .auto_in_member_subsystem_pbus_0_clock(subsystem_pbus_clock_groups_auto_in_member_subsystem_pbus_0_clock),
+    .auto_in_member_subsystem_pbus_0_reset(subsystem_pbus_clock_groups_auto_in_member_subsystem_pbus_0_reset),
+    .auto_out_member_subsystem_pbus_0_clock(subsystem_pbus_clock_groups_auto_out_member_subsystem_pbus_0_clock),
+    .auto_out_member_subsystem_pbus_0_reset(subsystem_pbus_clock_groups_auto_out_member_subsystem_pbus_0_reset)
+  );
+  ClockGroup_1 clockGroup ( // @[BusWrapper.scala 41:38]
+    .auto_in_member_subsystem_pbus_0_clock(clockGroup_auto_in_member_subsystem_pbus_0_clock),
+    .auto_in_member_subsystem_pbus_0_reset(clockGroup_auto_in_member_subsystem_pbus_0_reset),
+    .auto_out_clock(clockGroup_auto_out_clock),
+    .auto_out_reset(clockGroup_auto_out_reset)
+  );
+  FixedClockBroadcast_1 fixedClockNode ( // @[ClockGroup.scala 106:107]
+    .auto_in_clock(fixedClockNode_auto_in_clock),
+    .auto_in_reset(fixedClockNode_auto_in_reset),
+    .auto_out_14_clock(fixedClockNode_auto_out_14_clock),
+    .auto_out_14_reset(fixedClockNode_auto_out_14_reset),
+    .auto_out_13_clock(fixedClockNode_auto_out_13_clock),
+    .auto_out_13_reset(fixedClockNode_auto_out_13_reset),
+    .auto_out_12_clock(fixedClockNode_auto_out_12_clock),
+    .auto_out_12_reset(fixedClockNode_auto_out_12_reset),
+    .auto_out_11_clock(fixedClockNode_auto_out_11_clock),
+    .auto_out_11_reset(fixedClockNode_auto_out_11_reset),
+    .auto_out_10_clock(fixedClockNode_auto_out_10_clock),
+    .auto_out_10_reset(fixedClockNode_auto_out_10_reset),
+    .auto_out_9_clock(fixedClockNode_auto_out_9_clock),
+    .auto_out_9_reset(fixedClockNode_auto_out_9_reset),
+    .auto_out_8_clock(fixedClockNode_auto_out_8_clock),
+    .auto_out_8_reset(fixedClockNode_auto_out_8_reset),
+    .auto_out_7_clock(fixedClockNode_auto_out_7_clock),
+    .auto_out_7_reset(fixedClockNode_auto_out_7_reset),
+    .auto_out_6_clock(fixedClockNode_auto_out_6_clock),
+    .auto_out_6_reset(fixedClockNode_auto_out_6_reset),
+    .auto_out_5_clock(fixedClockNode_auto_out_5_clock),
+    .auto_out_5_reset(fixedClockNode_auto_out_5_reset),
+    .auto_out_4_clock(fixedClockNode_auto_out_4_clock),
+    .auto_out_4_reset(fixedClockNode_auto_out_4_reset),
+    .auto_out_3_clock(fixedClockNode_auto_out_3_clock),
+    .auto_out_3_reset(fixedClockNode_auto_out_3_reset),
+    .auto_out_2_clock(fixedClockNode_auto_out_2_clock),
+    .auto_out_2_reset(fixedClockNode_auto_out_2_reset),
+    .auto_out_1_clock(fixedClockNode_auto_out_1_clock),
+    .auto_out_1_reset(fixedClockNode_auto_out_1_reset),
+    .auto_out_0_clock(fixedClockNode_auto_out_0_clock),
+    .auto_out_0_reset(fixedClockNode_auto_out_0_reset)
+  );
+  TLFIFOFixer_1 fixer ( // @[PeripheryBus.scala 47:33]
+    .clock(fixer_clock),
+    .reset(fixer_reset),
+    .auto_in_a_ready(fixer_auto_in_a_ready),
+    .auto_in_a_valid(fixer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fixer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fixer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fixer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fixer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fixer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fixer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fixer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fixer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fixer_auto_in_d_ready),
+    .auto_in_d_valid(fixer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fixer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fixer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fixer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fixer_auto_in_d_bits_data),
+    .auto_out_a_ready(fixer_auto_out_a_ready),
+    .auto_out_a_valid(fixer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fixer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fixer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fixer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fixer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fixer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fixer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fixer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fixer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fixer_auto_out_d_ready),
+    .auto_out_d_valid(fixer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fixer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fixer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fixer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fixer_auto_out_d_bits_data)
+  );
+  TLXbar_1 in_xbar ( // @[PeripheryBus.scala 49:29]
+    .auto_in_a_ready(in_xbar_auto_in_a_ready),
+    .auto_in_a_valid(in_xbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(in_xbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(in_xbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(in_xbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(in_xbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(in_xbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(in_xbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(in_xbar_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(in_xbar_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(in_xbar_auto_in_d_ready),
+    .auto_in_d_valid(in_xbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(in_xbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(in_xbar_auto_in_d_bits_param),
+    .auto_in_d_bits_size(in_xbar_auto_in_d_bits_size),
+    .auto_in_d_bits_source(in_xbar_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(in_xbar_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(in_xbar_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(in_xbar_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(in_xbar_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(in_xbar_auto_out_a_ready),
+    .auto_out_a_valid(in_xbar_auto_out_a_valid),
+    .auto_out_a_bits_opcode(in_xbar_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(in_xbar_auto_out_a_bits_param),
+    .auto_out_a_bits_size(in_xbar_auto_out_a_bits_size),
+    .auto_out_a_bits_source(in_xbar_auto_out_a_bits_source),
+    .auto_out_a_bits_address(in_xbar_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(in_xbar_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(in_xbar_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(in_xbar_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(in_xbar_auto_out_d_ready),
+    .auto_out_d_valid(in_xbar_auto_out_d_valid),
+    .auto_out_d_bits_opcode(in_xbar_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(in_xbar_auto_out_d_bits_param),
+    .auto_out_d_bits_size(in_xbar_auto_out_d_bits_size),
+    .auto_out_d_bits_source(in_xbar_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(in_xbar_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(in_xbar_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(in_xbar_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(in_xbar_auto_out_d_bits_corrupt)
+  );
+  TLXbar_2 out_xbar ( // @[PeripheryBus.scala 50:30]
+    .clock(out_xbar_clock),
+    .reset(out_xbar_reset),
+    .auto_in_a_ready(out_xbar_auto_in_a_ready),
+    .auto_in_a_valid(out_xbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(out_xbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(out_xbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(out_xbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(out_xbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(out_xbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(out_xbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(out_xbar_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(out_xbar_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(out_xbar_auto_in_d_ready),
+    .auto_in_d_valid(out_xbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(out_xbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(out_xbar_auto_in_d_bits_size),
+    .auto_in_d_bits_source(out_xbar_auto_in_d_bits_source),
+    .auto_in_d_bits_data(out_xbar_auto_in_d_bits_data),
+    .auto_out_14_a_ready(out_xbar_auto_out_14_a_ready),
+    .auto_out_14_a_valid(out_xbar_auto_out_14_a_valid),
+    .auto_out_14_a_bits_opcode(out_xbar_auto_out_14_a_bits_opcode),
+    .auto_out_14_a_bits_param(out_xbar_auto_out_14_a_bits_param),
+    .auto_out_14_a_bits_size(out_xbar_auto_out_14_a_bits_size),
+    .auto_out_14_a_bits_source(out_xbar_auto_out_14_a_bits_source),
+    .auto_out_14_a_bits_address(out_xbar_auto_out_14_a_bits_address),
+    .auto_out_14_a_bits_mask(out_xbar_auto_out_14_a_bits_mask),
+    .auto_out_14_a_bits_data(out_xbar_auto_out_14_a_bits_data),
+    .auto_out_14_a_bits_corrupt(out_xbar_auto_out_14_a_bits_corrupt),
+    .auto_out_14_d_ready(out_xbar_auto_out_14_d_ready),
+    .auto_out_14_d_valid(out_xbar_auto_out_14_d_valid),
+    .auto_out_14_d_bits_opcode(out_xbar_auto_out_14_d_bits_opcode),
+    .auto_out_14_d_bits_size(out_xbar_auto_out_14_d_bits_size),
+    .auto_out_14_d_bits_source(out_xbar_auto_out_14_d_bits_source),
+    .auto_out_14_d_bits_data(out_xbar_auto_out_14_d_bits_data),
+    .auto_out_13_a_ready(out_xbar_auto_out_13_a_ready),
+    .auto_out_13_a_valid(out_xbar_auto_out_13_a_valid),
+    .auto_out_13_a_bits_opcode(out_xbar_auto_out_13_a_bits_opcode),
+    .auto_out_13_a_bits_param(out_xbar_auto_out_13_a_bits_param),
+    .auto_out_13_a_bits_size(out_xbar_auto_out_13_a_bits_size),
+    .auto_out_13_a_bits_source(out_xbar_auto_out_13_a_bits_source),
+    .auto_out_13_a_bits_address(out_xbar_auto_out_13_a_bits_address),
+    .auto_out_13_a_bits_mask(out_xbar_auto_out_13_a_bits_mask),
+    .auto_out_13_a_bits_data(out_xbar_auto_out_13_a_bits_data),
+    .auto_out_13_a_bits_corrupt(out_xbar_auto_out_13_a_bits_corrupt),
+    .auto_out_13_d_ready(out_xbar_auto_out_13_d_ready),
+    .auto_out_13_d_valid(out_xbar_auto_out_13_d_valid),
+    .auto_out_13_d_bits_opcode(out_xbar_auto_out_13_d_bits_opcode),
+    .auto_out_13_d_bits_size(out_xbar_auto_out_13_d_bits_size),
+    .auto_out_13_d_bits_source(out_xbar_auto_out_13_d_bits_source),
+    .auto_out_13_d_bits_data(out_xbar_auto_out_13_d_bits_data),
+    .auto_out_12_a_ready(out_xbar_auto_out_12_a_ready),
+    .auto_out_12_a_valid(out_xbar_auto_out_12_a_valid),
+    .auto_out_12_a_bits_opcode(out_xbar_auto_out_12_a_bits_opcode),
+    .auto_out_12_a_bits_param(out_xbar_auto_out_12_a_bits_param),
+    .auto_out_12_a_bits_size(out_xbar_auto_out_12_a_bits_size),
+    .auto_out_12_a_bits_source(out_xbar_auto_out_12_a_bits_source),
+    .auto_out_12_a_bits_address(out_xbar_auto_out_12_a_bits_address),
+    .auto_out_12_a_bits_mask(out_xbar_auto_out_12_a_bits_mask),
+    .auto_out_12_a_bits_data(out_xbar_auto_out_12_a_bits_data),
+    .auto_out_12_a_bits_corrupt(out_xbar_auto_out_12_a_bits_corrupt),
+    .auto_out_12_d_ready(out_xbar_auto_out_12_d_ready),
+    .auto_out_12_d_valid(out_xbar_auto_out_12_d_valid),
+    .auto_out_12_d_bits_opcode(out_xbar_auto_out_12_d_bits_opcode),
+    .auto_out_12_d_bits_size(out_xbar_auto_out_12_d_bits_size),
+    .auto_out_12_d_bits_source(out_xbar_auto_out_12_d_bits_source),
+    .auto_out_12_d_bits_data(out_xbar_auto_out_12_d_bits_data),
+    .auto_out_11_a_ready(out_xbar_auto_out_11_a_ready),
+    .auto_out_11_a_valid(out_xbar_auto_out_11_a_valid),
+    .auto_out_11_a_bits_opcode(out_xbar_auto_out_11_a_bits_opcode),
+    .auto_out_11_a_bits_param(out_xbar_auto_out_11_a_bits_param),
+    .auto_out_11_a_bits_size(out_xbar_auto_out_11_a_bits_size),
+    .auto_out_11_a_bits_source(out_xbar_auto_out_11_a_bits_source),
+    .auto_out_11_a_bits_address(out_xbar_auto_out_11_a_bits_address),
+    .auto_out_11_a_bits_mask(out_xbar_auto_out_11_a_bits_mask),
+    .auto_out_11_a_bits_data(out_xbar_auto_out_11_a_bits_data),
+    .auto_out_11_a_bits_corrupt(out_xbar_auto_out_11_a_bits_corrupt),
+    .auto_out_11_d_ready(out_xbar_auto_out_11_d_ready),
+    .auto_out_11_d_valid(out_xbar_auto_out_11_d_valid),
+    .auto_out_11_d_bits_opcode(out_xbar_auto_out_11_d_bits_opcode),
+    .auto_out_11_d_bits_size(out_xbar_auto_out_11_d_bits_size),
+    .auto_out_11_d_bits_source(out_xbar_auto_out_11_d_bits_source),
+    .auto_out_11_d_bits_data(out_xbar_auto_out_11_d_bits_data),
+    .auto_out_10_a_ready(out_xbar_auto_out_10_a_ready),
+    .auto_out_10_a_valid(out_xbar_auto_out_10_a_valid),
+    .auto_out_10_a_bits_opcode(out_xbar_auto_out_10_a_bits_opcode),
+    .auto_out_10_a_bits_param(out_xbar_auto_out_10_a_bits_param),
+    .auto_out_10_a_bits_size(out_xbar_auto_out_10_a_bits_size),
+    .auto_out_10_a_bits_source(out_xbar_auto_out_10_a_bits_source),
+    .auto_out_10_a_bits_address(out_xbar_auto_out_10_a_bits_address),
+    .auto_out_10_a_bits_mask(out_xbar_auto_out_10_a_bits_mask),
+    .auto_out_10_a_bits_data(out_xbar_auto_out_10_a_bits_data),
+    .auto_out_10_a_bits_corrupt(out_xbar_auto_out_10_a_bits_corrupt),
+    .auto_out_10_d_ready(out_xbar_auto_out_10_d_ready),
+    .auto_out_10_d_valid(out_xbar_auto_out_10_d_valid),
+    .auto_out_10_d_bits_opcode(out_xbar_auto_out_10_d_bits_opcode),
+    .auto_out_10_d_bits_size(out_xbar_auto_out_10_d_bits_size),
+    .auto_out_10_d_bits_source(out_xbar_auto_out_10_d_bits_source),
+    .auto_out_10_d_bits_data(out_xbar_auto_out_10_d_bits_data),
+    .auto_out_9_a_ready(out_xbar_auto_out_9_a_ready),
+    .auto_out_9_a_valid(out_xbar_auto_out_9_a_valid),
+    .auto_out_9_a_bits_opcode(out_xbar_auto_out_9_a_bits_opcode),
+    .auto_out_9_a_bits_param(out_xbar_auto_out_9_a_bits_param),
+    .auto_out_9_a_bits_size(out_xbar_auto_out_9_a_bits_size),
+    .auto_out_9_a_bits_source(out_xbar_auto_out_9_a_bits_source),
+    .auto_out_9_a_bits_address(out_xbar_auto_out_9_a_bits_address),
+    .auto_out_9_a_bits_mask(out_xbar_auto_out_9_a_bits_mask),
+    .auto_out_9_a_bits_data(out_xbar_auto_out_9_a_bits_data),
+    .auto_out_9_a_bits_corrupt(out_xbar_auto_out_9_a_bits_corrupt),
+    .auto_out_9_d_ready(out_xbar_auto_out_9_d_ready),
+    .auto_out_9_d_valid(out_xbar_auto_out_9_d_valid),
+    .auto_out_9_d_bits_opcode(out_xbar_auto_out_9_d_bits_opcode),
+    .auto_out_9_d_bits_size(out_xbar_auto_out_9_d_bits_size),
+    .auto_out_9_d_bits_source(out_xbar_auto_out_9_d_bits_source),
+    .auto_out_9_d_bits_data(out_xbar_auto_out_9_d_bits_data),
+    .auto_out_8_a_ready(out_xbar_auto_out_8_a_ready),
+    .auto_out_8_a_valid(out_xbar_auto_out_8_a_valid),
+    .auto_out_8_a_bits_opcode(out_xbar_auto_out_8_a_bits_opcode),
+    .auto_out_8_a_bits_param(out_xbar_auto_out_8_a_bits_param),
+    .auto_out_8_a_bits_size(out_xbar_auto_out_8_a_bits_size),
+    .auto_out_8_a_bits_source(out_xbar_auto_out_8_a_bits_source),
+    .auto_out_8_a_bits_address(out_xbar_auto_out_8_a_bits_address),
+    .auto_out_8_a_bits_mask(out_xbar_auto_out_8_a_bits_mask),
+    .auto_out_8_a_bits_data(out_xbar_auto_out_8_a_bits_data),
+    .auto_out_8_a_bits_corrupt(out_xbar_auto_out_8_a_bits_corrupt),
+    .auto_out_8_d_ready(out_xbar_auto_out_8_d_ready),
+    .auto_out_8_d_valid(out_xbar_auto_out_8_d_valid),
+    .auto_out_8_d_bits_opcode(out_xbar_auto_out_8_d_bits_opcode),
+    .auto_out_8_d_bits_size(out_xbar_auto_out_8_d_bits_size),
+    .auto_out_8_d_bits_source(out_xbar_auto_out_8_d_bits_source),
+    .auto_out_8_d_bits_data(out_xbar_auto_out_8_d_bits_data),
+    .auto_out_7_a_ready(out_xbar_auto_out_7_a_ready),
+    .auto_out_7_a_valid(out_xbar_auto_out_7_a_valid),
+    .auto_out_7_a_bits_opcode(out_xbar_auto_out_7_a_bits_opcode),
+    .auto_out_7_a_bits_param(out_xbar_auto_out_7_a_bits_param),
+    .auto_out_7_a_bits_size(out_xbar_auto_out_7_a_bits_size),
+    .auto_out_7_a_bits_source(out_xbar_auto_out_7_a_bits_source),
+    .auto_out_7_a_bits_address(out_xbar_auto_out_7_a_bits_address),
+    .auto_out_7_a_bits_mask(out_xbar_auto_out_7_a_bits_mask),
+    .auto_out_7_a_bits_data(out_xbar_auto_out_7_a_bits_data),
+    .auto_out_7_a_bits_corrupt(out_xbar_auto_out_7_a_bits_corrupt),
+    .auto_out_7_d_ready(out_xbar_auto_out_7_d_ready),
+    .auto_out_7_d_valid(out_xbar_auto_out_7_d_valid),
+    .auto_out_7_d_bits_opcode(out_xbar_auto_out_7_d_bits_opcode),
+    .auto_out_7_d_bits_size(out_xbar_auto_out_7_d_bits_size),
+    .auto_out_7_d_bits_source(out_xbar_auto_out_7_d_bits_source),
+    .auto_out_7_d_bits_data(out_xbar_auto_out_7_d_bits_data),
+    .auto_out_6_a_ready(out_xbar_auto_out_6_a_ready),
+    .auto_out_6_a_valid(out_xbar_auto_out_6_a_valid),
+    .auto_out_6_a_bits_opcode(out_xbar_auto_out_6_a_bits_opcode),
+    .auto_out_6_a_bits_param(out_xbar_auto_out_6_a_bits_param),
+    .auto_out_6_a_bits_size(out_xbar_auto_out_6_a_bits_size),
+    .auto_out_6_a_bits_source(out_xbar_auto_out_6_a_bits_source),
+    .auto_out_6_a_bits_address(out_xbar_auto_out_6_a_bits_address),
+    .auto_out_6_a_bits_mask(out_xbar_auto_out_6_a_bits_mask),
+    .auto_out_6_a_bits_corrupt(out_xbar_auto_out_6_a_bits_corrupt),
+    .auto_out_6_d_ready(out_xbar_auto_out_6_d_ready),
+    .auto_out_6_d_valid(out_xbar_auto_out_6_d_valid),
+    .auto_out_6_d_bits_size(out_xbar_auto_out_6_d_bits_size),
+    .auto_out_6_d_bits_source(out_xbar_auto_out_6_d_bits_source),
+    .auto_out_6_d_bits_data(out_xbar_auto_out_6_d_bits_data),
+    .auto_out_5_a_ready(out_xbar_auto_out_5_a_ready),
+    .auto_out_5_a_valid(out_xbar_auto_out_5_a_valid),
+    .auto_out_5_a_bits_opcode(out_xbar_auto_out_5_a_bits_opcode),
+    .auto_out_5_a_bits_param(out_xbar_auto_out_5_a_bits_param),
+    .auto_out_5_a_bits_size(out_xbar_auto_out_5_a_bits_size),
+    .auto_out_5_a_bits_source(out_xbar_auto_out_5_a_bits_source),
+    .auto_out_5_a_bits_address(out_xbar_auto_out_5_a_bits_address),
+    .auto_out_5_a_bits_mask(out_xbar_auto_out_5_a_bits_mask),
+    .auto_out_5_a_bits_data(out_xbar_auto_out_5_a_bits_data),
+    .auto_out_5_a_bits_corrupt(out_xbar_auto_out_5_a_bits_corrupt),
+    .auto_out_5_d_ready(out_xbar_auto_out_5_d_ready),
+    .auto_out_5_d_valid(out_xbar_auto_out_5_d_valid),
+    .auto_out_5_d_bits_opcode(out_xbar_auto_out_5_d_bits_opcode),
+    .auto_out_5_d_bits_size(out_xbar_auto_out_5_d_bits_size),
+    .auto_out_5_d_bits_source(out_xbar_auto_out_5_d_bits_source),
+    .auto_out_5_d_bits_data(out_xbar_auto_out_5_d_bits_data),
+    .auto_out_4_a_ready(out_xbar_auto_out_4_a_ready),
+    .auto_out_4_a_valid(out_xbar_auto_out_4_a_valid),
+    .auto_out_4_a_bits_opcode(out_xbar_auto_out_4_a_bits_opcode),
+    .auto_out_4_a_bits_param(out_xbar_auto_out_4_a_bits_param),
+    .auto_out_4_a_bits_size(out_xbar_auto_out_4_a_bits_size),
+    .auto_out_4_a_bits_source(out_xbar_auto_out_4_a_bits_source),
+    .auto_out_4_a_bits_address(out_xbar_auto_out_4_a_bits_address),
+    .auto_out_4_a_bits_mask(out_xbar_auto_out_4_a_bits_mask),
+    .auto_out_4_a_bits_data(out_xbar_auto_out_4_a_bits_data),
+    .auto_out_4_a_bits_corrupt(out_xbar_auto_out_4_a_bits_corrupt),
+    .auto_out_4_d_ready(out_xbar_auto_out_4_d_ready),
+    .auto_out_4_d_valid(out_xbar_auto_out_4_d_valid),
+    .auto_out_4_d_bits_opcode(out_xbar_auto_out_4_d_bits_opcode),
+    .auto_out_4_d_bits_size(out_xbar_auto_out_4_d_bits_size),
+    .auto_out_4_d_bits_source(out_xbar_auto_out_4_d_bits_source),
+    .auto_out_4_d_bits_data(out_xbar_auto_out_4_d_bits_data),
+    .auto_out_3_a_ready(out_xbar_auto_out_3_a_ready),
+    .auto_out_3_a_valid(out_xbar_auto_out_3_a_valid),
+    .auto_out_3_a_bits_opcode(out_xbar_auto_out_3_a_bits_opcode),
+    .auto_out_3_a_bits_param(out_xbar_auto_out_3_a_bits_param),
+    .auto_out_3_a_bits_size(out_xbar_auto_out_3_a_bits_size),
+    .auto_out_3_a_bits_source(out_xbar_auto_out_3_a_bits_source),
+    .auto_out_3_a_bits_address(out_xbar_auto_out_3_a_bits_address),
+    .auto_out_3_a_bits_mask(out_xbar_auto_out_3_a_bits_mask),
+    .auto_out_3_a_bits_data(out_xbar_auto_out_3_a_bits_data),
+    .auto_out_3_a_bits_corrupt(out_xbar_auto_out_3_a_bits_corrupt),
+    .auto_out_3_d_ready(out_xbar_auto_out_3_d_ready),
+    .auto_out_3_d_valid(out_xbar_auto_out_3_d_valid),
+    .auto_out_3_d_bits_opcode(out_xbar_auto_out_3_d_bits_opcode),
+    .auto_out_3_d_bits_size(out_xbar_auto_out_3_d_bits_size),
+    .auto_out_3_d_bits_source(out_xbar_auto_out_3_d_bits_source),
+    .auto_out_3_d_bits_data(out_xbar_auto_out_3_d_bits_data),
+    .auto_out_2_a_ready(out_xbar_auto_out_2_a_ready),
+    .auto_out_2_a_valid(out_xbar_auto_out_2_a_valid),
+    .auto_out_2_a_bits_opcode(out_xbar_auto_out_2_a_bits_opcode),
+    .auto_out_2_a_bits_param(out_xbar_auto_out_2_a_bits_param),
+    .auto_out_2_a_bits_size(out_xbar_auto_out_2_a_bits_size),
+    .auto_out_2_a_bits_source(out_xbar_auto_out_2_a_bits_source),
+    .auto_out_2_a_bits_address(out_xbar_auto_out_2_a_bits_address),
+    .auto_out_2_a_bits_mask(out_xbar_auto_out_2_a_bits_mask),
+    .auto_out_2_a_bits_data(out_xbar_auto_out_2_a_bits_data),
+    .auto_out_2_a_bits_corrupt(out_xbar_auto_out_2_a_bits_corrupt),
+    .auto_out_2_d_ready(out_xbar_auto_out_2_d_ready),
+    .auto_out_2_d_valid(out_xbar_auto_out_2_d_valid),
+    .auto_out_2_d_bits_opcode(out_xbar_auto_out_2_d_bits_opcode),
+    .auto_out_2_d_bits_size(out_xbar_auto_out_2_d_bits_size),
+    .auto_out_2_d_bits_source(out_xbar_auto_out_2_d_bits_source),
+    .auto_out_2_d_bits_data(out_xbar_auto_out_2_d_bits_data),
+    .auto_out_1_a_ready(out_xbar_auto_out_1_a_ready),
+    .auto_out_1_a_valid(out_xbar_auto_out_1_a_valid),
+    .auto_out_1_a_bits_opcode(out_xbar_auto_out_1_a_bits_opcode),
+    .auto_out_1_a_bits_param(out_xbar_auto_out_1_a_bits_param),
+    .auto_out_1_a_bits_size(out_xbar_auto_out_1_a_bits_size),
+    .auto_out_1_a_bits_source(out_xbar_auto_out_1_a_bits_source),
+    .auto_out_1_a_bits_address(out_xbar_auto_out_1_a_bits_address),
+    .auto_out_1_a_bits_mask(out_xbar_auto_out_1_a_bits_mask),
+    .auto_out_1_a_bits_data(out_xbar_auto_out_1_a_bits_data),
+    .auto_out_1_a_bits_corrupt(out_xbar_auto_out_1_a_bits_corrupt),
+    .auto_out_1_d_ready(out_xbar_auto_out_1_d_ready),
+    .auto_out_1_d_valid(out_xbar_auto_out_1_d_valid),
+    .auto_out_1_d_bits_opcode(out_xbar_auto_out_1_d_bits_opcode),
+    .auto_out_1_d_bits_size(out_xbar_auto_out_1_d_bits_size),
+    .auto_out_1_d_bits_source(out_xbar_auto_out_1_d_bits_source),
+    .auto_out_1_d_bits_data(out_xbar_auto_out_1_d_bits_data),
+    .auto_out_0_a_ready(out_xbar_auto_out_0_a_ready),
+    .auto_out_0_a_valid(out_xbar_auto_out_0_a_valid),
+    .auto_out_0_a_bits_opcode(out_xbar_auto_out_0_a_bits_opcode),
+    .auto_out_0_a_bits_param(out_xbar_auto_out_0_a_bits_param),
+    .auto_out_0_a_bits_size(out_xbar_auto_out_0_a_bits_size),
+    .auto_out_0_a_bits_source(out_xbar_auto_out_0_a_bits_source),
+    .auto_out_0_a_bits_address(out_xbar_auto_out_0_a_bits_address),
+    .auto_out_0_a_bits_mask(out_xbar_auto_out_0_a_bits_mask),
+    .auto_out_0_a_bits_data(out_xbar_auto_out_0_a_bits_data),
+    .auto_out_0_a_bits_corrupt(out_xbar_auto_out_0_a_bits_corrupt),
+    .auto_out_0_d_ready(out_xbar_auto_out_0_d_ready),
+    .auto_out_0_d_valid(out_xbar_auto_out_0_d_valid),
+    .auto_out_0_d_bits_opcode(out_xbar_auto_out_0_d_bits_opcode),
+    .auto_out_0_d_bits_size(out_xbar_auto_out_0_d_bits_size),
+    .auto_out_0_d_bits_source(out_xbar_auto_out_0_d_bits_source),
+    .auto_out_0_d_bits_data(out_xbar_auto_out_0_d_bits_data)
+  );
+  TLBuffer buffer ( // @[Buffer.scala 68:28]
+    .clock(buffer_clock),
+    .reset(buffer_reset),
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(buffer_auto_in_d_bits_param),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(buffer_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(buffer_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(buffer_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  TLAtomicAutomata atomics ( // @[AtomicAutomata.scala 283:29]
+    .clock(atomics_clock),
+    .reset(atomics_reset),
+    .auto_in_a_ready(atomics_auto_in_a_ready),
+    .auto_in_a_valid(atomics_auto_in_a_valid),
+    .auto_in_a_bits_opcode(atomics_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(atomics_auto_in_a_bits_param),
+    .auto_in_a_bits_size(atomics_auto_in_a_bits_size),
+    .auto_in_a_bits_source(atomics_auto_in_a_bits_source),
+    .auto_in_a_bits_address(atomics_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(atomics_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(atomics_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(atomics_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(atomics_auto_in_d_ready),
+    .auto_in_d_valid(atomics_auto_in_d_valid),
+    .auto_in_d_bits_opcode(atomics_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(atomics_auto_in_d_bits_param),
+    .auto_in_d_bits_size(atomics_auto_in_d_bits_size),
+    .auto_in_d_bits_source(atomics_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(atomics_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(atomics_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(atomics_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(atomics_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(atomics_auto_out_a_ready),
+    .auto_out_a_valid(atomics_auto_out_a_valid),
+    .auto_out_a_bits_opcode(atomics_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(atomics_auto_out_a_bits_param),
+    .auto_out_a_bits_size(atomics_auto_out_a_bits_size),
+    .auto_out_a_bits_source(atomics_auto_out_a_bits_source),
+    .auto_out_a_bits_address(atomics_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(atomics_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(atomics_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(atomics_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(atomics_auto_out_d_ready),
+    .auto_out_d_valid(atomics_auto_out_d_valid),
+    .auto_out_d_bits_opcode(atomics_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(atomics_auto_out_d_bits_param),
+    .auto_out_d_bits_size(atomics_auto_out_d_bits_size),
+    .auto_out_d_bits_source(atomics_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(atomics_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(atomics_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(atomics_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(atomics_auto_out_d_bits_corrupt)
+  );
+  TLBuffer_1 buffer_1 ( // @[Buffer.scala 68:28]
+    .clock(buffer_1_clock),
+    .reset(buffer_1_reset),
+    .auto_in_a_ready(buffer_1_auto_in_a_ready),
+    .auto_in_a_valid(buffer_1_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_1_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_1_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_1_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_1_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_1_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_1_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_1_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_1_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_1_auto_in_d_ready),
+    .auto_in_d_valid(buffer_1_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_1_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(buffer_1_auto_in_d_bits_param),
+    .auto_in_d_bits_size(buffer_1_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_1_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(buffer_1_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(buffer_1_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(buffer_1_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(buffer_1_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(buffer_1_auto_out_a_ready),
+    .auto_out_a_valid(buffer_1_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_1_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_1_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_1_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_1_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_1_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_1_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_1_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_1_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_1_auto_out_d_ready),
+    .auto_out_d_valid(buffer_1_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_1_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(buffer_1_auto_out_d_bits_param),
+    .auto_out_d_bits_size(buffer_1_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_1_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(buffer_1_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(buffer_1_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(buffer_1_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(buffer_1_auto_out_d_bits_corrupt)
+  );
+  TLInterconnectCoupler_4 coupler_to_device_named_uart_0 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_uart_0_clock),
+    .reset(coupler_to_device_named_uart_0_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_uart_0_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_uart_0_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_uart_0_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_uart_0_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_uart_0_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_uart_0_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_uart_0_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_uart_0_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_uart_0_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_uart_0_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_uart_0_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_uart_0_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_uart_0_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_uart_0_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_uart_0_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_uart_0_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_uart_0_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_uart_0_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_uart_0_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_uart_0_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_5 coupler_to_device_named_uart_1 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_uart_1_clock),
+    .reset(coupler_to_device_named_uart_1_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_uart_1_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_uart_1_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_uart_1_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_uart_1_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_uart_1_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_uart_1_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_uart_1_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_uart_1_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_uart_1_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_uart_1_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_uart_1_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_uart_1_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_uart_1_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_uart_1_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_uart_1_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_uart_1_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_uart_1_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_uart_1_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_uart_1_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_uart_1_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_6 coupler_to_device_named_uart_2 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_uart_2_clock),
+    .reset(coupler_to_device_named_uart_2_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_uart_2_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_uart_2_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_uart_2_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_uart_2_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_uart_2_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_uart_2_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_uart_2_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_uart_2_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_uart_2_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_uart_2_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_uart_2_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_uart_2_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_uart_2_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_uart_2_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_uart_2_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_uart_2_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_uart_2_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_uart_2_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_uart_2_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_uart_2_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_7 coupler_to_device_named_uart_3 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_uart_3_clock),
+    .reset(coupler_to_device_named_uart_3_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_uart_3_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_uart_3_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_uart_3_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_uart_3_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_uart_3_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_uart_3_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_uart_3_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_uart_3_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_uart_3_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_uart_3_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_uart_3_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_uart_3_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_uart_3_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_uart_3_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_uart_3_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_uart_3_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_uart_3_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_uart_3_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_uart_3_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_uart_3_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_8 coupler_to_device_named_uart_4 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_uart_4_clock),
+    .reset(coupler_to_device_named_uart_4_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_uart_4_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_uart_4_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_uart_4_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_uart_4_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_uart_4_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_uart_4_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_uart_4_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_uart_4_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_uart_4_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_uart_4_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_uart_4_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_uart_4_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_uart_4_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_uart_4_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_uart_4_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_uart_4_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_uart_4_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_uart_4_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_uart_4_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_uart_4_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_9 coupler_to_device_named_qspi_0 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_qspi_0_clock),
+    .reset(coupler_to_device_named_qspi_0_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_qspi_0_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_qspi_0_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_qspi_0_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_qspi_0_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_qspi_0_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_qspi_0_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_qspi_0_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_qspi_0_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_qspi_0_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_qspi_0_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_qspi_0_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_qspi_0_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_qspi_0_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_qspi_0_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_qspi_0_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_qspi_0_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_qspi_0_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_qspi_0_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_qspi_0_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_qspi_0_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_10 coupler_to_device_named_qspi_0_1 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_qspi_0_1_clock),
+    .reset(coupler_to_device_named_qspi_0_1_reset),
+    .auto_mem_xing_out_a_ready(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_ready),
+    .auto_mem_xing_out_a_valid(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_valid),
+    .auto_mem_xing_out_a_bits_opcode(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_opcode),
+    .auto_mem_xing_out_a_bits_param(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_param),
+    .auto_mem_xing_out_a_bits_size(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_size),
+    .auto_mem_xing_out_a_bits_source(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_source),
+    .auto_mem_xing_out_a_bits_address(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_address),
+    .auto_mem_xing_out_a_bits_mask(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_mask),
+    .auto_mem_xing_out_a_bits_corrupt(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_corrupt),
+    .auto_mem_xing_out_d_ready(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_ready),
+    .auto_mem_xing_out_d_valid(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_valid),
+    .auto_mem_xing_out_d_bits_size(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_size),
+    .auto_mem_xing_out_d_bits_source(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_source),
+    .auto_mem_xing_out_d_bits_data(coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_qspi_0_1_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_qspi_0_1_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_qspi_0_1_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_qspi_0_1_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_11 coupler_to_device_named_qspi_ram_0 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_qspi_ram_0_clock),
+    .reset(coupler_to_device_named_qspi_ram_0_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_12 coupler_to_device_named_spi_0 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_spi_0_clock),
+    .reset(coupler_to_device_named_spi_0_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_spi_0_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_spi_0_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_spi_0_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_spi_0_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_spi_0_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_spi_0_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_spi_0_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_spi_0_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_spi_0_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_spi_0_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_spi_0_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_spi_0_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_spi_0_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_spi_0_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_spi_0_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_spi_0_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_spi_0_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_spi_0_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_spi_0_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_spi_0_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_13 coupler_to_device_named_gpio_0 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_gpio_0_clock),
+    .reset(coupler_to_device_named_gpio_0_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_gpio_0_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_gpio_0_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_gpio_0_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_gpio_0_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_gpio_0_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_gpio_0_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_gpio_0_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_gpio_0_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_gpio_0_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_gpio_0_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_gpio_0_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_gpio_0_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_gpio_0_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_gpio_0_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_gpio_0_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_gpio_0_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_gpio_0_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_gpio_0_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_gpio_0_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_gpio_0_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_14 coupler_to_device_named_pwm_0 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_pwm_0_clock),
+    .reset(coupler_to_device_named_pwm_0_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_pwm_0_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_pwm_0_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_pwm_0_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_pwm_0_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_pwm_0_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_pwm_0_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_pwm_0_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_pwm_0_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_pwm_0_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_pwm_0_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_pwm_0_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_pwm_0_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_pwm_0_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_pwm_0_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_pwm_0_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_pwm_0_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_pwm_0_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_pwm_0_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_pwm_0_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_pwm_0_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_15 coupler_to_device_named_pwm_1 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_pwm_1_clock),
+    .reset(coupler_to_device_named_pwm_1_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_pwm_1_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_pwm_1_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_pwm_1_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_pwm_1_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_pwm_1_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_pwm_1_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_pwm_1_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_pwm_1_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_pwm_1_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_pwm_1_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_pwm_1_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_pwm_1_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_pwm_1_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_pwm_1_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_pwm_1_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_pwm_1_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_pwm_1_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_pwm_1_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_pwm_1_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_pwm_1_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_16 coupler_to_device_named_pwm_2 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_pwm_2_clock),
+    .reset(coupler_to_device_named_pwm_2_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_pwm_2_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_pwm_2_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_pwm_2_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_pwm_2_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_pwm_2_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_pwm_2_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_pwm_2_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_pwm_2_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_pwm_2_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_pwm_2_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_pwm_2_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_pwm_2_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_pwm_2_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_pwm_2_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_pwm_2_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_pwm_2_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_pwm_2_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_pwm_2_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_pwm_2_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_pwm_2_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_17 coupler_to_device_named_i2c_0 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_i2c_0_clock),
+    .reset(coupler_to_device_named_i2c_0_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_i2c_0_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_i2c_0_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_i2c_0_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_i2c_0_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_i2c_0_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_i2c_0_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_i2c_0_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_i2c_0_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_i2c_0_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_i2c_0_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_i2c_0_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_i2c_0_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_i2c_0_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_i2c_0_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_i2c_0_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_i2c_0_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_i2c_0_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_i2c_0_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_i2c_0_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_i2c_0_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_18 coupler_to_device_named_i2c_1 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_i2c_1_clock),
+    .reset(coupler_to_device_named_i2c_1_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_i2c_1_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_i2c_1_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_i2c_1_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_i2c_1_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_i2c_1_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_i2c_1_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_i2c_1_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_i2c_1_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_i2c_1_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_i2c_1_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_i2c_1_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_i2c_1_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_i2c_1_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_i2c_1_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_i2c_1_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_i2c_1_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_i2c_1_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_i2c_1_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_i2c_1_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_i2c_1_auto_tl_in_d_bits_data)
+  );
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_valid =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_param =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_size =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_source =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_address =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_mask =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_data =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_1_control_xing_out_d_ready =
+    coupler_to_device_named_i2c_1_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_valid =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_param =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_size =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_source =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_address =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_mask =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_data =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_i2c_0_control_xing_out_d_ready =
+    coupler_to_device_named_i2c_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_valid =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_param =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_size =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_source =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_address =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_mask =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_data =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_2_control_xing_out_d_ready =
+    coupler_to_device_named_pwm_2_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_valid =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_param =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_size =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_source =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_address =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_mask =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_data =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_1_control_xing_out_d_ready =
+    coupler_to_device_named_pwm_1_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_valid =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_param =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_size =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_source =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_address =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_mask =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_data =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_pwm_0_control_xing_out_d_ready =
+    coupler_to_device_named_pwm_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_valid =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_param =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_size =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_source =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_address =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_mask =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_data =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_gpio_0_control_xing_out_d_ready =
+    coupler_to_device_named_gpio_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_valid =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_param =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_size =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_source =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_address =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_mask =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_data =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_spi_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_spi_0_control_xing_out_d_ready =
+    coupler_to_device_named_spi_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_valid =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_param =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_size =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_source =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_address =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_mask =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_data =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_ready =
+    coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_a_valid =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_opcode =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_param =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_size =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_source =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_address =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_mask =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_corrupt =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_mem_xing_out_d_ready =
+    coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_valid =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_param =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_size =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_source =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_address =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_mask =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_data =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_0_control_xing_out_d_ready =
+    coupler_to_device_named_qspi_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_valid =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_param =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_size =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_source =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_address =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_mask =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_data =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_uart_4_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_4_control_xing_out_d_ready =
+    coupler_to_device_named_uart_4_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_valid =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_param =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_size =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_source =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_address =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_mask =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_data =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_uart_3_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_3_control_xing_out_d_ready =
+    coupler_to_device_named_uart_3_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_valid =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_param =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_size =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_source =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_address =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_mask =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_data =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_uart_2_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_2_control_xing_out_d_ready =
+    coupler_to_device_named_uart_2_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_valid =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_param =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_size =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_source =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_address =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_mask =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_data =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_1_control_xing_out_d_ready =
+    coupler_to_device_named_uart_1_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_valid =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_param =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_size =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_source =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_address =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_mask =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_data =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_uart_0_control_xing_out_d_ready =
+    coupler_to_device_named_uart_0_auto_control_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_13_clock = fixedClockNode_auto_out_14_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_13_reset = fixedClockNode_auto_out_14_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_12_clock = fixedClockNode_auto_out_13_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_12_reset = fixedClockNode_auto_out_13_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_11_clock = fixedClockNode_auto_out_12_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_11_reset = fixedClockNode_auto_out_12_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_10_clock = fixedClockNode_auto_out_11_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_10_reset = fixedClockNode_auto_out_11_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_9_clock = fixedClockNode_auto_out_10_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_9_reset = fixedClockNode_auto_out_10_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_8_clock = fixedClockNode_auto_out_9_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_8_reset = fixedClockNode_auto_out_9_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_7_clock = fixedClockNode_auto_out_8_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_7_reset = fixedClockNode_auto_out_8_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_6_clock = fixedClockNode_auto_out_7_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_6_reset = fixedClockNode_auto_out_7_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_5_clock = fixedClockNode_auto_out_6_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_5_reset = fixedClockNode_auto_out_6_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_4_clock = fixedClockNode_auto_out_5_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_4_reset = fixedClockNode_auto_out_5_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_3_clock = fixedClockNode_auto_out_4_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_3_reset = fixedClockNode_auto_out_4_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_2_clock = fixedClockNode_auto_out_3_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_2_reset = fixedClockNode_auto_out_3_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_1_clock = fixedClockNode_auto_out_2_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_1_reset = fixedClockNode_auto_out_2_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_0_clock = fixedClockNode_auto_out_1_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_0_reset = fixedClockNode_auto_out_1_reset; // @[LazyModule.scala 311:12]
+  assign auto_bus_xing_in_a_ready = buffer_1_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_valid = buffer_1_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_opcode = buffer_1_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_param = buffer_1_auto_in_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_size = buffer_1_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_source = buffer_1_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_sink = buffer_1_auto_in_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_denied = buffer_1_auto_in_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_data = buffer_1_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_corrupt = buffer_1_auto_in_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign subsystem_pbus_clock_groups_auto_in_member_subsystem_pbus_0_clock =
+    auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_pbus_clock_groups_auto_in_member_subsystem_pbus_0_reset =
+    auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_reset; // @[LazyModule.scala 309:16]
+  assign clockGroup_auto_in_member_subsystem_pbus_0_clock =
+    subsystem_pbus_clock_groups_auto_out_member_subsystem_pbus_0_clock; // @[LazyModule.scala 298:16]
+  assign clockGroup_auto_in_member_subsystem_pbus_0_reset =
+    subsystem_pbus_clock_groups_auto_out_member_subsystem_pbus_0_reset; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_clock = clockGroup_auto_out_clock; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_reset = clockGroup_auto_out_reset; // @[LazyModule.scala 298:16]
+  assign fixer_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fixer_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fixer_auto_in_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_data = buffer_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_a_ready = out_xbar_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_valid = out_xbar_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_opcode = out_xbar_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_size = out_xbar_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_source = out_xbar_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_data = out_xbar_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_in_a_valid = buffer_1_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_param = buffer_1_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_size = buffer_1_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_source = buffer_1_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_address = buffer_1_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_mask = buffer_1_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_data = buffer_1_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_corrupt = buffer_1_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_d_ready = buffer_1_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_out_a_ready = atomics_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_valid = atomics_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_opcode = atomics_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_param = atomics_auto_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_size = atomics_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_source = atomics_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_sink = atomics_auto_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_denied = atomics_auto_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_data = atomics_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_corrupt = atomics_auto_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign out_xbar_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign out_xbar_auto_in_a_valid = fixer_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_opcode = fixer_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_param = fixer_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_size = fixer_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_source = fixer_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_address = fixer_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_mask = fixer_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_data = fixer_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_corrupt = fixer_auto_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_d_ready = fixer_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_14_a_ready = coupler_to_device_named_i2c_1_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_14_d_valid = coupler_to_device_named_i2c_1_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_14_d_bits_opcode = coupler_to_device_named_i2c_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_14_d_bits_size = coupler_to_device_named_i2c_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_14_d_bits_source = coupler_to_device_named_i2c_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_14_d_bits_data = coupler_to_device_named_i2c_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_13_a_ready = coupler_to_device_named_i2c_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_13_d_valid = coupler_to_device_named_i2c_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_13_d_bits_opcode = coupler_to_device_named_i2c_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_13_d_bits_size = coupler_to_device_named_i2c_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_13_d_bits_source = coupler_to_device_named_i2c_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_13_d_bits_data = coupler_to_device_named_i2c_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_12_a_ready = coupler_to_device_named_pwm_2_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_12_d_valid = coupler_to_device_named_pwm_2_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_12_d_bits_opcode = coupler_to_device_named_pwm_2_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_12_d_bits_size = coupler_to_device_named_pwm_2_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_12_d_bits_source = coupler_to_device_named_pwm_2_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_12_d_bits_data = coupler_to_device_named_pwm_2_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_11_a_ready = coupler_to_device_named_pwm_1_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_11_d_valid = coupler_to_device_named_pwm_1_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_11_d_bits_opcode = coupler_to_device_named_pwm_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_11_d_bits_size = coupler_to_device_named_pwm_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_11_d_bits_source = coupler_to_device_named_pwm_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_11_d_bits_data = coupler_to_device_named_pwm_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_10_a_ready = coupler_to_device_named_pwm_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_10_d_valid = coupler_to_device_named_pwm_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_10_d_bits_opcode = coupler_to_device_named_pwm_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_10_d_bits_size = coupler_to_device_named_pwm_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_10_d_bits_source = coupler_to_device_named_pwm_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_10_d_bits_data = coupler_to_device_named_pwm_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_9_a_ready = coupler_to_device_named_gpio_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_9_d_valid = coupler_to_device_named_gpio_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_9_d_bits_opcode = coupler_to_device_named_gpio_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_9_d_bits_size = coupler_to_device_named_gpio_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_9_d_bits_source = coupler_to_device_named_gpio_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_9_d_bits_data = coupler_to_device_named_gpio_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_a_ready = coupler_to_device_named_spi_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_valid = coupler_to_device_named_spi_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_opcode = coupler_to_device_named_spi_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_size = coupler_to_device_named_spi_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_source = coupler_to_device_named_spi_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_data = coupler_to_device_named_spi_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_a_ready = coupler_to_device_named_qspi_ram_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_valid = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_opcode = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_size = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_source = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_data = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_a_ready = coupler_to_device_named_qspi_0_1_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_valid = coupler_to_device_named_qspi_0_1_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_size = coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_source = coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_data = coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_a_ready = coupler_to_device_named_qspi_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_valid = coupler_to_device_named_qspi_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_opcode = coupler_to_device_named_qspi_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_size = coupler_to_device_named_qspi_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_source = coupler_to_device_named_qspi_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_data = coupler_to_device_named_qspi_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_a_ready = coupler_to_device_named_uart_4_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_valid = coupler_to_device_named_uart_4_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_opcode = coupler_to_device_named_uart_4_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_size = coupler_to_device_named_uart_4_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_source = coupler_to_device_named_uart_4_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_data = coupler_to_device_named_uart_4_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_a_ready = coupler_to_device_named_uart_3_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_valid = coupler_to_device_named_uart_3_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_opcode = coupler_to_device_named_uart_3_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_size = coupler_to_device_named_uart_3_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_source = coupler_to_device_named_uart_3_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_data = coupler_to_device_named_uart_3_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_a_ready = coupler_to_device_named_uart_2_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_valid = coupler_to_device_named_uart_2_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_opcode = coupler_to_device_named_uart_2_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_size = coupler_to_device_named_uart_2_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_source = coupler_to_device_named_uart_2_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_data = coupler_to_device_named_uart_2_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_a_ready = coupler_to_device_named_uart_1_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_valid = coupler_to_device_named_uart_1_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_opcode = coupler_to_device_named_uart_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_size = coupler_to_device_named_uart_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_source = coupler_to_device_named_uart_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_data = coupler_to_device_named_uart_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_a_ready = coupler_to_device_named_uart_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_valid = coupler_to_device_named_uart_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_opcode = coupler_to_device_named_uart_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_size = coupler_to_device_named_uart_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_source = coupler_to_device_named_uart_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_data = coupler_to_device_named_uart_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign buffer_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_in_a_valid = atomics_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_opcode = atomics_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_param = atomics_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_size = atomics_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_source = atomics_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_address = atomics_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_mask = atomics_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_data = atomics_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_corrupt = atomics_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_d_ready = atomics_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_a_ready = fixer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = fixer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = fixer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_size = fixer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = fixer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = fixer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign atomics_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign atomics_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign atomics_auto_in_a_valid = in_xbar_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_opcode = in_xbar_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_param = in_xbar_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_size = in_xbar_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_source = in_xbar_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_address = in_xbar_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_mask = in_xbar_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_data = in_xbar_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_corrupt = in_xbar_auto_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_d_ready = in_xbar_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign atomics_auto_out_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_param = buffer_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_source = buffer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_sink = buffer_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_denied = buffer_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_corrupt = buffer_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_1_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_1_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_1_auto_in_a_valid = auto_bus_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_opcode = auto_bus_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_param = auto_bus_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_size = auto_bus_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_source = auto_bus_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_address = auto_bus_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_mask = auto_bus_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_data = auto_bus_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_corrupt = auto_bus_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_d_ready = auto_bus_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_out_a_ready = in_xbar_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_valid = in_xbar_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_opcode = in_xbar_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_param = in_xbar_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_size = in_xbar_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_source = in_xbar_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_sink = in_xbar_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_denied = in_xbar_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_data = in_xbar_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_corrupt = in_xbar_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_0_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_uart_0_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_0_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_uart_0_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_0_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_valid = out_xbar_auto_out_0_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_0_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_param = out_xbar_auto_out_0_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_size = out_xbar_auto_out_0_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_source = out_xbar_auto_out_0_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_address = out_xbar_auto_out_0_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_0_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_data = out_xbar_auto_out_0_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_0_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_d_ready = out_xbar_auto_out_0_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_1_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_1_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_uart_1_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_1_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_uart_1_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_1_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_valid = out_xbar_auto_out_1_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_opcode = out_xbar_auto_out_1_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_param = out_xbar_auto_out_1_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_size = out_xbar_auto_out_1_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_source = out_xbar_auto_out_1_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_address = out_xbar_auto_out_1_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_mask = out_xbar_auto_out_1_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_data = out_xbar_auto_out_1_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_1_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_d_ready = out_xbar_auto_out_1_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_2_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_2_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_uart_2_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_2_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_uart_2_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_2_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_valid = out_xbar_auto_out_2_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_bits_opcode = out_xbar_auto_out_2_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_bits_param = out_xbar_auto_out_2_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_bits_size = out_xbar_auto_out_2_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_bits_source = out_xbar_auto_out_2_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_bits_address = out_xbar_auto_out_2_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_bits_mask = out_xbar_auto_out_2_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_bits_data = out_xbar_auto_out_2_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_2_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_2_auto_tl_in_d_ready = out_xbar_auto_out_2_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_3_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_3_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_uart_3_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_3_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_uart_3_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_3_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_valid = out_xbar_auto_out_3_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_bits_opcode = out_xbar_auto_out_3_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_bits_param = out_xbar_auto_out_3_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_bits_size = out_xbar_auto_out_3_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_bits_source = out_xbar_auto_out_3_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_bits_address = out_xbar_auto_out_3_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_bits_mask = out_xbar_auto_out_3_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_bits_data = out_xbar_auto_out_3_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_3_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_3_auto_tl_in_d_ready = out_xbar_auto_out_3_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_4_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_uart_4_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_uart_4_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_4_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_uart_4_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_4_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_valid = out_xbar_auto_out_4_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_bits_opcode = out_xbar_auto_out_4_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_bits_param = out_xbar_auto_out_4_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_bits_size = out_xbar_auto_out_4_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_bits_source = out_xbar_auto_out_4_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_bits_address = out_xbar_auto_out_4_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_bits_mask = out_xbar_auto_out_4_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_bits_data = out_xbar_auto_out_4_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_4_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_4_auto_tl_in_d_ready = out_xbar_auto_out_4_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_0_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_qspi_0_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_qspi_0_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_valid = out_xbar_auto_out_5_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_5_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_bits_param = out_xbar_auto_out_5_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_bits_size = out_xbar_auto_out_5_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_bits_source = out_xbar_auto_out_5_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_bits_address = out_xbar_auto_out_5_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_5_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_bits_data = out_xbar_auto_out_5_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_5_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_auto_tl_in_d_ready = out_xbar_auto_out_5_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_0_1_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_0_1_auto_mem_xing_out_a_ready =
+    auto_coupler_to_device_named_qspi_0_mem_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_valid =
+    auto_coupler_to_device_named_qspi_0_mem_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_size =
+    auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_source =
+    auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_1_auto_mem_xing_out_d_bits_data =
+    auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_a_valid = out_xbar_auto_out_6_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_opcode = out_xbar_auto_out_6_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_param = out_xbar_auto_out_6_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_size = out_xbar_auto_out_6_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_source = out_xbar_auto_out_6_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_address = out_xbar_auto_out_6_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_mask = out_xbar_auto_out_6_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_6_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_0_1_auto_tl_in_d_ready = out_xbar_auto_out_6_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_ram_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_valid = out_xbar_auto_out_7_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_7_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_param = out_xbar_auto_out_7_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_size = out_xbar_auto_out_7_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_source = out_xbar_auto_out_7_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_address = out_xbar_auto_out_7_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_7_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_data = out_xbar_auto_out_7_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_7_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_d_ready = out_xbar_auto_out_7_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_spi_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_spi_0_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_spi_0_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_spi_0_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_spi_0_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_spi_0_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_valid = out_xbar_auto_out_8_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_8_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_bits_param = out_xbar_auto_out_8_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_bits_size = out_xbar_auto_out_8_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_bits_source = out_xbar_auto_out_8_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_bits_address = out_xbar_auto_out_8_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_8_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_bits_data = out_xbar_auto_out_8_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_8_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_spi_0_auto_tl_in_d_ready = out_xbar_auto_out_8_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_gpio_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_gpio_0_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_gpio_0_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_gpio_0_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_gpio_0_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_gpio_0_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_valid = out_xbar_auto_out_9_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_9_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_param = out_xbar_auto_out_9_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_size = out_xbar_auto_out_9_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_source = out_xbar_auto_out_9_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_address = out_xbar_auto_out_9_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_9_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_data = out_xbar_auto_out_9_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_9_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_d_ready = out_xbar_auto_out_9_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_pwm_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_pwm_0_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_pwm_0_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_0_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_pwm_0_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_0_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_valid = out_xbar_auto_out_10_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_10_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_bits_param = out_xbar_auto_out_10_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_bits_size = out_xbar_auto_out_10_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_bits_source = out_xbar_auto_out_10_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_bits_address = out_xbar_auto_out_10_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_10_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_bits_data = out_xbar_auto_out_10_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_10_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_0_auto_tl_in_d_ready = out_xbar_auto_out_10_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_pwm_1_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_pwm_1_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_pwm_1_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_1_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_pwm_1_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_1_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_valid = out_xbar_auto_out_11_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_bits_opcode = out_xbar_auto_out_11_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_bits_param = out_xbar_auto_out_11_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_bits_size = out_xbar_auto_out_11_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_bits_source = out_xbar_auto_out_11_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_bits_address = out_xbar_auto_out_11_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_bits_mask = out_xbar_auto_out_11_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_bits_data = out_xbar_auto_out_11_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_11_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_1_auto_tl_in_d_ready = out_xbar_auto_out_11_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_pwm_2_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_pwm_2_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_pwm_2_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_2_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_pwm_2_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_2_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_valid = out_xbar_auto_out_12_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_bits_opcode = out_xbar_auto_out_12_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_bits_param = out_xbar_auto_out_12_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_bits_size = out_xbar_auto_out_12_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_bits_source = out_xbar_auto_out_12_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_bits_address = out_xbar_auto_out_12_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_bits_mask = out_xbar_auto_out_12_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_bits_data = out_xbar_auto_out_12_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_12_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_pwm_2_auto_tl_in_d_ready = out_xbar_auto_out_12_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_i2c_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_i2c_0_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_i2c_0_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_0_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_i2c_0_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_0_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_valid = out_xbar_auto_out_13_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_13_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_bits_param = out_xbar_auto_out_13_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_bits_size = out_xbar_auto_out_13_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_bits_source = out_xbar_auto_out_13_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_bits_address = out_xbar_auto_out_13_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_13_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_bits_data = out_xbar_auto_out_13_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_13_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_0_auto_tl_in_d_ready = out_xbar_auto_out_13_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_i2c_1_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_i2c_1_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_i2c_1_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_1_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_i2c_1_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_1_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_valid = out_xbar_auto_out_14_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_bits_opcode = out_xbar_auto_out_14_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_bits_param = out_xbar_auto_out_14_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_bits_size = out_xbar_auto_out_14_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_bits_source = out_xbar_auto_out_14_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_bits_address = out_xbar_auto_out_14_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_bits_mask = out_xbar_auto_out_14_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_bits_data = out_xbar_auto_out_14_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_14_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_i2c_1_auto_tl_in_d_ready = out_xbar_auto_out_14_d_ready; // @[LazyModule.scala 298:16]
+endmodule
+module ClockGroupAggregator_2(
+  input   auto_in_member_subsystem_fbus_0_clock,
+  input   auto_in_member_subsystem_fbus_0_reset,
+  output  auto_out_member_subsystem_fbus_0_clock,
+  output  auto_out_member_subsystem_fbus_0_reset
+);
+  assign auto_out_member_subsystem_fbus_0_clock = auto_in_member_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_member_subsystem_fbus_0_reset = auto_in_member_subsystem_fbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockGroup_2(
+  input   auto_in_member_subsystem_fbus_0_clock,
+  input   auto_in_member_subsystem_fbus_0_reset,
+  output  auto_out_clock,
+  output  auto_out_reset
+);
+  assign auto_out_clock = auto_in_member_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_reset = auto_in_member_subsystem_fbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module FixedClockBroadcast_2(
+  input   auto_in_clock,
+  input   auto_in_reset,
+  output  auto_out_clock,
+  output  auto_out_reset
+);
+  assign auto_out_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module FrontBus(
+  input   auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_clock,
+  input   auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_reset
+);
+  wire  subsystem_fbus_clock_groups_auto_in_member_subsystem_fbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_fbus_clock_groups_auto_in_member_subsystem_fbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_fbus_clock_groups_auto_out_member_subsystem_fbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_fbus_clock_groups_auto_out_member_subsystem_fbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  clockGroup_auto_in_member_subsystem_fbus_0_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_in_member_subsystem_fbus_0_reset; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_reset; // @[BusWrapper.scala 41:38]
+  wire  fixedClockNode_auto_in_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_in_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_reset; // @[ClockGroup.scala 106:107]
+  ClockGroupAggregator_2 subsystem_fbus_clock_groups ( // @[BusWrapper.scala 40:48]
+    .auto_in_member_subsystem_fbus_0_clock(subsystem_fbus_clock_groups_auto_in_member_subsystem_fbus_0_clock),
+    .auto_in_member_subsystem_fbus_0_reset(subsystem_fbus_clock_groups_auto_in_member_subsystem_fbus_0_reset),
+    .auto_out_member_subsystem_fbus_0_clock(subsystem_fbus_clock_groups_auto_out_member_subsystem_fbus_0_clock),
+    .auto_out_member_subsystem_fbus_0_reset(subsystem_fbus_clock_groups_auto_out_member_subsystem_fbus_0_reset)
+  );
+  ClockGroup_2 clockGroup ( // @[BusWrapper.scala 41:38]
+    .auto_in_member_subsystem_fbus_0_clock(clockGroup_auto_in_member_subsystem_fbus_0_clock),
+    .auto_in_member_subsystem_fbus_0_reset(clockGroup_auto_in_member_subsystem_fbus_0_reset),
+    .auto_out_clock(clockGroup_auto_out_clock),
+    .auto_out_reset(clockGroup_auto_out_reset)
+  );
+  FixedClockBroadcast_2 fixedClockNode ( // @[ClockGroup.scala 106:107]
+    .auto_in_clock(fixedClockNode_auto_in_clock),
+    .auto_in_reset(fixedClockNode_auto_in_reset),
+    .auto_out_clock(fixedClockNode_auto_out_clock),
+    .auto_out_reset(fixedClockNode_auto_out_reset)
+  );
+  assign subsystem_fbus_clock_groups_auto_in_member_subsystem_fbus_0_clock =
+    auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_fbus_clock_groups_auto_in_member_subsystem_fbus_0_reset =
+    auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_reset; // @[LazyModule.scala 309:16]
+  assign clockGroup_auto_in_member_subsystem_fbus_0_clock =
+    subsystem_fbus_clock_groups_auto_out_member_subsystem_fbus_0_clock; // @[LazyModule.scala 298:16]
+  assign clockGroup_auto_in_member_subsystem_fbus_0_reset =
+    subsystem_fbus_clock_groups_auto_out_member_subsystem_fbus_0_reset; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_clock = clockGroup_auto_out_clock; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_reset = clockGroup_auto_out_reset; // @[LazyModule.scala 298:16]
+endmodule
+module ClockGroupAggregator_3(
+  input   auto_in_member_subsystem_cbus_1_clock,
+  input   auto_in_member_subsystem_cbus_1_reset,
+  input   auto_in_member_subsystem_cbus_0_clock,
+  input   auto_in_member_subsystem_cbus_0_reset,
+  output  auto_out_1_member_subsystem_pbus_0_clock,
+  output  auto_out_1_member_subsystem_pbus_0_reset,
+  output  auto_out_0_member_subsystem_cbus_0_clock,
+  output  auto_out_0_member_subsystem_cbus_0_reset
+);
+  assign auto_out_1_member_subsystem_pbus_0_clock = auto_in_member_subsystem_cbus_1_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_member_subsystem_pbus_0_reset = auto_in_member_subsystem_cbus_1_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_member_subsystem_cbus_0_clock = auto_in_member_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_member_subsystem_cbus_0_reset = auto_in_member_subsystem_cbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockGroup_3(
+  input   auto_in_member_subsystem_cbus_0_clock,
+  input   auto_in_member_subsystem_cbus_0_reset,
+  output  auto_out_clock,
+  output  auto_out_reset
+);
+  assign auto_out_clock = auto_in_member_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_reset = auto_in_member_subsystem_cbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module FixedClockBroadcast_3(
+  input   auto_in_clock,
+  input   auto_in_reset,
+  output  auto_out_3_clock,
+  output  auto_out_3_reset,
+  output  auto_out_1_clock,
+  output  auto_out_1_reset,
+  output  auto_out_0_clock,
+  output  auto_out_0_reset
+);
+  assign auto_out_3_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_clock = auto_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_reset = auto_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_24(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{18'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [30:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [30:0] _T_48 = $signed(_T_7) & -31'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h3000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h2000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h8000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'hc000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_85 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_86 = {1'b0,$signed(_T_85)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_88 = $signed(_T_86) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_89 = $signed(_T_88) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_90 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_91 = {1'b0,$signed(_T_90)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_93 = $signed(_T_91) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_94 = $signed(_T_93) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_95 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_96 = {1'b0,$signed(_T_95)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_98 = $signed(_T_96) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_99 = $signed(_T_98) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_100 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_101 = {1'b0,$signed(_T_100)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_103 = $signed(_T_101) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_104 = $signed(_T_103) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_105 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_106 = {1'b0,$signed(_T_105)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_108 = $signed(_T_106) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_109 = $signed(_T_108) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_110 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_111 = {1'b0,$signed(_T_110)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_113 = $signed(_T_111) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_114 = $signed(_T_113) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_127 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109
+     | _T_114; // @[Parameters.scala 671:42]
+  wire  _T_137 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_138 = _source_ok_T & _T_137; // @[Mux.scala 27:73]
+  wire  _T_230 = _T_35 & _T_127; // @[Parameters.scala 670:56]
+  wire  _T_232 = _T_138 & _T_230; // @[Monitor.scala 83:78]
+  wire  _T_246 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_250 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_251 = _T_250 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_255 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_476 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_489 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_512 = _T_35 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_514 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_593 = _T_49 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 |
+    _T_114; // @[Parameters.scala 671:42]
+  wire  _T_594 = _T_514 & _T_593; // @[Parameters.scala 670:56]
+  wire  _T_596 = _T_512 | _T_594; // @[Parameters.scala 672:30]
+  wire  _T_606 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_610 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_618 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_707 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_708 = _T_514 & _T_707; // @[Parameters.scala 670:56]
+  wire  _T_723 = _T_512 | _T_708; // @[Parameters.scala 672:30]
+  wire  _T_725 = _T_42 & _T_723; // @[Monitor.scala 115:71]
+  wire  _T_743 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_864 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_865 = io_in_a_bits_mask & _T_864; // @[Monitor.scala 127:31]
+  wire  _T_866 = _T_865 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_870 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_882 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_931 = _T_54 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_932 = _T_882 & _T_931; // @[Parameters.scala 670:56]
+  wire  _T_972 = _T_42 & _T_932; // @[Monitor.scala 131:74]
+  wire  _T_982 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_990 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1102 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1110 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1212 = _T_42 & _T_512; // @[Monitor.scala 147:68]
+  wire  _T_1222 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1234 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_1238 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1242 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1246 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1250 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1254 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1258 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1269 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1273 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1286 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1306 = _T_1254 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1315 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1332 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1350 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1380 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1381 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1385 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1389 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1393 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1397 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1404 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1405 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1409 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1413 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1417 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1421 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1425 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_75 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1431 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_1434 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_77}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1436 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1438 = ~_T_1436[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1442 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1444 = ~_T_1238; // @[Monitor.scala 671:74]
+  wire  _T_1445 = io_in_d_valid & d_first_1 & ~_T_1238; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1444 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1444 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_24 = _d_first_T & d_first_1 & _T_1444 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1431 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1455 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1457 = _T_1455[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1462 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1463 = io_in_d_bits_opcode == _GEN_32 | _T_1462; // @[Monitor.scala 685:77]
+  wire  _T_1467 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1474 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1475 = io_in_d_bits_opcode == _GEN_48 | _T_1474; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_79 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1479 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1489 = _T_1442 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1444; // @[Monitor.scala 694:116]
+  wire  _T_1491 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_20[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_24[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1500 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1526 = io_in_d_valid & d_first_2 & _T_1238; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_1238 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_69 = _d_first_T & d_first_2 & _T_1238 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire [2:0] _T_1534 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_1544 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] d_sizes_clr_1 = _GEN_69[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1564 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_232 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_232) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_246 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_251 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_232 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_232) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_246 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_476 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_476) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_251 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_596 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_596) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_725 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_725) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_725 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_725) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_972 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_982 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_982) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_972 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1102 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_1102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1212 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_1212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1222 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_1222) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1234 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1234) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1254 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1254) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1306 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1306 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~_T_1306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1381 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1381) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1385 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1389 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1389) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1393 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1393) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1397 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1405 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1409 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1409) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1413 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1413) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1417 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1421 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1425 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1438 & (_T_1434 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1434 & ~reset & ~_T_1438) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1457 & (_T_1445 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & _T_2 & ~_T_1457) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1463 & (_T_1445 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & same_cycle_resp & _T_2 & ~_T_1463) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1467 & (_T_1445 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & same_cycle_resp & _T_2 & ~_T_1467) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1475 & (_T_1445 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & ~same_cycle_resp & _T_2 & ~_T_1475) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1479 & (_T_1445 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & ~same_cycle_resp & _T_2 & ~_T_1479) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1491 & (_T_1489 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1489 & _T_2 & ~_T_1491) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1500 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1500) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1534[0] & (_T_1526 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1526 & _T_2 & ~_T_1534[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1544 & (_T_1526 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1526 & _T_2 & ~_T_1544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1564 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1564) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:54:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[23:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[9:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[9:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[23:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[9:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFIFOFixer_2(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  TLMonitor_24 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  assign auto_in_a_ready = auto_out_a_ready; // @[FIFOFixer.scala 88:33]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[FIFOFixer.scala 87:33]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_out_a_ready; // @[FIFOFixer.scala 88:33]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLXbar_4(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Xbar.scala 228:69]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Xbar.scala 323:53]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_25(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{18'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [30:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [30:0] _T_48 = $signed(_T_7) & -31'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h3000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h2000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h8000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'hc000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_85 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_86 = {1'b0,$signed(_T_85)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_88 = $signed(_T_86) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_89 = $signed(_T_88) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_90 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_91 = {1'b0,$signed(_T_90)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_93 = $signed(_T_91) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_94 = $signed(_T_93) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_95 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_96 = {1'b0,$signed(_T_95)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_98 = $signed(_T_96) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_99 = $signed(_T_98) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_100 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_101 = {1'b0,$signed(_T_100)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_103 = $signed(_T_101) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_104 = $signed(_T_103) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_105 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_106 = {1'b0,$signed(_T_105)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_108 = $signed(_T_106) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_109 = $signed(_T_108) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_110 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_111 = {1'b0,$signed(_T_110)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_113 = $signed(_T_111) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_114 = $signed(_T_113) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_127 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109
+     | _T_114; // @[Parameters.scala 671:42]
+  wire  _T_137 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_138 = _source_ok_T & _T_137; // @[Mux.scala 27:73]
+  wire  _T_230 = _T_35 & _T_127; // @[Parameters.scala 670:56]
+  wire  _T_232 = _T_138 & _T_230; // @[Monitor.scala 83:78]
+  wire  _T_246 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_250 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_251 = _T_250 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_255 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_476 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_489 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_512 = _T_35 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_514 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_593 = _T_49 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 |
+    _T_114; // @[Parameters.scala 671:42]
+  wire  _T_594 = _T_514 & _T_593; // @[Parameters.scala 670:56]
+  wire  _T_596 = _T_512 | _T_594; // @[Parameters.scala 672:30]
+  wire  _T_606 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_610 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_618 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_707 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_708 = _T_514 & _T_707; // @[Parameters.scala 670:56]
+  wire  _T_723 = _T_512 | _T_708; // @[Parameters.scala 672:30]
+  wire  _T_725 = _T_42 & _T_723; // @[Monitor.scala 115:71]
+  wire  _T_743 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_864 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_865 = io_in_a_bits_mask & _T_864; // @[Monitor.scala 127:31]
+  wire  _T_866 = _T_865 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_870 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_882 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_931 = _T_54 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_932 = _T_882 & _T_931; // @[Parameters.scala 670:56]
+  wire  _T_972 = _T_42 & _T_932; // @[Monitor.scala 131:74]
+  wire  _T_982 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_990 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1102 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1110 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1212 = _T_42 & _T_512; // @[Monitor.scala 147:68]
+  wire  _T_1222 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1234 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_1238 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1242 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1246 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1250 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1254 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1258 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1269 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1273 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1286 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1306 = _T_1254 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1315 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1332 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1350 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1380 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1381 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1385 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1389 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1393 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1397 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1404 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1405 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1409 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1413 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1417 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1421 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1425 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_75 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1431 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_1434 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_77}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1436 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1438 = ~_T_1436[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1442 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1444 = ~_T_1238; // @[Monitor.scala 671:74]
+  wire  _T_1445 = io_in_d_valid & d_first_1 & ~_T_1238; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1444 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1444 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_24 = _d_first_T & d_first_1 & _T_1444 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1431 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1455 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1457 = _T_1455[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1462 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1463 = io_in_d_bits_opcode == _GEN_32 | _T_1462; // @[Monitor.scala 685:77]
+  wire  _T_1467 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1474 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1475 = io_in_d_bits_opcode == _GEN_48 | _T_1474; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_79 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1479 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1489 = _T_1442 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1444; // @[Monitor.scala 694:116]
+  wire  _T_1491 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_20[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_24[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1500 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1526 = io_in_d_valid & d_first_2 & _T_1238; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_1238 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_69 = _d_first_T & d_first_2 & _T_1238 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire [2:0] _T_1534 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_1544 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] d_sizes_clr_1 = _GEN_69[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1564 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_232 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_232) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_246 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_251 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_232 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_232) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_246 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_476 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_476) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_251 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_596 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_596) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_725 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_725) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_725 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_725) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_972 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_982 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_982) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_972 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1102 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_1102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1212 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_1212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1222 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_1222) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1234 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1234) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1254 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1254) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1306 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1306 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~_T_1306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1381 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1381) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1385 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1389 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1389) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1393 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1393) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1397 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1405 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1409 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1409) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1413 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1413) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1417 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1421 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1425 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1438 & (_T_1434 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1434 & ~reset & ~_T_1438) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1457 & (_T_1445 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & _T_2 & ~_T_1457) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1463 & (_T_1445 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & same_cycle_resp & _T_2 & ~_T_1463) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1467 & (_T_1445 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & same_cycle_resp & _T_2 & ~_T_1467) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1475 & (_T_1445 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & ~same_cycle_resp & _T_2 & ~_T_1475) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1479 & (_T_1445 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & ~same_cycle_resp & _T_2 & ~_T_1479) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1491 & (_T_1489 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1489 & _T_2 & ~_T_1491) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1500 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1500) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1534[0] & (_T_1526 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1526 & _T_2 & ~_T_1534[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1544 & (_T_1526 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1526 & _T_2 & ~_T_1544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1564 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1564) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:53:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[23:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[9:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[9:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[23:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[9:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLXbar_5(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_7_a_ready,
+  output        auto_out_7_a_valid,
+  output [2:0]  auto_out_7_a_bits_opcode,
+  output [2:0]  auto_out_7_a_bits_param,
+  output [2:0]  auto_out_7_a_bits_size,
+  output [1:0]  auto_out_7_a_bits_source,
+  output [16:0] auto_out_7_a_bits_address,
+  output [3:0]  auto_out_7_a_bits_mask,
+  output        auto_out_7_a_bits_corrupt,
+  output        auto_out_7_d_ready,
+  input         auto_out_7_d_valid,
+  input  [2:0]  auto_out_7_d_bits_size,
+  input  [1:0]  auto_out_7_d_bits_source,
+  input  [31:0] auto_out_7_d_bits_data,
+  input         auto_out_6_a_ready,
+  output        auto_out_6_a_valid,
+  output [2:0]  auto_out_6_a_bits_opcode,
+  output [2:0]  auto_out_6_a_bits_param,
+  output [2:0]  auto_out_6_a_bits_size,
+  output [1:0]  auto_out_6_a_bits_source,
+  output [28:0] auto_out_6_a_bits_address,
+  output [3:0]  auto_out_6_a_bits_mask,
+  output [31:0] auto_out_6_a_bits_data,
+  output        auto_out_6_a_bits_corrupt,
+  output        auto_out_6_d_ready,
+  input         auto_out_6_d_valid,
+  input  [2:0]  auto_out_6_d_bits_opcode,
+  input  [1:0]  auto_out_6_d_bits_param,
+  input  [2:0]  auto_out_6_d_bits_size,
+  input  [1:0]  auto_out_6_d_bits_source,
+  input         auto_out_6_d_bits_sink,
+  input         auto_out_6_d_bits_denied,
+  input  [31:0] auto_out_6_d_bits_data,
+  input         auto_out_6_d_bits_corrupt,
+  input         auto_out_5_a_ready,
+  output        auto_out_5_a_valid,
+  output [2:0]  auto_out_5_a_bits_opcode,
+  output [2:0]  auto_out_5_a_bits_param,
+  output [2:0]  auto_out_5_a_bits_size,
+  output [1:0]  auto_out_5_a_bits_source,
+  output [27:0] auto_out_5_a_bits_address,
+  output [3:0]  auto_out_5_a_bits_mask,
+  output [31:0] auto_out_5_a_bits_data,
+  output        auto_out_5_a_bits_corrupt,
+  output        auto_out_5_d_ready,
+  input         auto_out_5_d_valid,
+  input  [2:0]  auto_out_5_d_bits_opcode,
+  input  [1:0]  auto_out_5_d_bits_param,
+  input  [2:0]  auto_out_5_d_bits_size,
+  input  [1:0]  auto_out_5_d_bits_source,
+  input         auto_out_5_d_bits_sink,
+  input         auto_out_5_d_bits_denied,
+  input  [31:0] auto_out_5_d_bits_data,
+  input         auto_out_5_d_bits_corrupt,
+  input         auto_out_4_a_ready,
+  output        auto_out_4_a_valid,
+  output [2:0]  auto_out_4_a_bits_opcode,
+  output [2:0]  auto_out_4_a_bits_param,
+  output [2:0]  auto_out_4_a_bits_size,
+  output [1:0]  auto_out_4_a_bits_source,
+  output [11:0] auto_out_4_a_bits_address,
+  output [3:0]  auto_out_4_a_bits_mask,
+  output [31:0] auto_out_4_a_bits_data,
+  output        auto_out_4_a_bits_corrupt,
+  output        auto_out_4_d_ready,
+  input         auto_out_4_d_valid,
+  input  [2:0]  auto_out_4_d_bits_opcode,
+  input  [2:0]  auto_out_4_d_bits_size,
+  input  [1:0]  auto_out_4_d_bits_source,
+  input  [31:0] auto_out_4_d_bits_data,
+  input         auto_out_3_a_ready,
+  output        auto_out_3_a_valid,
+  output [2:0]  auto_out_3_a_bits_opcode,
+  output [2:0]  auto_out_3_a_bits_param,
+  output [2:0]  auto_out_3_a_bits_size,
+  output [1:0]  auto_out_3_a_bits_source,
+  output [25:0] auto_out_3_a_bits_address,
+  output [3:0]  auto_out_3_a_bits_mask,
+  output [31:0] auto_out_3_a_bits_data,
+  output        auto_out_3_a_bits_corrupt,
+  output        auto_out_3_d_ready,
+  input         auto_out_3_d_valid,
+  input  [2:0]  auto_out_3_d_bits_opcode,
+  input  [2:0]  auto_out_3_d_bits_size,
+  input  [1:0]  auto_out_3_d_bits_source,
+  input  [31:0] auto_out_3_d_bits_data,
+  input         auto_out_2_a_ready,
+  output        auto_out_2_a_valid,
+  output [2:0]  auto_out_2_a_bits_opcode,
+  output [2:0]  auto_out_2_a_bits_param,
+  output [2:0]  auto_out_2_a_bits_size,
+  output [1:0]  auto_out_2_a_bits_source,
+  output [27:0] auto_out_2_a_bits_address,
+  output [3:0]  auto_out_2_a_bits_mask,
+  output [31:0] auto_out_2_a_bits_data,
+  output        auto_out_2_a_bits_corrupt,
+  output        auto_out_2_d_ready,
+  input         auto_out_2_d_valid,
+  input  [2:0]  auto_out_2_d_bits_opcode,
+  input  [2:0]  auto_out_2_d_bits_size,
+  input  [1:0]  auto_out_2_d_bits_source,
+  input  [31:0] auto_out_2_d_bits_data,
+  input         auto_out_1_a_ready,
+  output        auto_out_1_a_valid,
+  output [2:0]  auto_out_1_a_bits_opcode,
+  output [2:0]  auto_out_1_a_bits_param,
+  output [2:0]  auto_out_1_a_bits_size,
+  output [1:0]  auto_out_1_a_bits_source,
+  output [29:0] auto_out_1_a_bits_address,
+  output [3:0]  auto_out_1_a_bits_mask,
+  output [31:0] auto_out_1_a_bits_data,
+  output        auto_out_1_a_bits_corrupt,
+  output        auto_out_1_d_ready,
+  input         auto_out_1_d_valid,
+  input  [2:0]  auto_out_1_d_bits_opcode,
+  input  [1:0]  auto_out_1_d_bits_param,
+  input  [2:0]  auto_out_1_d_bits_size,
+  input  [1:0]  auto_out_1_d_bits_source,
+  input         auto_out_1_d_bits_sink,
+  input         auto_out_1_d_bits_denied,
+  input  [31:0] auto_out_1_d_bits_data,
+  input         auto_out_1_d_bits_corrupt,
+  input         auto_out_0_a_ready,
+  output        auto_out_0_a_valid,
+  output [2:0]  auto_out_0_a_bits_opcode,
+  output [2:0]  auto_out_0_a_bits_param,
+  output [3:0]  auto_out_0_a_bits_size,
+  output [1:0]  auto_out_0_a_bits_source,
+  output [13:0] auto_out_0_a_bits_address,
+  output [3:0]  auto_out_0_a_bits_mask,
+  output        auto_out_0_a_bits_corrupt,
+  output        auto_out_0_d_ready,
+  input         auto_out_0_d_valid,
+  input  [2:0]  auto_out_0_d_bits_opcode,
+  input  [1:0]  auto_out_0_d_bits_param,
+  input  [3:0]  auto_out_0_d_bits_size,
+  input  [1:0]  auto_out_0_d_bits_source,
+  input         auto_out_0_d_bits_sink,
+  input         auto_out_0_d_bits_denied,
+  input  [31:0] auto_out_0_d_bits_data,
+  input         auto_out_0_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  reg [9:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 10'h0; // @[Arbiter.scala 88:28]
+  wire [7:0] readys_valid = {auto_out_7_d_valid,auto_out_6_d_valid,auto_out_5_d_valid,auto_out_4_d_valid,
+    auto_out_3_d_valid,auto_out_2_d_valid,auto_out_1_d_valid,auto_out_0_d_valid}; // @[Cat.scala 31:58]
+  reg [7:0] readys_mask; // @[Arbiter.scala 23:23]
+  wire [7:0] _readys_filter_T = ~readys_mask; // @[Arbiter.scala 24:30]
+  wire [7:0] _readys_filter_T_1 = readys_valid & _readys_filter_T; // @[Arbiter.scala 24:28]
+  wire [15:0] readys_filter = {_readys_filter_T_1,auto_out_7_d_valid,auto_out_6_d_valid,auto_out_5_d_valid,
+    auto_out_4_d_valid,auto_out_3_d_valid,auto_out_2_d_valid,auto_out_1_d_valid,auto_out_0_d_valid}; // @[Cat.scala 31:58]
+  wire [15:0] _GEN_1 = {{1'd0}, readys_filter[15:1]}; // @[package.scala 253:43]
+  wire [15:0] _readys_unready_T_1 = readys_filter | _GEN_1; // @[package.scala 253:43]
+  wire [15:0] _GEN_2 = {{2'd0}, _readys_unready_T_1[15:2]}; // @[package.scala 253:43]
+  wire [15:0] _readys_unready_T_3 = _readys_unready_T_1 | _GEN_2; // @[package.scala 253:43]
+  wire [15:0] _GEN_3 = {{4'd0}, _readys_unready_T_3[15:4]}; // @[package.scala 253:43]
+  wire [15:0] _readys_unready_T_5 = _readys_unready_T_3 | _GEN_3; // @[package.scala 253:43]
+  wire [15:0] _readys_unready_T_8 = {readys_mask, 8'h0}; // @[Arbiter.scala 25:66]
+  wire [15:0] _GEN_4 = {{1'd0}, _readys_unready_T_5[15:1]}; // @[Arbiter.scala 25:58]
+  wire [15:0] readys_unready = _GEN_4 | _readys_unready_T_8; // @[Arbiter.scala 25:58]
+  wire [7:0] _readys_readys_T_2 = readys_unready[15:8] & readys_unready[7:0]; // @[Arbiter.scala 26:39]
+  wire [7:0] readys_readys = ~_readys_readys_T_2; // @[Arbiter.scala 26:18]
+  wire  readys_0 = readys_readys[0]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_0 = readys_0 & auto_out_0_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_0; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_0 = idle ? earlyWinner_0 : state_0; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_132 = muxStateEarly_0 ? auto_out_0_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire  readys_1 = readys_readys[1]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_1 = readys_1 & auto_out_1_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_1; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1 = idle ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_133 = muxStateEarly_1 ? auto_out_1_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_140 = _T_132 | _T_133; // @[Mux.scala 27:73]
+  wire  readys_2 = readys_readys[2]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_2 = readys_2 & auto_out_2_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_2; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_2 = idle ? earlyWinner_2 : state_2; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_134 = muxStateEarly_2 ? auto_out_2_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_141 = _T_140 | _T_134; // @[Mux.scala 27:73]
+  wire  readys_3 = readys_readys[3]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_3 = readys_3 & auto_out_3_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_3; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_3 = idle ? earlyWinner_3 : state_3; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_135 = muxStateEarly_3 ? auto_out_3_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_142 = _T_141 | _T_135; // @[Mux.scala 27:73]
+  wire  readys_4 = readys_readys[4]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_4 = readys_4 & auto_out_4_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_4; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_4 = idle ? earlyWinner_4 : state_4; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_136 = muxStateEarly_4 ? auto_out_4_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_143 = _T_142 | _T_136; // @[Mux.scala 27:73]
+  wire  readys_5 = readys_readys[5]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_5 = readys_5 & auto_out_5_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_5; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_5 = idle ? earlyWinner_5 : state_5; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_137 = muxStateEarly_5 ? auto_out_5_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_144 = _T_143 | _T_137; // @[Mux.scala 27:73]
+  wire  readys_6 = readys_readys[6]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_6 = readys_6 & auto_out_6_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_6; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_6 = idle ? earlyWinner_6 : state_6; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_138 = muxStateEarly_6 ? auto_out_6_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_145 = _T_144 | _T_138; // @[Mux.scala 27:73]
+  wire  readys_7 = readys_readys[7]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_7 = readys_7 & auto_out_7_d_valid; // @[Arbiter.scala 97:79]
+  reg  state_7; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_7 = idle ? earlyWinner_7 : state_7; // @[Arbiter.scala 117:30]
+  wire [1:0] _T_139 = muxStateEarly_7 ? auto_out_7_d_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [29:0] _requestAIO_T = auto_in_a_bits_address ^ 30'h3000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_1 = {1'b0,$signed(_requestAIO_T)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_3 = $signed(_requestAIO_T_1) & 31'sh3e057000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_0 = $signed(_requestAIO_T_3) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_5 = auto_in_a_bits_address ^ 30'h10003000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_6 = {1'b0,$signed(_requestAIO_T_5)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_8 = $signed(_requestAIO_T_6) & 31'sh3e057000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_9 = $signed(_requestAIO_T_8) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_10 = auto_in_a_bits_address ^ 30'h10004000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_11 = {1'b0,$signed(_requestAIO_T_10)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_13 = $signed(_requestAIO_T_11) & 31'sh3e046000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_14 = $signed(_requestAIO_T_13) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_15 = auto_in_a_bits_address ^ 30'h10006000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_16 = {1'b0,$signed(_requestAIO_T_15)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_18 = $signed(_requestAIO_T_16) & 31'sh3e047000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_19 = $signed(_requestAIO_T_18) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_20 = auto_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_21 = {1'b0,$signed(_requestAIO_T_20)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_23 = $signed(_requestAIO_T_21) & 31'sh3e056000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_24 = $signed(_requestAIO_T_23) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_25 = auto_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_26 = {1'b0,$signed(_requestAIO_T_25)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_28 = $signed(_requestAIO_T_26) & 31'sh3e047000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_29 = $signed(_requestAIO_T_28) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_30 = auto_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_31 = {1'b0,$signed(_requestAIO_T_30)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_33 = $signed(_requestAIO_T_31) & 31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_34 = $signed(_requestAIO_T_33) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  requestAIO_0_1 = _requestAIO_T_9 | _requestAIO_T_14 | _requestAIO_T_19 | _requestAIO_T_24 | _requestAIO_T_29 |
+    _requestAIO_T_34; // @[Xbar.scala 363:92]
+  wire [29:0] _requestAIO_T_40 = auto_in_a_bits_address ^ 30'hc000000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_41 = {1'b0,$signed(_requestAIO_T_40)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_43 = $signed(_requestAIO_T_41) & 31'sh3c000000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_2 = $signed(_requestAIO_T_43) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_45 = auto_in_a_bits_address ^ 30'h2000000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_46 = {1'b0,$signed(_requestAIO_T_45)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_48 = $signed(_requestAIO_T_46) & 31'sh3e050000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_3 = $signed(_requestAIO_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _requestAIO_T_51 = {1'b0,$signed(auto_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_53 = $signed(_requestAIO_T_51) & 31'sh3e057000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_4 = $signed(_requestAIO_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_55 = auto_in_a_bits_address ^ 30'h8000000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_56 = {1'b0,$signed(_requestAIO_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_58 = $signed(_requestAIO_T_56) & 31'sh3e054000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_5 = $signed(_requestAIO_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_60 = auto_in_a_bits_address ^ 30'h10000000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_61 = {1'b0,$signed(_requestAIO_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_63 = $signed(_requestAIO_T_61) & 31'sh3e057000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_6 = $signed(_requestAIO_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_65 = auto_in_a_bits_address ^ 30'h10000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_66 = {1'b0,$signed(_requestAIO_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_68 = $signed(_requestAIO_T_66) & 31'sh3e050000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_7 = $signed(_requestAIO_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [26:0] _beatsDO_decode_T_1 = 27'hfff << auto_out_0_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _beatsDO_decode_T_3 = ~_beatsDO_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] beatsDO_decode = _beatsDO_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata = auto_out_0_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [9:0] beatsDO_0 = beatsDO_opdata ? beatsDO_decode : 10'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_1_d_bits_size = {{1'd0}, auto_out_1_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_5 = 21'h3f << out_1_1_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_7 = ~_beatsDO_decode_T_5[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_1 = _beatsDO_decode_T_7[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_1 = auto_out_1_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_1 = beatsDO_opdata_1 ? beatsDO_decode_1 : 4'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_2_d_bits_size = {{1'd0}, auto_out_2_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_9 = 21'h3f << out_1_2_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_11 = ~_beatsDO_decode_T_9[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_2 = _beatsDO_decode_T_11[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_2 = auto_out_2_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_2 = beatsDO_opdata_2 ? beatsDO_decode_2 : 4'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_3_d_bits_size = {{1'd0}, auto_out_3_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_13 = 21'h3f << out_1_3_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_15 = ~_beatsDO_decode_T_13[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_3 = _beatsDO_decode_T_15[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_3 = auto_out_3_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_3 = beatsDO_opdata_3 ? beatsDO_decode_3 : 4'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_4_d_bits_size = {{1'd0}, auto_out_4_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_17 = 21'h3f << out_1_4_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_19 = ~_beatsDO_decode_T_17[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_4 = _beatsDO_decode_T_19[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_4 = auto_out_4_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_4 = beatsDO_opdata_4 ? beatsDO_decode_4 : 4'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_5_d_bits_size = {{1'd0}, auto_out_5_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_21 = 21'h3f << out_1_5_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_23 = ~_beatsDO_decode_T_21[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_5 = _beatsDO_decode_T_23[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_5 = auto_out_5_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_5 = beatsDO_opdata_5 ? beatsDO_decode_5 : 4'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_6_d_bits_size = {{1'd0}, auto_out_6_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_25 = 21'h3f << out_1_6_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_27 = ~_beatsDO_decode_T_25[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_6 = _beatsDO_decode_T_27[5:2]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_6 = auto_out_6_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [3:0] beatsDO_6 = beatsDO_opdata_6 ? beatsDO_decode_6 : 4'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_7_d_bits_size = {{1'd0}, auto_out_7_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_29 = 21'h3f << out_1_7_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beatsDO_decode_T_31 = ~_beatsDO_decode_T_29[5:0]; // @[package.scala 234:46]
+  wire [3:0] beatsDO_decode_7 = _beatsDO_decode_T_31[5:2]; // @[Edges.scala 219:59]
+  wire  latch = idle & auto_in_d_ready; // @[Arbiter.scala 89:24]
+  wire  _readys_T_3 = ~reset; // @[Arbiter.scala 22:12]
+  wire [7:0] _readys_mask_T = readys_readys & readys_valid; // @[Arbiter.scala 28:29]
+  wire [8:0] _readys_mask_T_1 = {_readys_mask_T, 1'h0}; // @[package.scala 244:48]
+  wire [7:0] _readys_mask_T_3 = _readys_mask_T | _readys_mask_T_1[7:0]; // @[package.scala 244:43]
+  wire [9:0] _readys_mask_T_4 = {_readys_mask_T_3, 2'h0}; // @[package.scala 244:48]
+  wire [7:0] _readys_mask_T_6 = _readys_mask_T_3 | _readys_mask_T_4[7:0]; // @[package.scala 244:43]
+  wire [11:0] _readys_mask_T_7 = {_readys_mask_T_6, 4'h0}; // @[package.scala 244:48]
+  wire [7:0] _readys_mask_T_9 = _readys_mask_T_6 | _readys_mask_T_7[7:0]; // @[package.scala 244:43]
+  wire  prefixOR_2 = earlyWinner_0 | earlyWinner_1; // @[Arbiter.scala 104:53]
+  wire  prefixOR_3 = prefixOR_2 | earlyWinner_2; // @[Arbiter.scala 104:53]
+  wire  prefixOR_4 = prefixOR_3 | earlyWinner_3; // @[Arbiter.scala 104:53]
+  wire  prefixOR_5 = prefixOR_4 | earlyWinner_4; // @[Arbiter.scala 104:53]
+  wire  prefixOR_6 = prefixOR_5 | earlyWinner_5; // @[Arbiter.scala 104:53]
+  wire  prefixOR_7 = prefixOR_6 | earlyWinner_6; // @[Arbiter.scala 104:53]
+  wire  _prefixOR_T = prefixOR_7 | earlyWinner_7; // @[Arbiter.scala 104:53]
+  wire  _T_40 = auto_out_0_d_valid | auto_out_1_d_valid | auto_out_2_d_valid | auto_out_3_d_valid | auto_out_4_d_valid
+     | auto_out_5_d_valid | auto_out_6_d_valid | auto_out_7_d_valid; // @[Arbiter.scala 107:36]
+  wire  _T_41 = ~(auto_out_0_d_valid | auto_out_1_d_valid | auto_out_2_d_valid | auto_out_3_d_valid | auto_out_4_d_valid
+     | auto_out_5_d_valid | auto_out_6_d_valid | auto_out_7_d_valid); // @[Arbiter.scala 107:15]
+  wire [9:0] maskedBeats_0 = earlyWinner_0 ? beatsDO_0 : 10'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_1 = earlyWinner_1 ? beatsDO_1 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_2 = earlyWinner_2 ? beatsDO_2 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_3 = earlyWinner_3 ? beatsDO_3 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_4 = earlyWinner_4 ? beatsDO_4 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_5 = earlyWinner_5 ? beatsDO_5 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_6 = earlyWinner_6 ? beatsDO_6 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_7 = earlyWinner_7 ? beatsDO_decode_7 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [9:0] _GEN_5 = {{6'd0}, maskedBeats_1}; // @[Arbiter.scala 112:44]
+  wire [9:0] _initBeats_T = maskedBeats_0 | _GEN_5; // @[Arbiter.scala 112:44]
+  wire [9:0] _GEN_6 = {{6'd0}, maskedBeats_2}; // @[Arbiter.scala 112:44]
+  wire [9:0] _initBeats_T_1 = _initBeats_T | _GEN_6; // @[Arbiter.scala 112:44]
+  wire [9:0] _GEN_7 = {{6'd0}, maskedBeats_3}; // @[Arbiter.scala 112:44]
+  wire [9:0] _initBeats_T_2 = _initBeats_T_1 | _GEN_7; // @[Arbiter.scala 112:44]
+  wire [9:0] _GEN_8 = {{6'd0}, maskedBeats_4}; // @[Arbiter.scala 112:44]
+  wire [9:0] _initBeats_T_3 = _initBeats_T_2 | _GEN_8; // @[Arbiter.scala 112:44]
+  wire [9:0] _GEN_9 = {{6'd0}, maskedBeats_5}; // @[Arbiter.scala 112:44]
+  wire [9:0] _initBeats_T_4 = _initBeats_T_3 | _GEN_9; // @[Arbiter.scala 112:44]
+  wire [9:0] _GEN_10 = {{6'd0}, maskedBeats_6}; // @[Arbiter.scala 112:44]
+  wire [9:0] _initBeats_T_5 = _initBeats_T_4 | _GEN_10; // @[Arbiter.scala 112:44]
+  wire [9:0] _GEN_11 = {{6'd0}, maskedBeats_7}; // @[Arbiter.scala 112:44]
+  wire [9:0] initBeats = _initBeats_T_5 | _GEN_11; // @[Arbiter.scala 112:44]
+  wire  _sink_ACancel_earlyValid_T_21 = state_0 & auto_out_0_d_valid | state_1 & auto_out_1_d_valid | state_2 &
+    auto_out_2_d_valid | state_3 & auto_out_3_d_valid | state_4 & auto_out_4_d_valid | state_5 & auto_out_5_d_valid |
+    state_6 & auto_out_6_d_valid | state_7 & auto_out_7_d_valid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_17_earlyValid = idle ? _T_40 : _sink_ACancel_earlyValid_T_21; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_in_d_ready & sink_ACancel_17_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [9:0] _GEN_12 = {{9'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [9:0] _beatsLeft_T_4 = beatsLeft - _GEN_12; // @[Arbiter.scala 113:52]
+  wire  allowed_0 = idle ? readys_0 : state_0; // @[Arbiter.scala 121:24]
+  wire  allowed_1 = idle ? readys_1 : state_1; // @[Arbiter.scala 121:24]
+  wire  allowed_2 = idle ? readys_2 : state_2; // @[Arbiter.scala 121:24]
+  wire  allowed_3 = idle ? readys_3 : state_3; // @[Arbiter.scala 121:24]
+  wire  allowed_4 = idle ? readys_4 : state_4; // @[Arbiter.scala 121:24]
+  wire  allowed_5 = idle ? readys_5 : state_5; // @[Arbiter.scala 121:24]
+  wire  allowed_6 = idle ? readys_6 : state_6; // @[Arbiter.scala 121:24]
+  wire  allowed_7 = idle ? readys_7 : state_7; // @[Arbiter.scala 121:24]
+  wire [31:0] _T_87 = muxStateEarly_0 ? auto_out_0_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_88 = muxStateEarly_1 ? auto_out_1_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_89 = muxStateEarly_2 ? auto_out_2_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_90 = muxStateEarly_3 ? auto_out_3_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_91 = muxStateEarly_4 ? auto_out_4_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_92 = muxStateEarly_5 ? auto_out_5_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_93 = muxStateEarly_6 ? auto_out_6_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_94 = muxStateEarly_7 ? auto_out_7_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_95 = _T_87 | _T_88; // @[Mux.scala 27:73]
+  wire [31:0] _T_96 = _T_95 | _T_89; // @[Mux.scala 27:73]
+  wire [31:0] _T_97 = _T_96 | _T_90; // @[Mux.scala 27:73]
+  wire [31:0] _T_98 = _T_97 | _T_91; // @[Mux.scala 27:73]
+  wire [31:0] _T_99 = _T_98 | _T_92; // @[Mux.scala 27:73]
+  wire [31:0] _T_100 = _T_99 | _T_93; // @[Mux.scala 27:73]
+  wire [3:0] _T_147 = muxStateEarly_0 ? auto_out_0_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_148 = muxStateEarly_1 ? out_1_1_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_149 = muxStateEarly_2 ? out_1_2_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_150 = muxStateEarly_3 ? out_1_3_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_151 = muxStateEarly_4 ? out_1_4_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_152 = muxStateEarly_5 ? out_1_5_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_153 = muxStateEarly_6 ? out_1_6_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_154 = muxStateEarly_7 ? out_1_7_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_155 = _T_147 | _T_148; // @[Mux.scala 27:73]
+  wire [3:0] _T_156 = _T_155 | _T_149; // @[Mux.scala 27:73]
+  wire [3:0] _T_157 = _T_156 | _T_150; // @[Mux.scala 27:73]
+  wire [3:0] _T_158 = _T_157 | _T_151; // @[Mux.scala 27:73]
+  wire [3:0] _T_159 = _T_158 | _T_152; // @[Mux.scala 27:73]
+  wire [3:0] _T_160 = _T_159 | _T_153; // @[Mux.scala 27:73]
+  wire [1:0] _T_162 = muxStateEarly_0 ? auto_out_0_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_163 = muxStateEarly_1 ? auto_out_1_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_167 = muxStateEarly_5 ? auto_out_5_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_168 = muxStateEarly_6 ? auto_out_6_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_170 = _T_162 | _T_163; // @[Mux.scala 27:73]
+  wire [1:0] _T_174 = _T_170 | _T_167; // @[Mux.scala 27:73]
+  wire [2:0] _T_177 = muxStateEarly_0 ? auto_out_0_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_178 = muxStateEarly_1 ? auto_out_1_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_179 = muxStateEarly_2 ? auto_out_2_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_180 = muxStateEarly_3 ? auto_out_3_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_181 = muxStateEarly_4 ? auto_out_4_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_182 = muxStateEarly_5 ? auto_out_5_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_183 = muxStateEarly_6 ? auto_out_6_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_184 = muxStateEarly_7 ? 3'h1 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_185 = _T_177 | _T_178; // @[Mux.scala 27:73]
+  wire [2:0] _T_186 = _T_185 | _T_179; // @[Mux.scala 27:73]
+  wire [2:0] _T_187 = _T_186 | _T_180; // @[Mux.scala 27:73]
+  wire [2:0] _T_188 = _T_187 | _T_181; // @[Mux.scala 27:73]
+  wire [2:0] _T_189 = _T_188 | _T_182; // @[Mux.scala 27:73]
+  wire [2:0] _T_190 = _T_189 | _T_183; // @[Mux.scala 27:73]
+  TLMonitor_25 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  assign auto_in_a_ready = requestAIO_0_0 & auto_out_0_a_ready | requestAIO_0_1 & auto_out_1_a_ready | requestAIO_0_2 &
+    auto_out_2_a_ready | requestAIO_0_3 & auto_out_3_a_ready | requestAIO_0_4 & auto_out_4_a_ready | requestAIO_0_5 &
+    auto_out_5_a_ready | requestAIO_0_6 & auto_out_6_a_ready | requestAIO_0_7 & auto_out_7_a_ready; // @[Mux.scala 27:73]
+  assign auto_in_d_valid = idle ? _T_40 : _sink_ACancel_earlyValid_T_21; // @[Arbiter.scala 125:29]
+  assign auto_in_d_bits_opcode = _T_190 | _T_184; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_param = _T_174 | _T_168; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_size = _T_160 | _T_154; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_source = _T_145 | _T_139; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_sink = muxStateEarly_0 & auto_out_0_d_bits_sink | muxStateEarly_1 & auto_out_1_d_bits_sink |
+    muxStateEarly_5 & auto_out_5_d_bits_sink | muxStateEarly_6 & auto_out_6_d_bits_sink; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_denied = muxStateEarly_0 & auto_out_0_d_bits_denied | muxStateEarly_1 & auto_out_1_d_bits_denied
+     | muxStateEarly_5 & auto_out_5_d_bits_denied | muxStateEarly_6 & auto_out_6_d_bits_denied; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_data = _T_100 | _T_94; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_corrupt = muxStateEarly_0 & auto_out_0_d_bits_corrupt | muxStateEarly_1 &
+    auto_out_1_d_bits_corrupt | muxStateEarly_5 & auto_out_5_d_bits_corrupt | muxStateEarly_6 &
+    auto_out_6_d_bits_corrupt; // @[Mux.scala 27:73]
+  assign auto_out_7_a_valid = auto_in_a_valid & requestAIO_0_7; // @[Xbar.scala 428:50]
+  assign auto_out_7_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_a_bits_size = auto_in_a_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_7_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_7_a_bits_address = auto_in_a_bits_address[16:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_7_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7_d_ready = auto_in_d_ready & allowed_7; // @[Arbiter.scala 123:31]
+  assign auto_out_6_a_valid = auto_in_a_valid & requestAIO_0_6; // @[Xbar.scala 428:50]
+  assign auto_out_6_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_size = auto_in_a_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_6_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_6_a_bits_address = auto_in_a_bits_address[28:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_6_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6_d_ready = auto_in_d_ready & allowed_6; // @[Arbiter.scala 123:31]
+  assign auto_out_5_a_valid = auto_in_a_valid & requestAIO_0_5; // @[Xbar.scala 428:50]
+  assign auto_out_5_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_size = auto_in_a_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_5_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_5_a_bits_address = auto_in_a_bits_address[27:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_5_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5_d_ready = auto_in_d_ready & allowed_5; // @[Arbiter.scala 123:31]
+  assign auto_out_4_a_valid = auto_in_a_valid & requestAIO_0_4; // @[Xbar.scala 428:50]
+  assign auto_out_4_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_size = auto_in_a_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_4_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_4_a_bits_address = auto_in_a_bits_address[11:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_4_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_d_ready = auto_in_d_ready & allowed_4; // @[Arbiter.scala 123:31]
+  assign auto_out_3_a_valid = auto_in_a_valid & requestAIO_0_3; // @[Xbar.scala 428:50]
+  assign auto_out_3_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_size = auto_in_a_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_3_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_3_a_bits_address = auto_in_a_bits_address[25:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_3_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_d_ready = auto_in_d_ready & allowed_3; // @[Arbiter.scala 123:31]
+  assign auto_out_2_a_valid = auto_in_a_valid & requestAIO_0_2; // @[Xbar.scala 428:50]
+  assign auto_out_2_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_size = auto_in_a_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_2_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_2_a_bits_address = auto_in_a_bits_address[27:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_2_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_d_ready = auto_in_d_ready & allowed_2; // @[Arbiter.scala 123:31]
+  assign auto_out_1_a_valid = auto_in_a_valid & requestAIO_0_1; // @[Xbar.scala 428:50]
+  assign auto_out_1_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_size = auto_in_a_bits_size[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_1_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_1_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_d_ready = auto_in_d_ready & allowed_1; // @[Arbiter.scala 123:31]
+  assign auto_out_0_a_valid = auto_in_a_valid & requestAIO_0_0; // @[Xbar.scala 428:50]
+  assign auto_out_0_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_0_a_bits_address = auto_in_a_bits_address[13:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_0_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_d_ready = auto_in_d_ready & allowed_0; // @[Arbiter.scala 123:31]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = requestAIO_0_0 & auto_out_0_a_ready | requestAIO_0_1 & auto_out_1_a_ready |
+    requestAIO_0_2 & auto_out_2_a_ready | requestAIO_0_3 & auto_out_3_a_ready | requestAIO_0_4 & auto_out_4_a_ready |
+    requestAIO_0_5 & auto_out_5_a_ready | requestAIO_0_6 & auto_out_6_a_ready | requestAIO_0_7 & auto_out_7_a_ready; // @[Mux.scala 27:73]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = idle ? _T_40 : _sink_ACancel_earlyValid_T_21; // @[Arbiter.scala 125:29]
+  assign monitor_io_in_d_bits_opcode = _T_190 | _T_184; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_param = _T_174 | _T_168; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_size = _T_160 | _T_154; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_source = _T_145 | _T_139; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_sink = muxStateEarly_0 & auto_out_0_d_bits_sink | muxStateEarly_1 & auto_out_1_d_bits_sink
+     | muxStateEarly_5 & auto_out_5_d_bits_sink | muxStateEarly_6 & auto_out_6_d_bits_sink; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_denied = muxStateEarly_0 & auto_out_0_d_bits_denied | muxStateEarly_1 &
+    auto_out_1_d_bits_denied | muxStateEarly_5 & auto_out_5_d_bits_denied | muxStateEarly_6 & auto_out_6_d_bits_denied; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_corrupt = muxStateEarly_0 & auto_out_0_d_bits_corrupt | muxStateEarly_1 &
+    auto_out_1_d_bits_corrupt | muxStateEarly_5 & auto_out_5_d_bits_corrupt | muxStateEarly_6 &
+    auto_out_6_d_bits_corrupt; // @[Mux.scala 27:73]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 10'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      beatsLeft <= initBeats;
+    end else begin
+      beatsLeft <= _beatsLeft_T_4;
+    end
+    if (reset) begin // @[Arbiter.scala 23:23]
+      readys_mask <= 8'hff; // @[Arbiter.scala 23:23]
+    end else if (latch & |readys_valid) begin // @[Arbiter.scala 27:32]
+      readys_mask <= _readys_mask_T_9; // @[Arbiter.scala 28:12]
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_0 <= earlyWinner_0;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_1 <= earlyWinner_1;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_2 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_2 <= earlyWinner_2;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_3 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_3 <= earlyWinner_3;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_4 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_4 <= earlyWinner_4;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_5 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_5 <= earlyWinner_5;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_6 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_6 <= earlyWinner_6;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_7 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_7 <= earlyWinner_7;
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~((~earlyWinner_0 | ~earlyWinner_1) & (~prefixOR_2 | ~earlyWinner_2) & (~prefixOR_3 | ~earlyWinner_3) & (~
+          prefixOR_4 | ~earlyWinner_4) & (~prefixOR_5 | ~earlyWinner_5) & (~prefixOR_6 | ~earlyWinner_6) & (~prefixOR_7
+           | ~earlyWinner_7)) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~((~earlyWinner_0 | ~earlyWinner_1) & (~prefixOR_2 | ~earlyWinner_2) & (~prefixOR_3 | ~
+          earlyWinner_3) & (~prefixOR_4 | ~earlyWinner_4) & (~prefixOR_5 | ~earlyWinner_5) & (~prefixOR_6 | ~
+          earlyWinner_6) & (~prefixOR_7 | ~earlyWinner_7))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(auto_out_0_d_valid | auto_out_1_d_valid | auto_out_2_d_valid | auto_out_3_d_valid | auto_out_4_d_valid
+           | auto_out_5_d_valid | auto_out_6_d_valid | auto_out_7_d_valid) | _prefixOR_T) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(~(auto_out_0_d_valid | auto_out_1_d_valid | auto_out_2_d_valid | auto_out_3_d_valid |
+          auto_out_4_d_valid | auto_out_5_d_valid | auto_out_6_d_valid | auto_out_7_d_valid) | _prefixOR_T)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_41 | _T_40) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(_T_41 | _T_40)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  beatsLeft = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  readys_mask = _RAND_1[7:0];
+  _RAND_2 = {1{`RANDOM}};
+  state_0 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  state_1 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  state_2 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  state_3 = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  state_4 = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  state_5 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  state_6 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  state_7 = _RAND_9[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_26(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{18'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [30:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [30:0] _T_48 = $signed(_T_7) & -31'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h3000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h2000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h8000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'hc000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_85 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_86 = {1'b0,$signed(_T_85)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_88 = $signed(_T_86) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_89 = $signed(_T_88) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_90 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_91 = {1'b0,$signed(_T_90)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_93 = $signed(_T_91) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_94 = $signed(_T_93) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_95 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_96 = {1'b0,$signed(_T_95)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_98 = $signed(_T_96) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_99 = $signed(_T_98) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_100 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_101 = {1'b0,$signed(_T_100)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_103 = $signed(_T_101) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_104 = $signed(_T_103) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_105 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_106 = {1'b0,$signed(_T_105)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_108 = $signed(_T_106) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_109 = $signed(_T_108) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_110 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_111 = {1'b0,$signed(_T_110)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_113 = $signed(_T_111) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_114 = $signed(_T_113) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_127 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109
+     | _T_114; // @[Parameters.scala 671:42]
+  wire  _T_137 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_138 = _source_ok_T & _T_137; // @[Mux.scala 27:73]
+  wire  _T_230 = _T_35 & _T_127; // @[Parameters.scala 670:56]
+  wire  _T_232 = _T_138 & _T_230; // @[Monitor.scala 83:78]
+  wire  _T_246 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_250 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_251 = _T_250 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_255 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_476 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_489 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_512 = _T_35 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_514 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_593 = _T_49 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 |
+    _T_114; // @[Parameters.scala 671:42]
+  wire  _T_594 = _T_514 & _T_593; // @[Parameters.scala 670:56]
+  wire  _T_596 = _T_512 | _T_594; // @[Parameters.scala 672:30]
+  wire  _T_606 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_610 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_618 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_707 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_708 = _T_514 & _T_707; // @[Parameters.scala 670:56]
+  wire  _T_723 = _T_512 | _T_708; // @[Parameters.scala 672:30]
+  wire  _T_725 = _T_42 & _T_723; // @[Monitor.scala 115:71]
+  wire  _T_743 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_864 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_865 = io_in_a_bits_mask & _T_864; // @[Monitor.scala 127:31]
+  wire  _T_866 = _T_865 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_870 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_882 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_931 = _T_54 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_932 = _T_882 & _T_931; // @[Parameters.scala 670:56]
+  wire  _T_972 = _T_42 & _T_932; // @[Monitor.scala 131:74]
+  wire  _T_982 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_990 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1102 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1110 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1212 = _T_42 & _T_512; // @[Monitor.scala 147:68]
+  wire  _T_1222 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1234 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_1238 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1242 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1246 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1250 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1254 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1258 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1269 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1273 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1286 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1306 = _T_1254 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1315 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1332 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1350 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1380 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1381 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1385 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1389 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1393 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1397 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1404 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1405 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1409 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1413 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1417 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1421 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1425 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_75 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1431 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1434 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_77}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1436 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1438 = ~_T_1436[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1442 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1444 = ~_T_1238; // @[Monitor.scala 671:74]
+  wire  _T_1445 = io_in_d_valid & d_first_1 & ~_T_1238; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1238 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1444 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1444 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_24 = _d_first_T & d_first_1 & _T_1444 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1431 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1455 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1457 = _T_1455[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1462 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1463 = io_in_d_bits_opcode == _GEN_32 | _T_1462; // @[Monitor.scala 685:77]
+  wire  _T_1467 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1474 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1475 = io_in_d_bits_opcode == _GEN_48 | _T_1474; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_79 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1479 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1489 = _T_1442 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1444; // @[Monitor.scala 694:116]
+  wire  _T_1491 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_1498 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_20[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_24[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1507 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1533 = io_in_d_valid & d_first_2 & _T_1238; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_1238 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_69 = _d_first_T & d_first_2 & _T_1238 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire [2:0] _T_1541 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_1551 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] d_sizes_clr_1 = _GEN_69[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1576 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_232 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_232) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_246 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_251 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_232 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_232) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_246 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_476 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_476) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_251 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_596 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_596) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_725 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_725) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_725 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_725) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_972 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_982 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_982) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_972 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1102 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_1102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1212 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_1212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1222 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_1222) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1234 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1234) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1254 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1254) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1306 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1306 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~_T_1306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1381 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1381) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1385 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1389 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1389) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1393 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1393) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1397 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1405 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1409 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1409) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1413 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1413) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1417 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1421 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1425 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1438 & (_T_1434 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1434 & ~reset & ~_T_1438) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1457 & (_T_1445 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & _T_2 & ~_T_1457) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1463 & (_T_1445 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & same_cycle_resp & _T_2 & ~_T_1463) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1467 & (_T_1445 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & same_cycle_resp & _T_2 & ~_T_1467) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1475 & (_T_1445 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & ~same_cycle_resp & _T_2 & ~_T_1475) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1479 & (_T_1445 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & ~same_cycle_resp & _T_2 & ~_T_1479) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1491 & (_T_1489 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1489 & _T_2 & ~_T_1491) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1498 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_1498) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1507 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1507) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1541[0] & (_T_1533 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1533 & _T_2 & ~_T_1541[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1551 & (_T_1533 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1533 & _T_2 & ~_T_1551) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1576 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:55:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[23:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[9:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[9:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[23:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[9:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_5(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [3:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [29:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input  [31:0] io_enq_bits_data,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [3:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [29:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [29:0] ram_address [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [29:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [29:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_mask [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = io_enq_bits_corrupt;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[29:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_7[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_8 = {1{`RANDOM}};
+  value = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  value_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  maybe_full = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_6(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [1:0]  io_enq_bits_param,
+  input  [3:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input         io_enq_bits_sink,
+  input         io_enq_bits_denied,
+  input  [31:0] io_enq_bits_data,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [1:0]  io_deq_bits_param,
+  output [3:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output        io_deq_bits_sink,
+  output        io_deq_bits_denied,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_sink [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_denied [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_sink_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_sink_io_deq_bits_MPORT_addr = value_1;
+  assign ram_sink_io_deq_bits_MPORT_data = ram_sink[ram_sink_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_sink_MPORT_data = io_enq_bits_sink;
+  assign ram_sink_MPORT_addr = value;
+  assign ram_sink_MPORT_mask = 1'h1;
+  assign ram_sink_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_denied_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_denied_io_deq_bits_MPORT_addr = value_1;
+  assign ram_denied_io_deq_bits_MPORT_data = ram_denied[ram_denied_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_denied_MPORT_data = io_enq_bits_denied;
+  assign ram_denied_MPORT_addr = value;
+  assign ram_denied_MPORT_mask = 1'h1;
+  assign ram_denied_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = io_enq_bits_corrupt;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_sink = ram_sink_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_denied = ram_denied_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_sink_MPORT_en & ram_sink_MPORT_mask) begin
+      ram_sink[ram_sink_MPORT_addr] <= ram_sink_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_denied_MPORT_en & ram_denied_MPORT_mask) begin
+      ram_denied[ram_denied_MPORT_addr] <= ram_denied_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_sink[initvar] = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_denied[initvar] = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_7[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_8 = {1{`RANDOM}};
+  value = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  value_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  maybe_full = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer_4(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [29:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [29:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleIn_0_d_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleIn_0_d_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  TLMonitor_26 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  Queue_5 bundleOut_0_a_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_a_q_clock),
+    .reset(bundleOut_0_a_q_reset),
+    .io_enq_ready(bundleOut_0_a_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_q_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_q_io_enq_bits_mask),
+    .io_enq_bits_data(bundleOut_0_a_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleOut_0_a_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleOut_0_a_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_q_io_deq_bits_mask),
+    .io_deq_bits_data(bundleOut_0_a_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_a_q_io_deq_bits_corrupt)
+  );
+  Queue_6 bundleIn_0_d_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleIn_0_d_q_clock),
+    .reset(bundleIn_0_d_q_reset),
+    .io_enq_ready(bundleIn_0_d_q_io_enq_ready),
+    .io_enq_valid(bundleIn_0_d_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleIn_0_d_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleIn_0_d_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleIn_0_d_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_q_io_enq_bits_source),
+    .io_enq_bits_sink(bundleIn_0_d_q_io_enq_bits_sink),
+    .io_enq_bits_denied(bundleIn_0_d_q_io_enq_bits_denied),
+    .io_enq_bits_data(bundleIn_0_d_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleIn_0_d_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleIn_0_d_q_io_deq_ready),
+    .io_deq_valid(bundleIn_0_d_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_d_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_d_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_d_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_d_q_io_deq_bits_source),
+    .io_deq_bits_sink(bundleIn_0_d_q_io_deq_bits_sink),
+    .io_deq_bits_denied(bundleIn_0_d_q_io_deq_bits_denied),
+    .io_deq_bits_data(bundleIn_0_d_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleIn_0_d_q_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_data = bundleIn_0_d_q_io_deq_bits_data; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_out_a_valid = bundleOut_0_a_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_q_io_deq_bits_mask; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_data = bundleOut_0_a_q_io_deq_bits_data; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_d_ready = bundleIn_0_d_q_io_enq_ready; // @[Nodes.scala 1207:84 Decoupled.scala 365:17]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign bundleOut_0_a_q_clock = clock;
+  assign bundleOut_0_a_q_reset = reset;
+  assign bundleOut_0_a_q_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_clock = clock;
+  assign bundleIn_0_d_q_reset = reset;
+  assign bundleIn_0_d_q_io_enq_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_deq_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_27(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [29:0] _GEN_71 = {{18'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [29:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 30'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [30:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [30:0] _T_48 = $signed(_T_7) & -31'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_50 = io_in_a_bits_address ^ 30'h3000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_53 = $signed(_T_51) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_55 = io_in_a_bits_address ^ 30'h10000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_58 = $signed(_T_56) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_60 = io_in_a_bits_address ^ 30'h2000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_63 = $signed(_T_61) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_65 = io_in_a_bits_address ^ 30'h8000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_68 = $signed(_T_66) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_70 = io_in_a_bits_address ^ 30'hc000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_73 = $signed(_T_71) & -31'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_75 = io_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_78 = $signed(_T_76) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_80 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_83 = $signed(_T_81) & -31'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_85 = io_in_a_bits_address ^ 30'h10016000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_86 = {1'b0,$signed(_T_85)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_88 = $signed(_T_86) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_89 = $signed(_T_88) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_90 = io_in_a_bits_address ^ 30'h10023000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_91 = {1'b0,$signed(_T_90)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_93 = $signed(_T_91) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_94 = $signed(_T_93) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_95 = io_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_96 = {1'b0,$signed(_T_95)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_98 = $signed(_T_96) & -31'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_99 = $signed(_T_98) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_100 = io_in_a_bits_address ^ 30'h10026000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_101 = {1'b0,$signed(_T_100)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_103 = $signed(_T_101) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_104 = $signed(_T_103) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_105 = io_in_a_bits_address ^ 30'h10043000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_106 = {1'b0,$signed(_T_105)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_108 = $signed(_T_106) & -31'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_109 = $signed(_T_108) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_110 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_111 = {1'b0,$signed(_T_110)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_113 = $signed(_T_111) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_114 = $signed(_T_113) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_127 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109
+     | _T_114; // @[Parameters.scala 671:42]
+  wire  _T_137 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_138 = _source_ok_T & _T_137; // @[Mux.scala 27:73]
+  wire  _T_230 = _T_35 & _T_127; // @[Parameters.scala 670:56]
+  wire  _T_232 = _T_138 & _T_230; // @[Monitor.scala 83:78]
+  wire  _T_246 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_250 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_251 = _T_250 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_255 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_476 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_489 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_512 = _T_35 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_514 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_593 = _T_49 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 |
+    _T_114; // @[Parameters.scala 671:42]
+  wire  _T_594 = _T_514 & _T_593; // @[Parameters.scala 670:56]
+  wire  _T_596 = _T_512 | _T_594; // @[Parameters.scala 672:30]
+  wire  _T_606 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_610 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_618 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_707 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_708 = _T_514 & _T_707; // @[Parameters.scala 670:56]
+  wire  _T_723 = _T_512 | _T_708; // @[Parameters.scala 672:30]
+  wire  _T_725 = _T_42 & _T_723; // @[Monitor.scala 115:71]
+  wire  _T_743 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_864 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_865 = io_in_a_bits_mask & _T_864; // @[Monitor.scala 127:31]
+  wire  _T_866 = _T_865 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_870 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_882 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_955 = _T_49 | _T_54 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_956 = _T_882 & _T_955; // @[Parameters.scala 670:56]
+  wire  _T_972 = _T_42 & _T_956; // @[Monitor.scala 131:74]
+  wire  _T_982 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_990 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1102 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1110 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1212 = _T_42 & _T_512; // @[Monitor.scala 147:68]
+  wire  _T_1222 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1234 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_1238 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1242 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1246 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1250 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1254 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1258 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1269 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1273 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1286 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1306 = _T_1254 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1315 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1332 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1350 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1380 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1381 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1385 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1389 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1393 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1397 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1404 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1405 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1409 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1413 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1417 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1421 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1425 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_75 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1431 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1434 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_77}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1436 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1438 = ~_T_1436[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1442 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1444 = ~_T_1238; // @[Monitor.scala 671:74]
+  wire  _T_1445 = io_in_d_valid & d_first_1 & ~_T_1238; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1238 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_1444 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_1444 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_24 = _d_first_T & d_first_1 & _T_1444 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1431 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1455 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1457 = _T_1455[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1462 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1463 = io_in_d_bits_opcode == _GEN_32 | _T_1462; // @[Monitor.scala 685:77]
+  wire  _T_1467 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1474 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1475 = io_in_d_bits_opcode == _GEN_48 | _T_1474; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_79 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1479 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1489 = _T_1442 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1444; // @[Monitor.scala 694:116]
+  wire  _T_1491 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_1498 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_20[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_24[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1507 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1533 = io_in_d_valid & d_first_2 & _T_1238; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_1238 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_69 = _d_first_T & d_first_2 & _T_1238 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire [2:0] _T_1541 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_1551 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] d_sizes_clr_1 = _GEN_69[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1576 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_232 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_232) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_246 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_251 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_232 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_232) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_246 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_476 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_476) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_251 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_259 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_259 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_596 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_596) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_489 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_489 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_725 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_725) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_618 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_618 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_725 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_725) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_866 & (io_in_a_valid & _T_743 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_743 & ~reset & ~_T_866) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_972 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_982 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_982) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_870 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_870 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_972 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1102 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_1102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_990 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_990 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1212 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_1212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1222 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_1222) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_255 & (io_in_a_valid & _T_1110 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1110 & ~reset & ~_T_255) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1234 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1234) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1254 & (io_in_d_valid & _T_1238 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1238 & _T_2 & ~_T_1254) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1258 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1258 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1242 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1242) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1306 & (io_in_d_valid & _T_1286 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1286 & _T_2 & ~_T_1306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1315 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1315 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1306 & (io_in_d_valid & _T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1332 & _T_2 & ~_T_1306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1246 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~_T_1246) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1250 & (io_in_d_valid & _T_1350 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1350 & _T_2 & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1381 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1381) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1385 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1389 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1389) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1393 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1393) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1397 & (_T_1380 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1380 & ~reset & ~_T_1397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1405 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1409 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1409) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1413 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1413) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1417 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1421 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1425 & (_T_1404 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1404 & _T_2 & ~_T_1425) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1438 & (_T_1434 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1434 & ~reset & ~_T_1438) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1457 & (_T_1445 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & _T_2 & ~_T_1457) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1463 & (_T_1445 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & same_cycle_resp & _T_2 & ~_T_1463) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1467 & (_T_1445 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & same_cycle_resp & _T_2 & ~_T_1467) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1475 & (_T_1445 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & ~same_cycle_resp & _T_2 & ~_T_1475) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1479 & (_T_1445 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1445 & ~same_cycle_resp & _T_2 & ~_T_1479) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1491 & (_T_1489 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1489 & _T_2 & ~_T_1491) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1498 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_1498) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1507 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1507) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1541[0] & (_T_1533 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1533 & _T_2 & ~_T_1541[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1551 & (_T_1533 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1533 & _T_2 & ~_T_1551) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1576 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at PeripheryBus.scala:58:7)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[23:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[9:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[9:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[23:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[9:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLAtomicAutomata_1(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  reg [1:0] cam_s_0_state; // @[AtomicAutomata.scala 76:28]
+  reg [2:0] cam_a_0_bits_opcode; // @[AtomicAutomata.scala 77:24]
+  reg [2:0] cam_a_0_bits_param; // @[AtomicAutomata.scala 77:24]
+  reg [3:0] cam_a_0_bits_size; // @[AtomicAutomata.scala 77:24]
+  reg [1:0] cam_a_0_bits_source; // @[AtomicAutomata.scala 77:24]
+  reg [29:0] cam_a_0_bits_address; // @[AtomicAutomata.scala 77:24]
+  reg [3:0] cam_a_0_bits_mask; // @[AtomicAutomata.scala 77:24]
+  reg [31:0] cam_a_0_bits_data; // @[AtomicAutomata.scala 77:24]
+  reg  cam_a_0_bits_corrupt; // @[AtomicAutomata.scala 77:24]
+  reg [3:0] cam_a_0_lut; // @[AtomicAutomata.scala 77:24]
+  reg [31:0] cam_d_0_data; // @[AtomicAutomata.scala 78:24]
+  reg  cam_d_0_denied; // @[AtomicAutomata.scala 78:24]
+  reg  cam_d_0_corrupt; // @[AtomicAutomata.scala 78:24]
+  wire  cam_free_0 = cam_s_0_state == 2'h0; // @[AtomicAutomata.scala 80:44]
+  wire  cam_amo_0 = cam_s_0_state == 2'h2; // @[AtomicAutomata.scala 81:44]
+  wire  cam_abusy_0 = cam_s_0_state == 2'h3 | cam_amo_0; // @[AtomicAutomata.scala 82:57]
+  wire  cam_dmatch_0 = cam_s_0_state != 2'h0; // @[AtomicAutomata.scala 83:49]
+  wire  _a_canLogical_T_1 = auto_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire [29:0] _a_canLogical_T_4 = auto_in_a_bits_address ^ 30'h2000; // @[Parameters.scala 137:31]
+  wire [30:0] _a_canLogical_T_5 = {1'b0,$signed(_a_canLogical_T_4)}; // @[Parameters.scala 137:49]
+  wire [30:0] _a_canLogical_T_7 = $signed(_a_canLogical_T_5) & 31'sh3e03e000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_8 = $signed(_a_canLogical_T_7) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _a_canLogical_T_9 = auto_in_a_bits_address ^ 30'h10002000; // @[Parameters.scala 137:31]
+  wire [30:0] _a_canLogical_T_10 = {1'b0,$signed(_a_canLogical_T_9)}; // @[Parameters.scala 137:49]
+  wire [30:0] _a_canLogical_T_12 = $signed(_a_canLogical_T_10) & 31'sh3e00e000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_13 = $signed(_a_canLogical_T_12) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _a_canLogical_T_14 = auto_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _a_canLogical_T_15 = {1'b0,$signed(_a_canLogical_T_14)}; // @[Parameters.scala 137:49]
+  wire [30:0] _a_canLogical_T_17 = $signed(_a_canLogical_T_15) & 31'sh3e03c000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_18 = $signed(_a_canLogical_T_17) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _a_canLogical_T_19 = auto_in_a_bits_address ^ 30'h10024000; // @[Parameters.scala 137:31]
+  wire [30:0] _a_canLogical_T_20 = {1'b0,$signed(_a_canLogical_T_19)}; // @[Parameters.scala 137:49]
+  wire [30:0] _a_canLogical_T_22 = $signed(_a_canLogical_T_20) & 31'sh3e03c000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_23 = $signed(_a_canLogical_T_22) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _a_canLogical_T_24 = auto_in_a_bits_address ^ 30'h10034000; // @[Parameters.scala 137:31]
+  wire [30:0] _a_canLogical_T_25 = {1'b0,$signed(_a_canLogical_T_24)}; // @[Parameters.scala 137:49]
+  wire [30:0] _a_canLogical_T_27 = $signed(_a_canLogical_T_25) & 31'sh3e03e000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_28 = $signed(_a_canLogical_T_27) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _a_canLogical_T_32 = _a_canLogical_T_8 | _a_canLogical_T_13 | _a_canLogical_T_18 | _a_canLogical_T_23 |
+    _a_canLogical_T_28; // @[Parameters.scala 671:42]
+  wire  a_canLogical = _a_canLogical_T_1 & _a_canLogical_T_32; // @[Parameters.scala 670:56]
+  wire  a_isLogical = auto_in_a_bits_opcode == 3'h3; // @[AtomicAutomata.scala 90:47]
+  wire  a_isArithmetic = auto_in_a_bits_opcode == 3'h2; // @[AtomicAutomata.scala 91:47]
+  wire  _a_isSupported_T = a_isArithmetic ? a_canLogical : 1'h1; // @[AtomicAutomata.scala 92:63]
+  wire  a_isSupported = a_isLogical ? a_canLogical : _a_isSupported_T; // @[AtomicAutomata.scala 92:32]
+  wire [1:0] indexes_0 = {cam_a_0_bits_data[0],cam_d_0_data[0]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_1 = {cam_a_0_bits_data[1],cam_d_0_data[1]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_2 = {cam_a_0_bits_data[2],cam_d_0_data[2]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_3 = {cam_a_0_bits_data[3],cam_d_0_data[3]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_4 = {cam_a_0_bits_data[4],cam_d_0_data[4]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_5 = {cam_a_0_bits_data[5],cam_d_0_data[5]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_6 = {cam_a_0_bits_data[6],cam_d_0_data[6]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_7 = {cam_a_0_bits_data[7],cam_d_0_data[7]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_8 = {cam_a_0_bits_data[8],cam_d_0_data[8]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_9 = {cam_a_0_bits_data[9],cam_d_0_data[9]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_10 = {cam_a_0_bits_data[10],cam_d_0_data[10]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_11 = {cam_a_0_bits_data[11],cam_d_0_data[11]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_12 = {cam_a_0_bits_data[12],cam_d_0_data[12]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_13 = {cam_a_0_bits_data[13],cam_d_0_data[13]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_14 = {cam_a_0_bits_data[14],cam_d_0_data[14]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_15 = {cam_a_0_bits_data[15],cam_d_0_data[15]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_16 = {cam_a_0_bits_data[16],cam_d_0_data[16]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_17 = {cam_a_0_bits_data[17],cam_d_0_data[17]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_18 = {cam_a_0_bits_data[18],cam_d_0_data[18]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_19 = {cam_a_0_bits_data[19],cam_d_0_data[19]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_20 = {cam_a_0_bits_data[20],cam_d_0_data[20]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_21 = {cam_a_0_bits_data[21],cam_d_0_data[21]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_22 = {cam_a_0_bits_data[22],cam_d_0_data[22]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_23 = {cam_a_0_bits_data[23],cam_d_0_data[23]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_24 = {cam_a_0_bits_data[24],cam_d_0_data[24]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_25 = {cam_a_0_bits_data[25],cam_d_0_data[25]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_26 = {cam_a_0_bits_data[26],cam_d_0_data[26]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_27 = {cam_a_0_bits_data[27],cam_d_0_data[27]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_28 = {cam_a_0_bits_data[28],cam_d_0_data[28]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_29 = {cam_a_0_bits_data[29],cam_d_0_data[29]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_30 = {cam_a_0_bits_data[30],cam_d_0_data[30]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_31 = {cam_a_0_bits_data[31],cam_d_0_data[31]}; // @[Cat.scala 31:58]
+  wire [3:0] _logic_out_T = cam_a_0_lut >> indexes_0; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_2 = cam_a_0_lut >> indexes_1; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_4 = cam_a_0_lut >> indexes_2; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_6 = cam_a_0_lut >> indexes_3; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_8 = cam_a_0_lut >> indexes_4; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_10 = cam_a_0_lut >> indexes_5; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_12 = cam_a_0_lut >> indexes_6; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_14 = cam_a_0_lut >> indexes_7; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_16 = cam_a_0_lut >> indexes_8; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_18 = cam_a_0_lut >> indexes_9; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_20 = cam_a_0_lut >> indexes_10; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_22 = cam_a_0_lut >> indexes_11; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_24 = cam_a_0_lut >> indexes_12; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_26 = cam_a_0_lut >> indexes_13; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_28 = cam_a_0_lut >> indexes_14; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_30 = cam_a_0_lut >> indexes_15; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_32 = cam_a_0_lut >> indexes_16; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_34 = cam_a_0_lut >> indexes_17; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_36 = cam_a_0_lut >> indexes_18; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_38 = cam_a_0_lut >> indexes_19; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_40 = cam_a_0_lut >> indexes_20; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_42 = cam_a_0_lut >> indexes_21; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_44 = cam_a_0_lut >> indexes_22; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_46 = cam_a_0_lut >> indexes_23; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_48 = cam_a_0_lut >> indexes_24; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_50 = cam_a_0_lut >> indexes_25; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_52 = cam_a_0_lut >> indexes_26; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_54 = cam_a_0_lut >> indexes_27; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_56 = cam_a_0_lut >> indexes_28; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_58 = cam_a_0_lut >> indexes_29; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_60 = cam_a_0_lut >> indexes_30; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_62 = cam_a_0_lut >> indexes_31; // @[AtomicAutomata.scala 114:57]
+  wire [7:0] logic_out_lo_lo = {_logic_out_T_14[0],_logic_out_T_12[0],_logic_out_T_10[0],_logic_out_T_8[0],
+    _logic_out_T_6[0],_logic_out_T_4[0],_logic_out_T_2[0],_logic_out_T[0]}; // @[Cat.scala 31:58]
+  wire [15:0] logic_out_lo = {_logic_out_T_30[0],_logic_out_T_28[0],_logic_out_T_26[0],_logic_out_T_24[0],
+    _logic_out_T_22[0],_logic_out_T_20[0],_logic_out_T_18[0],_logic_out_T_16[0],logic_out_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] logic_out_hi_lo = {_logic_out_T_46[0],_logic_out_T_44[0],_logic_out_T_42[0],_logic_out_T_40[0],
+    _logic_out_T_38[0],_logic_out_T_36[0],_logic_out_T_34[0],_logic_out_T_32[0]}; // @[Cat.scala 31:58]
+  wire [31:0] logic_out = {_logic_out_T_62[0],_logic_out_T_60[0],_logic_out_T_58[0],_logic_out_T_56[0],_logic_out_T_54[0
+    ],_logic_out_T_52[0],_logic_out_T_50[0],_logic_out_T_48[0],logic_out_hi_lo,logic_out_lo}; // @[Cat.scala 31:58]
+  wire  unsigned_ = cam_a_0_bits_param[1]; // @[AtomicAutomata.scala 117:42]
+  wire  take_max = cam_a_0_bits_param[0]; // @[AtomicAutomata.scala 118:42]
+  wire  adder = cam_a_0_bits_param[2]; // @[AtomicAutomata.scala 119:39]
+  wire [3:0] _signSel_T = ~cam_a_0_bits_mask; // @[AtomicAutomata.scala 121:25]
+  wire [3:0] _GEN_39 = {{1'd0}, cam_a_0_bits_mask[3:1]}; // @[AtomicAutomata.scala 121:31]
+  wire [3:0] _signSel_T_2 = _signSel_T | _GEN_39; // @[AtomicAutomata.scala 121:31]
+  wire [3:0] signSel = ~_signSel_T_2; // @[AtomicAutomata.scala 121:23]
+  wire [3:0] signbits_a = {cam_a_0_bits_data[31],cam_a_0_bits_data[23],cam_a_0_bits_data[15],cam_a_0_bits_data[7]}; // @[Cat.scala 31:58]
+  wire [3:0] signbits_d = {cam_d_0_data[31],cam_d_0_data[23],cam_d_0_data[15],cam_d_0_data[7]}; // @[Cat.scala 31:58]
+  wire [3:0] _signbit_a_T = signbits_a & signSel; // @[AtomicAutomata.scala 125:38]
+  wire [4:0] _signbit_a_T_1 = {_signbit_a_T, 1'h0}; // @[AtomicAutomata.scala 125:49]
+  wire [3:0] signbit_a = _signbit_a_T_1[3:0]; // @[AtomicAutomata.scala 125:54]
+  wire [3:0] _signbit_d_T = signbits_d & signSel; // @[AtomicAutomata.scala 126:38]
+  wire [4:0] _signbit_d_T_1 = {_signbit_d_T, 1'h0}; // @[AtomicAutomata.scala 126:49]
+  wire [3:0] signbit_d = _signbit_d_T_1[3:0]; // @[AtomicAutomata.scala 126:54]
+  wire [4:0] _signext_a_T = {signbit_a, 1'h0}; // @[package.scala 244:48]
+  wire [3:0] _signext_a_T_2 = signbit_a | _signext_a_T[3:0]; // @[package.scala 244:43]
+  wire [5:0] _signext_a_T_3 = {_signext_a_T_2, 2'h0}; // @[package.scala 244:48]
+  wire [3:0] _signext_a_T_5 = _signext_a_T_2 | _signext_a_T_3[3:0]; // @[package.scala 244:43]
+  wire [7:0] _signext_a_T_12 = _signext_a_T_5[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_14 = _signext_a_T_5[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_16 = _signext_a_T_5[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_18 = _signext_a_T_5[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] signext_a = {_signext_a_T_18,_signext_a_T_16,_signext_a_T_14,_signext_a_T_12}; // @[Cat.scala 31:58]
+  wire [4:0] _signext_d_T = {signbit_d, 1'h0}; // @[package.scala 244:48]
+  wire [3:0] _signext_d_T_2 = signbit_d | _signext_d_T[3:0]; // @[package.scala 244:43]
+  wire [5:0] _signext_d_T_3 = {_signext_d_T_2, 2'h0}; // @[package.scala 244:48]
+  wire [3:0] _signext_d_T_5 = _signext_d_T_2 | _signext_d_T_3[3:0]; // @[package.scala 244:43]
+  wire [7:0] _signext_d_T_12 = _signext_d_T_5[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_14 = _signext_d_T_5[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_16 = _signext_d_T_5[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_18 = _signext_d_T_5[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] signext_d = {_signext_d_T_18,_signext_d_T_16,_signext_d_T_14,_signext_d_T_12}; // @[Cat.scala 31:58]
+  wire [7:0] _wide_mask_T_5 = cam_a_0_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_7 = cam_a_0_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_9 = cam_a_0_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_11 = cam_a_0_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] wide_mask = {_wide_mask_T_11,_wide_mask_T_9,_wide_mask_T_7,_wide_mask_T_5}; // @[Cat.scala 31:58]
+  wire [31:0] _a_a_ext_T = cam_a_0_bits_data & wide_mask; // @[AtomicAutomata.scala 131:28]
+  wire [31:0] a_a_ext = _a_a_ext_T | signext_a; // @[AtomicAutomata.scala 131:41]
+  wire [31:0] _a_d_ext_T = cam_d_0_data & wide_mask; // @[AtomicAutomata.scala 132:28]
+  wire [31:0] a_d_ext = _a_d_ext_T | signext_d; // @[AtomicAutomata.scala 132:41]
+  wire [31:0] _a_d_inv_T = ~a_d_ext; // @[AtomicAutomata.scala 133:43]
+  wire [31:0] a_d_inv = adder ? a_d_ext : _a_d_inv_T; // @[AtomicAutomata.scala 133:26]
+  wire [31:0] adder_out = a_a_ext + a_d_inv; // @[AtomicAutomata.scala 134:33]
+  wire  a_bigger_uneq = unsigned_ == a_a_ext[31]; // @[AtomicAutomata.scala 136:38]
+  wire  a_bigger = a_a_ext[31] == a_d_ext[31] ? ~adder_out[31] : a_bigger_uneq; // @[AtomicAutomata.scala 137:27]
+  wire  pick_a = take_max == a_bigger; // @[AtomicAutomata.scala 138:31]
+  wire [31:0] _arith_out_T = pick_a ? cam_a_0_bits_data : cam_d_0_data; // @[AtomicAutomata.scala 139:50]
+  wire [31:0] arith_out = adder ? adder_out : _arith_out_T; // @[AtomicAutomata.scala 139:28]
+  wire [31:0] amo_data = cam_a_0_bits_opcode[0] ? logic_out : arith_out; // @[AtomicAutomata.scala 145:14]
+  wire  a_allow = ~cam_abusy_0 & (a_isSupported | cam_free_0); // @[AtomicAutomata.scala 149:35]
+  reg [9:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 10'h0; // @[Arbiter.scala 88:28]
+  wire  source_i_valid = auto_in_a_valid & a_allow; // @[AtomicAutomata.scala 151:38]
+  wire [1:0] _readys_T = {source_i_valid,cam_amo_0}; // @[Cat.scala 31:58]
+  wire [2:0] _readys_T_1 = {_readys_T, 1'h0}; // @[package.scala 244:48]
+  wire [1:0] _readys_T_3 = _readys_T | _readys_T_1[1:0]; // @[package.scala 244:43]
+  wire [2:0] _readys_T_5 = {_readys_T_3, 1'h0}; // @[Arbiter.scala 16:78]
+  wire [1:0] _readys_T_7 = ~_readys_T_5[1:0]; // @[Arbiter.scala 16:61]
+  wire  readys_1 = _readys_T_7[1]; // @[Arbiter.scala 95:86]
+  reg  state_1; // @[Arbiter.scala 116:26]
+  wire  allowed_1 = idle ? readys_1 : state_1; // @[Arbiter.scala 121:24]
+  wire  out_1_ready = auto_out_a_ready & allowed_1; // @[Arbiter.scala 123:31]
+  wire  _T = ~a_isSupported; // @[AtomicAutomata.scala 153:15]
+  wire [2:0] source_i_bits_opcode = ~a_isSupported ? 3'h4 : auto_in_a_bits_opcode; // @[AtomicAutomata.scala 152:24 153:31 154:32]
+  wire [2:0] source_i_bits_param = ~a_isSupported ? 3'h0 : auto_in_a_bits_param; // @[AtomicAutomata.scala 152:24 153:31 155:32]
+  wire  source_c_bits_a_corrupt = cam_a_0_bits_corrupt | cam_d_0_corrupt; // @[AtomicAutomata.scala 166:45]
+  wire  source_c_bits_a_mask_sizeOH_shiftAmount = cam_a_0_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _source_c_bits_a_mask_sizeOH_T_1 = 2'h1 << source_c_bits_a_mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] source_c_bits_a_mask_sizeOH = _source_c_bits_a_mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _source_c_bits_a_mask_T = cam_a_0_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  source_c_bits_a_mask_size = source_c_bits_a_mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit = cam_a_0_bits_address[1]; // @[Misc.scala 209:26]
+  wire  source_c_bits_a_mask_nbit = ~source_c_bits_a_mask_bit; // @[Misc.scala 210:20]
+  wire  source_c_bits_a_mask_acc = _source_c_bits_a_mask_T | source_c_bits_a_mask_size & source_c_bits_a_mask_nbit; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_acc_1 = _source_c_bits_a_mask_T | source_c_bits_a_mask_size & source_c_bits_a_mask_bit; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_size_1 = source_c_bits_a_mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit_1 = cam_a_0_bits_address[0]; // @[Misc.scala 209:26]
+  wire  source_c_bits_a_mask_nbit_1 = ~source_c_bits_a_mask_bit_1; // @[Misc.scala 210:20]
+  wire  source_c_bits_a_mask_eq_2 = source_c_bits_a_mask_nbit & source_c_bits_a_mask_nbit_1; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_2 = source_c_bits_a_mask_acc | source_c_bits_a_mask_size_1 & source_c_bits_a_mask_eq_2; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_3 = source_c_bits_a_mask_nbit & source_c_bits_a_mask_bit_1; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_3 = source_c_bits_a_mask_acc | source_c_bits_a_mask_size_1 & source_c_bits_a_mask_eq_3; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_4 = source_c_bits_a_mask_bit & source_c_bits_a_mask_nbit_1; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_4 = source_c_bits_a_mask_acc_1 | source_c_bits_a_mask_size_1 &
+    source_c_bits_a_mask_eq_4; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_5 = source_c_bits_a_mask_bit & source_c_bits_a_mask_bit_1; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_5 = source_c_bits_a_mask_acc_1 | source_c_bits_a_mask_size_1 &
+    source_c_bits_a_mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] source_c_bits_a_mask = {source_c_bits_a_mask_acc_5,source_c_bits_a_mask_acc_4,source_c_bits_a_mask_acc_3,
+    source_c_bits_a_mask_acc_2}; // @[Cat.scala 31:58]
+  wire [26:0] _decode_T_1 = 27'hfff << auto_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] _decode_T_3 = ~_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] decode = _decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  opdata = ~auto_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire  latch = idle & auto_out_a_ready; // @[Arbiter.scala 89:24]
+  wire  readys_0 = _readys_T_7[0]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_0 = readys_0 & cam_amo_0; // @[Arbiter.scala 97:79]
+  wire  earlyWinner_1 = readys_1 & source_i_valid; // @[Arbiter.scala 97:79]
+  wire  _prefixOR_T = earlyWinner_0 | earlyWinner_1; // @[Arbiter.scala 104:53]
+  wire  _T_10 = ~reset; // @[Arbiter.scala 105:13]
+  wire  _T_12 = cam_amo_0 | source_i_valid; // @[Arbiter.scala 107:36]
+  wire  _T_13 = ~(cam_amo_0 | source_i_valid); // @[Arbiter.scala 107:15]
+  reg  state_0; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_0 = idle ? earlyWinner_0 : state_0; // @[Arbiter.scala 117:30]
+  wire  muxStateEarly_1 = idle ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  wire  _sink_ACancel_earlyValid_T_3 = state_0 & cam_amo_0 | state_1 & source_i_valid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_earlyValid = idle ? _T_12 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_out_a_ready & sink_ACancel_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [9:0] _GEN_40 = {{9'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [9:0] _beatsLeft_T_4 = beatsLeft - _GEN_40; // @[Arbiter.scala 113:52]
+  wire  allowed_0 = idle ? readys_0 : state_0; // @[Arbiter.scala 121:24]
+  wire  out_ready = auto_out_a_ready & allowed_0; // @[Arbiter.scala 123:31]
+  wire [31:0] _T_29 = muxStateEarly_0 ? amo_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_30 = muxStateEarly_1 ? auto_in_a_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_32 = muxStateEarly_0 ? source_c_bits_a_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_33 = muxStateEarly_1 ? auto_in_a_bits_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [29:0] _T_35 = muxStateEarly_0 ? cam_a_0_bits_address : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _T_36 = muxStateEarly_1 ? auto_in_a_bits_address : 30'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_38 = muxStateEarly_0 ? cam_a_0_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_39 = muxStateEarly_1 ? auto_in_a_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_41 = muxStateEarly_0 ? cam_a_0_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_42 = muxStateEarly_1 ? auto_in_a_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire  _T_50 = out_1_ready & source_i_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] _GEN_41 = {{1'd0}, auto_in_a_bits_param[1:0]}; // @[Mux.scala 81:61]
+  wire [3:0] _cam_a_0_lut_T_2 = 3'h1 == _GEN_41 ? 4'he : 4'h8; // @[Mux.scala 81:58]
+  wire [1:0] _GEN_12 = cam_free_0 ? 2'h3 : cam_s_0_state; // @[AtomicAutomata.scala 187:23 188:23 76:28]
+  wire [1:0] _GEN_23 = _T_50 & _T ? _GEN_12 : cam_s_0_state; // @[AtomicAutomata.scala 174:50 76:28]
+  wire  _T_53 = out_ready & cam_amo_0; // @[Decoupled.scala 50:35]
+  wire [1:0] _GEN_24 = cam_amo_0 ? 2'h1 : _GEN_23; // @[AtomicAutomata.scala 196:23 197:23]
+  wire [1:0] _GEN_25 = _T_53 ? _GEN_24 : _GEN_23; // @[AtomicAutomata.scala 194:32]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  wire  d_ackd = auto_out_d_bits_opcode == 3'h1; // @[AtomicAutomata.scala 213:40]
+  wire  d_cam_sel_raw_0 = cam_a_0_bits_source == auto_out_d_bits_source; // @[AtomicAutomata.scala 204:53]
+  wire  d_cam_sel_match_0 = d_cam_sel_raw_0 & cam_dmatch_0; // @[AtomicAutomata.scala 205:83]
+  wire  d_drop = d_first & d_ackd & d_cam_sel_match_0; // @[AtomicAutomata.scala 232:40]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | d_drop; // @[AtomicAutomata.scala 236:35]
+  wire  _d_first_T = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_ack = auto_out_d_bits_opcode == 3'h0; // @[AtomicAutomata.scala 214:40]
+  wire  d_replace = d_first & d_ack & d_cam_sel_match_0; // @[AtomicAutomata.scala 233:42]
+  TLMonitor_27 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  assign auto_in_a_ready = out_1_ready & a_allow; // @[AtomicAutomata.scala 150:38]
+  assign auto_in_d_valid = auto_out_d_valid & ~d_drop; // @[AtomicAutomata.scala 235:35]
+  assign auto_in_d_bits_opcode = d_replace ? 3'h1 : auto_out_d_bits_opcode; // @[AtomicAutomata.scala 238:19 239:26 240:28]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = d_replace ? cam_d_0_denied | auto_out_d_bits_denied : auto_out_d_bits_denied; // @[AtomicAutomata.scala 238:19 239:26 243:29]
+  assign auto_in_d_bits_data = d_replace ? cam_d_0_data : auto_out_d_bits_data; // @[AtomicAutomata.scala 238:19 239:26 241:26]
+  assign auto_in_d_bits_corrupt = d_replace ? cam_d_0_corrupt | auto_out_d_bits_denied : auto_out_d_bits_corrupt; // @[AtomicAutomata.scala 238:19 239:26 242:29]
+  assign auto_out_a_valid = idle ? _T_12 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_out_a_bits_opcode = muxStateEarly_1 ? source_i_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_param = muxStateEarly_1 ? source_i_bits_param : 3'h0; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_size = _T_41 | _T_42; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_source = _T_38 | _T_39; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_address = _T_35 | _T_36; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_mask = _T_32 | _T_33; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_data = _T_29 | _T_30; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_corrupt = muxStateEarly_0 & source_c_bits_a_corrupt | muxStateEarly_1 & auto_in_a_bits_corrupt; // @[Mux.scala 27:73]
+  assign auto_out_d_ready = auto_in_d_ready | d_drop; // @[AtomicAutomata.scala 236:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = out_1_ready & a_allow; // @[AtomicAutomata.scala 150:38]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~d_drop; // @[AtomicAutomata.scala 235:35]
+  assign monitor_io_in_d_bits_opcode = d_replace ? 3'h1 : auto_out_d_bits_opcode; // @[AtomicAutomata.scala 238:19 239:26 240:28]
+  assign monitor_io_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_denied = d_replace ? cam_d_0_denied | auto_out_d_bits_denied : auto_out_d_bits_denied; // @[AtomicAutomata.scala 238:19 239:26 243:29]
+  assign monitor_io_in_d_bits_corrupt = d_replace ? cam_d_0_corrupt | auto_out_d_bits_denied : auto_out_d_bits_corrupt; // @[AtomicAutomata.scala 238:19 239:26 242:29]
+  always @(posedge clock) begin
+    if (reset) begin // @[AtomicAutomata.scala 76:28]
+      cam_s_0_state <= 2'h0; // @[AtomicAutomata.scala 76:28]
+    end else if (_d_first_T & d_first) begin // @[AtomicAutomata.scala 216:40]
+      if (d_cam_sel_match_0) begin // @[AtomicAutomata.scala 225:23]
+        if (d_ackd) begin // @[AtomicAutomata.scala 227:29]
+          cam_s_0_state <= 2'h2;
+        end else begin
+          cam_s_0_state <= 2'h0;
+        end
+      end else begin
+        cam_s_0_state <= _GEN_25;
+      end
+    end else begin
+      cam_s_0_state <= _GEN_25;
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_opcode <= auto_in_a_bits_opcode; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_param <= auto_in_a_bits_param; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_size <= auto_in_a_bits_size; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_source <= auto_in_a_bits_source; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_address <= auto_in_a_bits_address; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_mask <= auto_in_a_bits_mask; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_data <= auto_in_a_bits_data; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        cam_a_0_bits_corrupt <= auto_in_a_bits_corrupt; // @[AtomicAutomata.scala 178:24]
+      end
+    end
+    if (_T_50 & _T) begin // @[AtomicAutomata.scala 174:50]
+      if (cam_free_0) begin // @[AtomicAutomata.scala 176:23]
+        if (3'h3 == _GEN_41) begin // @[Mux.scala 81:58]
+          cam_a_0_lut <= 4'hc;
+        end else if (3'h0 == _GEN_41) begin // @[Mux.scala 81:58]
+          cam_a_0_lut <= 4'h6;
+        end else begin
+          cam_a_0_lut <= _cam_a_0_lut_T_2;
+        end
+      end
+    end
+    if (_d_first_T & d_first) begin // @[AtomicAutomata.scala 216:40]
+      if (d_cam_sel_match_0 & d_ackd) begin // @[AtomicAutomata.scala 218:33]
+        cam_d_0_data <= auto_out_d_bits_data; // @[AtomicAutomata.scala 219:22]
+      end
+    end
+    if (_d_first_T & d_first) begin // @[AtomicAutomata.scala 216:40]
+      if (d_cam_sel_match_0 & d_ackd) begin // @[AtomicAutomata.scala 218:33]
+        cam_d_0_denied <= auto_out_d_bits_denied; // @[AtomicAutomata.scala 220:24]
+      end
+    end
+    if (_d_first_T & d_first) begin // @[AtomicAutomata.scala 216:40]
+      if (d_cam_sel_match_0 & d_ackd) begin // @[AtomicAutomata.scala 218:33]
+        cam_d_0_corrupt <= auto_out_d_bits_corrupt; // @[AtomicAutomata.scala 221:25]
+      end
+    end
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 10'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      if (earlyWinner_1) begin // @[Arbiter.scala 111:73]
+        if (opdata) begin // @[Edges.scala 220:14]
+          beatsLeft <= decode;
+        end else begin
+          beatsLeft <= 10'h0;
+        end
+      end else begin
+        beatsLeft <= 10'h0;
+      end
+    end else begin
+      beatsLeft <= _beatsLeft_T_4;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_1 <= earlyWinner_1;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_0 <= earlyWinner_0;
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~earlyWinner_0 | ~earlyWinner_1) & ~reset) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~earlyWinner_0 | ~earlyWinner_1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(cam_amo_0 | source_i_valid) | _prefixOR_T) & _T_10) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_10 & ~(~(cam_amo_0 | source_i_valid) | _prefixOR_T)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_13 | _T_12) & _T_10) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_10 & ~(_T_13 | _T_12)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  cam_s_0_state = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  cam_a_0_bits_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  cam_a_0_bits_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  cam_a_0_bits_size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  cam_a_0_bits_source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  cam_a_0_bits_address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  cam_a_0_bits_mask = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  cam_a_0_bits_data = _RAND_7[31:0];
+  _RAND_8 = {1{`RANDOM}};
+  cam_a_0_bits_corrupt = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  cam_a_0_lut = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  cam_d_0_data = _RAND_10[31:0];
+  _RAND_11 = {1{`RANDOM}};
+  cam_d_0_denied = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  cam_d_0_corrupt = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  beatsLeft = _RAND_13[9:0];
+  _RAND_14 = {1{`RANDOM}};
+  state_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  state_0 = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  d_first_counter = _RAND_16[9:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_28(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [13:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [13:0] _GEN_71 = {{2'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [13:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 14'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [13:0] _T_45 = io_in_a_bits_address ^ 14'h3000; // @[Parameters.scala 137:31]
+  wire [14:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [14:0] _T_48 = $signed(_T_46) & -15'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 15'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_74 = _T_35 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_76 = _T_60 & _T_74; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = _T_42 & _T_74; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_317 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_325 = _T_317 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_327 = _T_42 & _T_325; // @[Monitor.scala 131:74]
+  wire  _T_337 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_345 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_377 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_385 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_417 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_429 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_433 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_437 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_445 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_453 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_481 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_510 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_527 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_545 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [13:0] address; // @[Monitor.scala 388:22]
+  wire  _T_575 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_576 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_580 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_584 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_588 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_592 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_599 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_608 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_612 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_75 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_626 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_629 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_77}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_631 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_633 = ~_T_631[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_637 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_639 = ~_T_433; // @[Monitor.scala 671:74]
+  wire  _T_640 = io_in_d_valid & d_first_1 & ~_T_433; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_433 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_639 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_639 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_24 = _d_first_T & d_first_1 & _T_639 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_626 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_650 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_652 = _T_650[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_657 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_658 = io_in_d_bits_opcode == _GEN_32 | _T_657; // @[Monitor.scala 685:77]
+  wire  _T_662 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_669 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_670 = io_in_d_bits_opcode == _GEN_48 | _T_669; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_79 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_674 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_684 = _T_637 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_639; // @[Monitor.scala 694:116]
+  wire  _T_686 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_693 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_20[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_24[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_702 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_728 = io_in_d_valid & d_first_2 & _T_433; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_433 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_69 = _d_first_T & d_first_2 & _T_433 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire [2:0] _T_736 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_746 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] d_sizes_clr_1 = _GEN_69[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_771 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_327 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_327) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_337 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_337) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_327 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_327) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_377 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_377) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_417 & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~_T_417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_429 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_429) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_437 & (io_in_d_valid & _T_433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2 & ~_T_437) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_445 & (io_in_d_valid & _T_433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2 & ~_T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_453 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_437 & (io_in_d_valid & _T_453 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2 & ~_T_437) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_445 & (io_in_d_valid & _T_453 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2 & ~_T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_481 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_437 & (io_in_d_valid & _T_481 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2 & ~_T_437) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_445 & (io_in_d_valid & _T_481 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2 & _T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_510 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_510 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_445 & (io_in_d_valid & _T_510 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_510 & _T_2 & ~_T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_527 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_445 & (io_in_d_valid & _T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_527 & _T_2 & _T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_545 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_545 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_445 & (io_in_d_valid & _T_545 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_545 & _T_2 & ~_T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_584 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_588 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_588) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_592 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_592) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_600 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_600) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_608 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_608) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_612 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_612) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_633 & (_T_629 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~reset & ~_T_633) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_652 & (_T_640 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & _T_2 & ~_T_652) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_658 & (_T_640 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & same_cycle_resp & _T_2 & ~_T_658) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_662 & (_T_640 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & same_cycle_resp & _T_2 & ~_T_662) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_670 & (_T_640 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & ~same_cycle_resp & _T_2 & ~_T_670) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_674 & (_T_640 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & ~same_cycle_resp & _T_2 & ~_T_674) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & (_T_684 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_684 & _T_2 & ~_T_686) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_693 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_693) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_702 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_702) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_736[0] & (_T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_728 & _T_2 & ~_T_736[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_746 & (_T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_728 & _T_2 & ~_T_746) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_771 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_771) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CanHaveBuiltInDevices.scala:43:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[13:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[3:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[23:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[9:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[9:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[23:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[9:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_7(
+  input        clock,
+  input        reset,
+  output       io_enq_ready,
+  input        io_enq_valid,
+  input  [2:0] io_enq_bits_opcode,
+  input  [3:0] io_enq_bits_size,
+  input  [1:0] io_enq_bits_source,
+  input        io_deq_ready,
+  output       io_deq_valid,
+  output [2:0] io_deq_bits_opcode,
+  output [3:0] io_deq_bits_size,
+  output [1:0] io_deq_bits_source
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_size [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  empty = ~maybe_full; // @[Decoupled.scala 264:28]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = 1'h0;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = 1'h0;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = 1'h0;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~maybe_full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_size[initvar] = _RAND_1[3:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_source[initvar] = _RAND_2[1:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_3 = {1{`RANDOM}};
+  maybe_full = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLError(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [13:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [13:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  a_clock; // @[Decoupled.scala 361:21]
+  wire  a_reset; // @[Decoupled.scala 361:21]
+  wire  a_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  a_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] a_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [3:0] a_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] a_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire  a_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  a_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] a_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [3:0] a_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] a_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire  _a_last_T = a_io_deq_ready & a_io_deq_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _a_last_beats1_decode_T_1 = 27'hfff << a_io_deq_bits_size; // @[package.scala 234:77]
+  wire [11:0] _a_last_beats1_decode_T_3 = ~_a_last_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] a_last_beats1_decode = _a_last_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  a_last_beats1_opdata = ~a_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [9:0] a_last_beats1 = a_last_beats1_opdata ? a_last_beats1_decode : 10'h0; // @[Edges.scala 220:14]
+  reg [9:0] a_last_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_last_counter1 = a_last_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_last_first = a_last_counter == 10'h0; // @[Edges.scala 230:25]
+  wire  a_last = a_last_counter == 10'h1 | a_last_beats1 == 10'h0; // @[Edges.scala 231:37]
+  wire  da_valid = a_io_deq_valid & a_last; // @[Error.scala 51:25]
+  wire  _T = auto_in_d_ready & da_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] da_bits_size = a_io_deq_bits_size; // @[Error.scala 43:18 55:21]
+  wire [26:0] _beats1_decode_T_1 = 27'hfff << da_bits_size; // @[package.scala 234:77]
+  wire [11:0] _beats1_decode_T_3 = ~_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] beats1_decode = _beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire [2:0] _GEN_4 = 3'h2 == a_io_deq_bits_opcode ? 3'h1 : 3'h0; // @[Error.scala 53:{21,21}]
+  wire [2:0] _GEN_5 = 3'h3 == a_io_deq_bits_opcode ? 3'h1 : _GEN_4; // @[Error.scala 53:{21,21}]
+  wire [2:0] _GEN_6 = 3'h4 == a_io_deq_bits_opcode ? 3'h1 : _GEN_5; // @[Error.scala 53:{21,21}]
+  wire [2:0] _GEN_7 = 3'h5 == a_io_deq_bits_opcode ? 3'h2 : _GEN_6; // @[Error.scala 53:{21,21}]
+  wire [2:0] _GEN_8 = 3'h6 == a_io_deq_bits_opcode ? 3'h4 : _GEN_7; // @[Error.scala 53:{21,21}]
+  wire [2:0] da_bits_opcode = 3'h7 == a_io_deq_bits_opcode ? 3'h4 : _GEN_8; // @[Error.scala 53:{21,21}]
+  wire  beats1_opdata = da_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [9:0] beats1 = beats1_opdata ? beats1_decode : 10'h0; // @[Edges.scala 220:14]
+  reg [9:0] counter; // @[Edges.scala 228:27]
+  wire [9:0] counter1 = counter - 10'h1; // @[Edges.scala 229:28]
+  wire  da_first = counter == 10'h0; // @[Edges.scala 230:25]
+  wire  da_last = counter == 10'h1 | beats1 == 10'h0; // @[Edges.scala 231:37]
+  TLMonitor_28 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  Queue_7 a ( // @[Decoupled.scala 361:21]
+    .clock(a_clock),
+    .reset(a_reset),
+    .io_enq_ready(a_io_enq_ready),
+    .io_enq_valid(a_io_enq_valid),
+    .io_enq_bits_opcode(a_io_enq_bits_opcode),
+    .io_enq_bits_size(a_io_enq_bits_size),
+    .io_enq_bits_source(a_io_enq_bits_source),
+    .io_deq_ready(a_io_deq_ready),
+    .io_deq_valid(a_io_deq_valid),
+    .io_deq_bits_opcode(a_io_deq_bits_opcode),
+    .io_deq_bits_size(a_io_deq_bits_size),
+    .io_deq_bits_source(a_io_deq_bits_source)
+  );
+  assign auto_in_a_ready = a_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = a_io_deq_valid & a_last; // @[Error.scala 51:25]
+  assign auto_in_d_bits_opcode = 3'h7 == a_io_deq_bits_opcode ? 3'h4 : _GEN_8; // @[Error.scala 53:{21,21}]
+  assign auto_in_d_bits_size = a_io_deq_bits_size; // @[Error.scala 43:18 55:21]
+  assign auto_in_d_bits_source = a_io_deq_bits_source; // @[Error.scala 43:18 56:21]
+  assign auto_in_d_bits_corrupt = da_bits_opcode[0]; // @[Edges.scala 105:36]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = a_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = a_io_deq_valid & a_last; // @[Error.scala 51:25]
+  assign monitor_io_in_d_bits_opcode = 3'h7 == a_io_deq_bits_opcode ? 3'h4 : _GEN_8; // @[Error.scala 53:{21,21}]
+  assign monitor_io_in_d_bits_size = a_io_deq_bits_size; // @[Error.scala 43:18 55:21]
+  assign monitor_io_in_d_bits_source = a_io_deq_bits_source; // @[Error.scala 43:18 56:21]
+  assign monitor_io_in_d_bits_corrupt = da_bits_opcode[0]; // @[Edges.scala 105:36]
+  assign a_clock = clock;
+  assign a_reset = reset;
+  assign a_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign a_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign a_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign a_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign a_io_deq_ready = auto_in_d_ready & da_last | ~a_last; // @[Error.scala 50:46]
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_last_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_last_T) begin // @[Edges.scala 234:17]
+      if (a_last_first) begin // @[Edges.scala 235:21]
+        if (a_last_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_last_counter <= a_last_beats1_decode;
+        end else begin
+          a_last_counter <= 10'h0;
+        end
+      end else begin
+        a_last_counter <= a_last_counter1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_T) begin // @[Edges.scala 234:17]
+      if (da_first) begin // @[Edges.scala 235:21]
+        if (beats1_opdata) begin // @[Edges.scala 220:14]
+          counter <= beats1_decode;
+        end else begin
+          counter <= 10'h0;
+        end
+      end else begin
+        counter <= counter1;
+      end
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_last_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  counter = _RAND_1[9:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_29(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [13:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [13:0] _GEN_71 = {{2'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [13:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 14'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [13:0] _T_45 = io_in_a_bits_address ^ 14'h3000; // @[Parameters.scala 137:31]
+  wire [14:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [14:0] _T_48 = $signed(_T_46) & -15'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 15'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_74 = _T_35 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_76 = _T_60 & _T_74; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = _T_42 & _T_74; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_317 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_325 = _T_317 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_327 = _T_42 & _T_325; // @[Monitor.scala 131:74]
+  wire  _T_337 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_345 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_377 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_385 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_417 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_429 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_433 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_437 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_441 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_445 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_449 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_453 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_464 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_468 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_481 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = _T_449 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_510 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_527 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_545 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [13:0] address; // @[Monitor.scala 388:22]
+  wire  _T_575 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_576 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_580 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_584 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_588 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_592 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_599 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_604 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_608 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_612 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_616 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_620 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_75 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_626 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_629 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_77}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_631 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_633 = ~_T_631[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_637 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_639 = ~_T_433; // @[Monitor.scala 671:74]
+  wire  _T_640 = io_in_d_valid & d_first_1 & ~_T_433; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_433 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_639 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_639 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_24 = _d_first_T & d_first_1 & _T_639 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_626 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_650 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_652 = _T_650[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_657 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_658 = io_in_d_bits_opcode == _GEN_32 | _T_657; // @[Monitor.scala 685:77]
+  wire  _T_662 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_669 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_670 = io_in_d_bits_opcode == _GEN_48 | _T_669; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_79 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_674 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_684 = _T_637 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_639; // @[Monitor.scala 694:116]
+  wire  _T_686 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_693 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_20[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_24[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_702 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_728 = io_in_d_valid & d_first_2 & _T_433; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_433 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_69 = _d_first_T & d_first_2 & _T_433 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire [2:0] _T_736 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_746 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] d_sizes_clr_1 = _GEN_69[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_771 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_327 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_327) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_337 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_337) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_327 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_327) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_377 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_377) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_417 & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~_T_417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_385 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_385 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_429 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_429) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_437 & (io_in_d_valid & _T_433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2 & ~_T_437) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_441 & (io_in_d_valid & _T_433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2 & ~_T_441) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_445 & (io_in_d_valid & _T_433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2 & ~_T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_449 & (io_in_d_valid & _T_433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_433 & _T_2 & ~_T_449) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_453 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_437 & (io_in_d_valid & _T_453 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2 & ~_T_437) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_464 & (io_in_d_valid & _T_453 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2 & ~_T_464) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_468 & (io_in_d_valid & _T_453 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2 & ~_T_468) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_445 & (io_in_d_valid & _T_453 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_453 & _T_2 & ~_T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_481 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_437 & (io_in_d_valid & _T_481 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2 & ~_T_437) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_464 & (io_in_d_valid & _T_481 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2 & ~_T_464) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_468 & (io_in_d_valid & _T_481 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2 & ~_T_468) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_501 & (io_in_d_valid & _T_481 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_481 & _T_2 & ~_T_501) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_510 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_510 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_441 & (io_in_d_valid & _T_510 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_510 & _T_2 & ~_T_441) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_445 & (io_in_d_valid & _T_510 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_510 & _T_2 & ~_T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_527 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_441 & (io_in_d_valid & _T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_527 & _T_2 & ~_T_441) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_501 & (io_in_d_valid & _T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_527 & _T_2 & ~_T_501) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_545 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_545 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_441 & (io_in_d_valid & _T_545 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_545 & _T_2 & ~_T_441) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_445 & (io_in_d_valid & _T_545 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_545 & _T_2 & ~_T_445) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_584 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_588 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_588) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_592 & (_T_575 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_575 & ~reset & ~_T_592) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_600 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_600) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_604 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_604) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_608 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_608) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_612 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_612) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_616 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_616) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_633 & (_T_629 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~reset & ~_T_633) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_652 & (_T_640 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & _T_2 & ~_T_652) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_658 & (_T_640 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & same_cycle_resp & _T_2 & ~_T_658) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_662 & (_T_640 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & same_cycle_resp & _T_2 & ~_T_662) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_670 & (_T_640 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & ~same_cycle_resp & _T_2 & ~_T_670) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_674 & (_T_640 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_640 & ~same_cycle_resp & _T_2 & ~_T_674) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & (_T_684 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_684 & _T_2 & ~_T_686) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_693 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_693) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 3 (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_702 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_702) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_736[0] & (_T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_728 & _T_2 & ~_T_736[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_746 & (_T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_728 & _T_2 & ~_T_746) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_771 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_771) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CanHaveBuiltInDevices.scala:44:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[13:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[23:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[9:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[9:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[23:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[9:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_8(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [3:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [13:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [3:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [13:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [13:0] ram_address [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [13:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [13:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_mask [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = io_enq_bits_corrupt;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[13:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_6[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_7 = {1{`RANDOM}};
+  value = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  value_1 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  maybe_full = _RAND_9[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer_5(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [13:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [13:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_corrupt
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [13:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [13:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [13:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleIn_0_d_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleIn_0_d_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  TLMonitor_29 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  Queue_8 bundleOut_0_a_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_a_q_clock),
+    .reset(bundleOut_0_a_q_reset),
+    .io_enq_ready(bundleOut_0_a_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_q_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_q_io_enq_bits_mask),
+    .io_enq_bits_corrupt(bundleOut_0_a_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleOut_0_a_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_q_io_deq_bits_mask),
+    .io_deq_bits_corrupt(bundleOut_0_a_q_io_deq_bits_corrupt)
+  );
+  Queue_6 bundleIn_0_d_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleIn_0_d_q_clock),
+    .reset(bundleIn_0_d_q_reset),
+    .io_enq_ready(bundleIn_0_d_q_io_enq_ready),
+    .io_enq_valid(bundleIn_0_d_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleIn_0_d_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleIn_0_d_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleIn_0_d_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_q_io_enq_bits_source),
+    .io_enq_bits_sink(bundleIn_0_d_q_io_enq_bits_sink),
+    .io_enq_bits_denied(bundleIn_0_d_q_io_enq_bits_denied),
+    .io_enq_bits_data(bundleIn_0_d_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleIn_0_d_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleIn_0_d_q_io_deq_ready),
+    .io_deq_valid(bundleIn_0_d_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_d_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_d_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_d_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_d_q_io_deq_bits_source),
+    .io_deq_bits_sink(bundleIn_0_d_q_io_deq_bits_sink),
+    .io_deq_bits_denied(bundleIn_0_d_q_io_deq_bits_denied),
+    .io_deq_bits_data(bundleIn_0_d_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleIn_0_d_q_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_data = bundleIn_0_d_q_io_deq_bits_data; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_out_a_valid = bundleOut_0_a_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_q_io_deq_bits_mask; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_d_ready = bundleIn_0_d_q_io_enq_ready; // @[Nodes.scala 1207:84 Decoupled.scala 365:17]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign bundleOut_0_a_q_clock = clock;
+  assign bundleOut_0_a_q_reset = reset;
+  assign bundleOut_0_a_q_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_clock = clock;
+  assign bundleIn_0_d_q_reset = reset;
+  assign bundleIn_0_d_q_io_enq_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_param = 2'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_sink = 1'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_denied = 1'h1; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_data = 32'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_deq_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ErrorDeviceWrapper(
+  input         clock,
+  input         reset,
+  output        auto_buffer_in_a_ready,
+  input         auto_buffer_in_a_valid,
+  input  [2:0]  auto_buffer_in_a_bits_opcode,
+  input  [2:0]  auto_buffer_in_a_bits_param,
+  input  [3:0]  auto_buffer_in_a_bits_size,
+  input  [1:0]  auto_buffer_in_a_bits_source,
+  input  [13:0] auto_buffer_in_a_bits_address,
+  input  [3:0]  auto_buffer_in_a_bits_mask,
+  input         auto_buffer_in_a_bits_corrupt,
+  input         auto_buffer_in_d_ready,
+  output        auto_buffer_in_d_valid,
+  output [2:0]  auto_buffer_in_d_bits_opcode,
+  output [1:0]  auto_buffer_in_d_bits_param,
+  output [3:0]  auto_buffer_in_d_bits_size,
+  output [1:0]  auto_buffer_in_d_bits_source,
+  output        auto_buffer_in_d_bits_sink,
+  output        auto_buffer_in_d_bits_denied,
+  output [31:0] auto_buffer_in_d_bits_data,
+  output        auto_buffer_in_d_bits_corrupt
+);
+  wire  error_clock; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire  error_reset; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire  error_auto_in_a_ready; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire  error_auto_in_a_valid; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [2:0] error_auto_in_a_bits_opcode; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [2:0] error_auto_in_a_bits_param; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [3:0] error_auto_in_a_bits_size; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [1:0] error_auto_in_a_bits_source; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [13:0] error_auto_in_a_bits_address; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [3:0] error_auto_in_a_bits_mask; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire  error_auto_in_a_bits_corrupt; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire  error_auto_in_d_ready; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire  error_auto_in_d_valid; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [2:0] error_auto_in_d_bits_opcode; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [3:0] error_auto_in_d_bits_size; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire [1:0] error_auto_in_d_bits_source; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire  error_auto_in_d_bits_corrupt; // @[CanHaveBuiltInDevices.scala 38:29]
+  wire  buffer_clock; // @[Buffer.scala 68:28]
+  wire  buffer_reset; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [13:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [13:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  TLError error ( // @[CanHaveBuiltInDevices.scala 38:29]
+    .clock(error_clock),
+    .reset(error_reset),
+    .auto_in_a_ready(error_auto_in_a_ready),
+    .auto_in_a_valid(error_auto_in_a_valid),
+    .auto_in_a_bits_opcode(error_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(error_auto_in_a_bits_param),
+    .auto_in_a_bits_size(error_auto_in_a_bits_size),
+    .auto_in_a_bits_source(error_auto_in_a_bits_source),
+    .auto_in_a_bits_address(error_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(error_auto_in_a_bits_mask),
+    .auto_in_a_bits_corrupt(error_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(error_auto_in_d_ready),
+    .auto_in_d_valid(error_auto_in_d_valid),
+    .auto_in_d_bits_opcode(error_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(error_auto_in_d_bits_size),
+    .auto_in_d_bits_source(error_auto_in_d_bits_source),
+    .auto_in_d_bits_corrupt(error_auto_in_d_bits_corrupt)
+  );
+  TLBuffer_5 buffer ( // @[Buffer.scala 68:28]
+    .clock(buffer_clock),
+    .reset(buffer_reset),
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(buffer_auto_in_d_bits_param),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(buffer_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(buffer_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(buffer_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_corrupt(buffer_auto_out_d_bits_corrupt)
+  );
+  assign auto_buffer_in_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_param = buffer_auto_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_source = buffer_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_sink = buffer_auto_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_denied = buffer_auto_in_d_bits_denied; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_corrupt = buffer_auto_in_d_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign error_clock = clock;
+  assign error_reset = reset;
+  assign error_auto_in_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign error_auto_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign error_auto_in_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign error_auto_in_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign error_auto_in_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign error_auto_in_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign error_auto_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign error_auto_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign error_auto_in_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign buffer_clock = clock;
+  assign buffer_reset = reset;
+  assign buffer_auto_in_a_valid = auto_buffer_in_a_valid; // @[LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_buffer_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_buffer_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_buffer_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_buffer_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_buffer_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_buffer_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_buffer_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_buffer_in_d_ready; // @[LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = error_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = error_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = error_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_size = error_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = error_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_corrupt = error_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+endmodule
+module TLBuffer_6(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLWidthWidget_4(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLInterconnectCoupler_19(
+  output        auto_widget_in_a_ready,
+  input         auto_widget_in_a_valid,
+  input  [2:0]  auto_widget_in_a_bits_opcode,
+  input  [2:0]  auto_widget_in_a_bits_param,
+  input  [2:0]  auto_widget_in_a_bits_size,
+  input  [1:0]  auto_widget_in_a_bits_source,
+  input  [29:0] auto_widget_in_a_bits_address,
+  input  [3:0]  auto_widget_in_a_bits_mask,
+  input  [31:0] auto_widget_in_a_bits_data,
+  input         auto_widget_in_a_bits_corrupt,
+  input         auto_widget_in_d_ready,
+  output        auto_widget_in_d_valid,
+  output [2:0]  auto_widget_in_d_bits_opcode,
+  output [1:0]  auto_widget_in_d_bits_param,
+  output [2:0]  auto_widget_in_d_bits_size,
+  output [1:0]  auto_widget_in_d_bits_source,
+  output        auto_widget_in_d_bits_sink,
+  output        auto_widget_in_d_bits_denied,
+  output [31:0] auto_widget_in_d_bits_data,
+  output        auto_widget_in_d_bits_corrupt,
+  input         auto_bus_xing_out_a_ready,
+  output        auto_bus_xing_out_a_valid,
+  output [2:0]  auto_bus_xing_out_a_bits_opcode,
+  output [2:0]  auto_bus_xing_out_a_bits_param,
+  output [2:0]  auto_bus_xing_out_a_bits_size,
+  output [1:0]  auto_bus_xing_out_a_bits_source,
+  output [29:0] auto_bus_xing_out_a_bits_address,
+  output [3:0]  auto_bus_xing_out_a_bits_mask,
+  output [31:0] auto_bus_xing_out_a_bits_data,
+  output        auto_bus_xing_out_a_bits_corrupt,
+  output        auto_bus_xing_out_d_ready,
+  input         auto_bus_xing_out_d_valid,
+  input  [2:0]  auto_bus_xing_out_d_bits_opcode,
+  input  [1:0]  auto_bus_xing_out_d_bits_param,
+  input  [2:0]  auto_bus_xing_out_d_bits_size,
+  input  [1:0]  auto_bus_xing_out_d_bits_source,
+  input         auto_bus_xing_out_d_bits_sink,
+  input         auto_bus_xing_out_d_bits_denied,
+  input  [31:0] auto_bus_xing_out_d_bits_data,
+  input         auto_bus_xing_out_d_bits_corrupt
+);
+  wire  widget_auto_in_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [29:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_denied; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [29:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_denied; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  TLWidthWidget_4 widget ( // @[WidthWidget.scala 219:28]
+    .auto_in_a_ready(widget_auto_in_a_ready),
+    .auto_in_a_valid(widget_auto_in_a_valid),
+    .auto_in_a_bits_opcode(widget_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(widget_auto_in_a_bits_param),
+    .auto_in_a_bits_size(widget_auto_in_a_bits_size),
+    .auto_in_a_bits_source(widget_auto_in_a_bits_source),
+    .auto_in_a_bits_address(widget_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(widget_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(widget_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(widget_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(widget_auto_in_d_ready),
+    .auto_in_d_valid(widget_auto_in_d_valid),
+    .auto_in_d_bits_opcode(widget_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(widget_auto_in_d_bits_param),
+    .auto_in_d_bits_size(widget_auto_in_d_bits_size),
+    .auto_in_d_bits_source(widget_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(widget_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(widget_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(widget_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(widget_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(widget_auto_out_a_ready),
+    .auto_out_a_valid(widget_auto_out_a_valid),
+    .auto_out_a_bits_opcode(widget_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(widget_auto_out_a_bits_param),
+    .auto_out_a_bits_size(widget_auto_out_a_bits_size),
+    .auto_out_a_bits_source(widget_auto_out_a_bits_source),
+    .auto_out_a_bits_address(widget_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(widget_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(widget_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(widget_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(widget_auto_out_d_ready),
+    .auto_out_d_valid(widget_auto_out_d_valid),
+    .auto_out_d_bits_opcode(widget_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(widget_auto_out_d_bits_param),
+    .auto_out_d_bits_size(widget_auto_out_d_bits_size),
+    .auto_out_d_bits_source(widget_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(widget_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(widget_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(widget_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(widget_auto_out_d_bits_corrupt)
+  );
+  assign auto_widget_in_a_ready = widget_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_valid = widget_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_opcode = widget_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_param = widget_auto_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_size = widget_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_source = widget_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_sink = widget_auto_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_denied = widget_auto_in_d_bits_denied; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_data = widget_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_corrupt = widget_auto_in_d_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign auto_bus_xing_out_a_valid = widget_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_opcode = widget_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_param = widget_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_size = widget_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_source = widget_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_address = widget_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_mask = widget_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_data = widget_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_corrupt = widget_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_d_ready = widget_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign widget_auto_in_a_valid = auto_widget_in_a_valid; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_opcode = auto_widget_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_param = auto_widget_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_size = auto_widget_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_source = auto_widget_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_address = auto_widget_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_mask = auto_widget_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_data = auto_widget_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_corrupt = auto_widget_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_d_ready = auto_widget_in_d_ready; // @[LazyModule.scala 309:16]
+  assign widget_auto_out_a_ready = auto_bus_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_valid = auto_bus_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_opcode = auto_bus_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_param = auto_bus_xing_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_size = auto_bus_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_source = auto_bus_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_sink = auto_bus_xing_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_denied = auto_bus_xing_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_data = auto_bus_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_corrupt = auto_bus_xing_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_30(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [27:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [27:0] _GEN_71 = {{22'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [27:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 28'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [27:0] _T_45 = io_in_a_bits_address ^ 28'hc000000; // @[Parameters.scala 137:31]
+  wire [28:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [28:0] _T_48 = $signed(_T_46) & -29'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 29'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [27:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_684 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_693 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_727 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_737 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_762 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_684 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_684) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_693 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_693) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727[0] & (_T_719 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_719 & _T_2 & ~_T_727[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_737 & (_T_719 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_719 & _T_2 & ~_T_737) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Plic.scala:363:63)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_762 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_762) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Plic.scala:363:63)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[27:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater_16(
+  input         clock,
+  input         reset,
+  input         io_repeat,
+  output        io_full,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [27:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [27:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg  full; // @[Repeater.scala 19:21]
+  reg [2:0] saved_opcode; // @[Repeater.scala 20:18]
+  reg [2:0] saved_param; // @[Repeater.scala 20:18]
+  reg [2:0] saved_size; // @[Repeater.scala 20:18]
+  reg [1:0] saved_source; // @[Repeater.scala 20:18]
+  reg [27:0] saved_address; // @[Repeater.scala 20:18]
+  reg [3:0] saved_mask; // @[Repeater.scala 20:18]
+  reg  saved_corrupt; // @[Repeater.scala 20:18]
+  wire  _T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = _T & io_repeat | full; // @[Repeater.scala 19:21 28:{38,45}]
+  wire  _T_2 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign io_full = full; // @[Repeater.scala 26:11]
+  assign io_enq_ready = io_deq_ready & ~full; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid | full; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = full ? saved_opcode : io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = full ? saved_param : io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = full ? saved_size : io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = full ? saved_source : io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = full ? saved_address : io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = full ? saved_mask : io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_corrupt = full ? saved_corrupt : io_enq_bits_corrupt; // @[Repeater.scala 25:21]
+  always @(posedge clock) begin
+    if (reset) begin // @[Repeater.scala 19:21]
+      full <= 1'h0; // @[Repeater.scala 19:21]
+    end else if (_T_2 & ~io_repeat) begin // @[Repeater.scala 29:38]
+      full <= 1'h0; // @[Repeater.scala 29:45]
+    end else begin
+      full <= _GEN_0;
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_opcode <= io_enq_bits_opcode; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_param <= io_enq_bits_param; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_size <= io_enq_bits_size; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_source <= io_enq_bits_source; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_address <= io_enq_bits_address; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_mask <= io_enq_bits_mask; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_corrupt <= io_enq_bits_corrupt; // @[Repeater.scala 28:62]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  full = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  saved_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  saved_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  saved_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  saved_source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[27:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  saved_corrupt = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_15(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [27:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [27:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [27:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [27:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [27:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [27:0] _GEN_11 = {{22'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_30 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_16 repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_20(
+  input         clock,
+  input         reset,
+  input         auto_fragmenter_out_a_ready,
+  output        auto_fragmenter_out_a_valid,
+  output [2:0]  auto_fragmenter_out_a_bits_opcode,
+  output [2:0]  auto_fragmenter_out_a_bits_param,
+  output [1:0]  auto_fragmenter_out_a_bits_size,
+  output [6:0]  auto_fragmenter_out_a_bits_source,
+  output [27:0] auto_fragmenter_out_a_bits_address,
+  output [3:0]  auto_fragmenter_out_a_bits_mask,
+  output [31:0] auto_fragmenter_out_a_bits_data,
+  output        auto_fragmenter_out_a_bits_corrupt,
+  output        auto_fragmenter_out_d_ready,
+  input         auto_fragmenter_out_d_valid,
+  input  [2:0]  auto_fragmenter_out_d_bits_opcode,
+  input  [1:0]  auto_fragmenter_out_d_bits_size,
+  input  [6:0]  auto_fragmenter_out_d_bits_source,
+  input  [31:0] auto_fragmenter_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [27:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [27:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [27:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_15 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_fragmenter_out_a_valid = fragmenter_auto_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_d_ready = fragmenter_auto_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_fragmenter_out_a_ready; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_fragmenter_out_d_valid; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_31(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [25:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [25:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [25:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 26'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [25:0] _T_45 = io_in_a_bits_address ^ 26'h2000000; // @[Parameters.scala 137:31]
+  wire [26:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [26:0] _T_48 = $signed(_T_46) & -27'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 27'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [25:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CLINT.scala:111:65)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CLINT.scala:111:65)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[25:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater_17(
+  input         clock,
+  input         reset,
+  input         io_repeat,
+  output        io_full,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [25:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [25:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg  full; // @[Repeater.scala 19:21]
+  reg [2:0] saved_opcode; // @[Repeater.scala 20:18]
+  reg [2:0] saved_param; // @[Repeater.scala 20:18]
+  reg [2:0] saved_size; // @[Repeater.scala 20:18]
+  reg [1:0] saved_source; // @[Repeater.scala 20:18]
+  reg [25:0] saved_address; // @[Repeater.scala 20:18]
+  reg [3:0] saved_mask; // @[Repeater.scala 20:18]
+  reg  saved_corrupt; // @[Repeater.scala 20:18]
+  wire  _T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = _T & io_repeat | full; // @[Repeater.scala 19:21 28:{38,45}]
+  wire  _T_2 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign io_full = full; // @[Repeater.scala 26:11]
+  assign io_enq_ready = io_deq_ready & ~full; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid | full; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = full ? saved_opcode : io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = full ? saved_param : io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = full ? saved_size : io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = full ? saved_source : io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = full ? saved_address : io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = full ? saved_mask : io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_corrupt = full ? saved_corrupt : io_enq_bits_corrupt; // @[Repeater.scala 25:21]
+  always @(posedge clock) begin
+    if (reset) begin // @[Repeater.scala 19:21]
+      full <= 1'h0; // @[Repeater.scala 19:21]
+    end else if (_T_2 & ~io_repeat) begin // @[Repeater.scala 29:38]
+      full <= 1'h0; // @[Repeater.scala 29:45]
+    end else begin
+      full <= _GEN_0;
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_opcode <= io_enq_bits_opcode; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_param <= io_enq_bits_param; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_size <= io_enq_bits_size; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_source <= io_enq_bits_source; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_address <= io_enq_bits_address; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_mask <= io_enq_bits_mask; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_corrupt <= io_enq_bits_corrupt; // @[Repeater.scala 28:62]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  full = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  saved_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  saved_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  saved_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  saved_source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[25:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  saved_corrupt = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_16(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [25:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [25:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [25:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [25:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [25:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [25:0] _GEN_11 = {{20'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_31 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_17 repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_21(
+  input         clock,
+  input         reset,
+  input         auto_fragmenter_out_a_ready,
+  output        auto_fragmenter_out_a_valid,
+  output [2:0]  auto_fragmenter_out_a_bits_opcode,
+  output [2:0]  auto_fragmenter_out_a_bits_param,
+  output [1:0]  auto_fragmenter_out_a_bits_size,
+  output [6:0]  auto_fragmenter_out_a_bits_source,
+  output [25:0] auto_fragmenter_out_a_bits_address,
+  output [3:0]  auto_fragmenter_out_a_bits_mask,
+  output [31:0] auto_fragmenter_out_a_bits_data,
+  output        auto_fragmenter_out_a_bits_corrupt,
+  output        auto_fragmenter_out_d_ready,
+  input         auto_fragmenter_out_d_valid,
+  input  [2:0]  auto_fragmenter_out_d_bits_opcode,
+  input  [1:0]  auto_fragmenter_out_d_bits_size,
+  input  [6:0]  auto_fragmenter_out_d_bits_source,
+  input  [31:0] auto_fragmenter_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [25:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [25:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [25:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_16 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_fragmenter_out_a_valid = fragmenter_auto_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_d_ready = fragmenter_auto_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_fragmenter_out_a_ready; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_fragmenter_out_d_valid; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_32(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [11:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [11:0] _GEN_71 = {{6'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [11:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 12'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [12:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [12:0] _T_48 = $signed(_T_7) & 13'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 13'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [11:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_686 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_712 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_720 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_730 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_750 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_686 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_686) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720[0] & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_720[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_730 & (_T_712 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_712 & _T_2 & ~_T_730) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Periphery.scala:88:64)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_750 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_750) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Periphery.scala:88:64)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[11:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[11:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater_18(
+  input         clock,
+  input         reset,
+  input         io_repeat,
+  output        io_full,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [11:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [11:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg  full; // @[Repeater.scala 19:21]
+  reg [2:0] saved_opcode; // @[Repeater.scala 20:18]
+  reg [2:0] saved_param; // @[Repeater.scala 20:18]
+  reg [2:0] saved_size; // @[Repeater.scala 20:18]
+  reg [1:0] saved_source; // @[Repeater.scala 20:18]
+  reg [11:0] saved_address; // @[Repeater.scala 20:18]
+  reg [3:0] saved_mask; // @[Repeater.scala 20:18]
+  reg  saved_corrupt; // @[Repeater.scala 20:18]
+  wire  _T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = _T & io_repeat | full; // @[Repeater.scala 19:21 28:{38,45}]
+  wire  _T_2 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign io_full = full; // @[Repeater.scala 26:11]
+  assign io_enq_ready = io_deq_ready & ~full; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid | full; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = full ? saved_opcode : io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = full ? saved_param : io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = full ? saved_size : io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = full ? saved_source : io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = full ? saved_address : io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = full ? saved_mask : io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_corrupt = full ? saved_corrupt : io_enq_bits_corrupt; // @[Repeater.scala 25:21]
+  always @(posedge clock) begin
+    if (reset) begin // @[Repeater.scala 19:21]
+      full <= 1'h0; // @[Repeater.scala 19:21]
+    end else if (_T_2 & ~io_repeat) begin // @[Repeater.scala 29:38]
+      full <= 1'h0; // @[Repeater.scala 29:45]
+    end else begin
+      full <= _GEN_0;
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_opcode <= io_enq_bits_opcode; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_param <= io_enq_bits_param; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_size <= io_enq_bits_size; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_source <= io_enq_bits_source; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_address <= io_enq_bits_address; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_mask <= io_enq_bits_mask; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_corrupt <= io_enq_bits_corrupt; // @[Repeater.scala 28:62]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  full = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  saved_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  saved_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  saved_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  saved_source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[11:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  saved_corrupt = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_17(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [11:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [11:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [11:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [11:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [11:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [11:0] _GEN_11 = {{6'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_32 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_18 repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_22(
+  input         clock,
+  input         reset,
+  input         auto_fragmenter_out_a_ready,
+  output        auto_fragmenter_out_a_valid,
+  output [2:0]  auto_fragmenter_out_a_bits_opcode,
+  output [2:0]  auto_fragmenter_out_a_bits_param,
+  output [1:0]  auto_fragmenter_out_a_bits_size,
+  output [6:0]  auto_fragmenter_out_a_bits_source,
+  output [11:0] auto_fragmenter_out_a_bits_address,
+  output [3:0]  auto_fragmenter_out_a_bits_mask,
+  output [31:0] auto_fragmenter_out_a_bits_data,
+  output        auto_fragmenter_out_a_bits_corrupt,
+  output        auto_fragmenter_out_d_ready,
+  input         auto_fragmenter_out_d_valid,
+  input  [2:0]  auto_fragmenter_out_d_bits_opcode,
+  input  [1:0]  auto_fragmenter_out_d_bits_size,
+  input  [6:0]  auto_fragmenter_out_d_bits_source,
+  input  [31:0] auto_fragmenter_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [11:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [11:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [11:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_17 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_fragmenter_out_a_valid = fragmenter_auto_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_d_ready = fragmenter_auto_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_fragmenter_out_a_ready; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_fragmenter_out_d_valid; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 311:12]
+endmodule
+module TLWidthWidget_5(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [27:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [27:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLInterconnectCoupler_23(
+  input         auto_tl_slave_clock_xing_out_a_ready,
+  output        auto_tl_slave_clock_xing_out_a_valid,
+  output [2:0]  auto_tl_slave_clock_xing_out_a_bits_opcode,
+  output [2:0]  auto_tl_slave_clock_xing_out_a_bits_param,
+  output [2:0]  auto_tl_slave_clock_xing_out_a_bits_size,
+  output [1:0]  auto_tl_slave_clock_xing_out_a_bits_source,
+  output [27:0] auto_tl_slave_clock_xing_out_a_bits_address,
+  output [3:0]  auto_tl_slave_clock_xing_out_a_bits_mask,
+  output [31:0] auto_tl_slave_clock_xing_out_a_bits_data,
+  output        auto_tl_slave_clock_xing_out_a_bits_corrupt,
+  output        auto_tl_slave_clock_xing_out_d_ready,
+  input         auto_tl_slave_clock_xing_out_d_valid,
+  input  [2:0]  auto_tl_slave_clock_xing_out_d_bits_opcode,
+  input  [1:0]  auto_tl_slave_clock_xing_out_d_bits_param,
+  input  [2:0]  auto_tl_slave_clock_xing_out_d_bits_size,
+  input  [1:0]  auto_tl_slave_clock_xing_out_d_bits_source,
+  input         auto_tl_slave_clock_xing_out_d_bits_sink,
+  input         auto_tl_slave_clock_xing_out_d_bits_denied,
+  input  [31:0] auto_tl_slave_clock_xing_out_d_bits_data,
+  input         auto_tl_slave_clock_xing_out_d_bits_corrupt,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [27:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [1:0]  auto_tl_in_d_bits_param,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output        auto_tl_in_d_bits_sink,
+  output        auto_tl_in_d_bits_denied,
+  output [31:0] auto_tl_in_d_bits_data,
+  output        auto_tl_in_d_bits_corrupt
+);
+  wire  widget_auto_in_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [27:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_denied; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [27:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_bits_corrupt; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [1:0] widget_auto_out_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_denied; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  TLWidthWidget_5 widget ( // @[WidthWidget.scala 219:28]
+    .auto_in_a_ready(widget_auto_in_a_ready),
+    .auto_in_a_valid(widget_auto_in_a_valid),
+    .auto_in_a_bits_opcode(widget_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(widget_auto_in_a_bits_param),
+    .auto_in_a_bits_size(widget_auto_in_a_bits_size),
+    .auto_in_a_bits_source(widget_auto_in_a_bits_source),
+    .auto_in_a_bits_address(widget_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(widget_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(widget_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(widget_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(widget_auto_in_d_ready),
+    .auto_in_d_valid(widget_auto_in_d_valid),
+    .auto_in_d_bits_opcode(widget_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(widget_auto_in_d_bits_param),
+    .auto_in_d_bits_size(widget_auto_in_d_bits_size),
+    .auto_in_d_bits_source(widget_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(widget_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(widget_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(widget_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(widget_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(widget_auto_out_a_ready),
+    .auto_out_a_valid(widget_auto_out_a_valid),
+    .auto_out_a_bits_opcode(widget_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(widget_auto_out_a_bits_param),
+    .auto_out_a_bits_size(widget_auto_out_a_bits_size),
+    .auto_out_a_bits_source(widget_auto_out_a_bits_source),
+    .auto_out_a_bits_address(widget_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(widget_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(widget_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(widget_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(widget_auto_out_d_ready),
+    .auto_out_d_valid(widget_auto_out_d_valid),
+    .auto_out_d_bits_opcode(widget_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(widget_auto_out_d_bits_param),
+    .auto_out_d_bits_size(widget_auto_out_d_bits_size),
+    .auto_out_d_bits_source(widget_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(widget_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(widget_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(widget_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(widget_auto_out_d_bits_corrupt)
+  );
+  assign auto_tl_slave_clock_xing_out_a_valid = widget_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_a_bits_opcode = widget_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_a_bits_param = widget_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_a_bits_size = widget_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_a_bits_source = widget_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_a_bits_address = widget_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_a_bits_mask = widget_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_a_bits_data = widget_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_a_bits_corrupt = widget_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_out_d_ready = widget_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = widget_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = widget_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = widget_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_param = widget_auto_in_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = widget_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = widget_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_sink = widget_auto_in_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_denied = widget_auto_in_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = widget_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_corrupt = widget_auto_in_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign widget_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_out_a_ready = auto_tl_slave_clock_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_valid = auto_tl_slave_clock_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_opcode = auto_tl_slave_clock_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_param = auto_tl_slave_clock_xing_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_size = auto_tl_slave_clock_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_source = auto_tl_slave_clock_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_sink = auto_tl_slave_clock_xing_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_denied = auto_tl_slave_clock_xing_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_data = auto_tl_slave_clock_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_corrupt = auto_tl_slave_clock_xing_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_33(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [95:0] _RAND_13;
+  reg [383:0] _RAND_14;
+  reg [383:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [95:0] _RAND_19;
+  reg [383:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10000000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_409 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_413 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_417 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_432 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_436 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_469 = _T_417 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_572 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_584 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_588 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [127:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [127:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 671:90 672:22]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set_wo_ready = _GEN_15[95:0];
+  wire [95:0] d_clr_wo_ready = _GEN_21[95:0];
+  wire  _T_661 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_670 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_696 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_704 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_714 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_739 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_409 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_409) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_413 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_413) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_417 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_432 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_432) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_436 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_436) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_413 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_413) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_417 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_432 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_432) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_436 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_436) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_469 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_469) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_417 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_409 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_T_409) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_413 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_T_413) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_417 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_T_417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_409 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_T_409) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_469 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_T_469) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_417 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_T_417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_409 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_T_409) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_413 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_T_413) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_417 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_T_417) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_572 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_572) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_584 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_588 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_588) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 4 (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_670 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_670) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_704[0] & (_T_696 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_696 & _T_2 & ~_T_704[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_714 & (_T_696 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_696 & _T_2 & ~_T_714) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_739 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_739) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at MockAONPeriphery.scala:22:62)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[6:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {3{`RANDOM}};
+  inflight = _RAND_13[95:0];
+  _RAND_14 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_14[383:0];
+  _RAND_15 = {12{`RANDOM}};
+  inflight_sizes = _RAND_15[383:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {3{`RANDOM}};
+  inflight_1 = _RAND_19[95:0];
+  _RAND_20 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[383:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncResetSynchronizerPrimitiveShiftReg_d3_i0(
+  input   clock,
+  input   reset,
+  input   io_d,
+  output  io_q
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  reg  sync_0; // @[SynchronizerReg.scala 51:87]
+  reg  sync_1; // @[SynchronizerReg.scala 51:87]
+  reg  sync_2; // @[SynchronizerReg.scala 51:87]
+  assign io_q = sync_0; // @[SynchronizerReg.scala 59:8]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_0 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_0 <= sync_1; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_1 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_1 <= sync_2; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 54:22]
+      sync_2 <= 1'h0;
+    end else begin
+      sync_2 <= io_d;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  sync_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sync_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  sync_2 = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    sync_0 = 1'h0;
+  end
+  if (reset) begin
+    sync_1 = 1'h0;
+  end
+  if (reset) begin
+    sync_2 = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncResetSynchronizerShiftReg_w1_d3_i0(
+  input   clock,
+  input   reset,
+  input   io_d,
+  output  io_q
+);
+  wire  output_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_reset; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_q; // @[ShiftReg.scala 45:23]
+  AsyncResetSynchronizerPrimitiveShiftReg_d3_i0 output_chain ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_clock),
+    .reset(output_chain_reset),
+    .io_d(output_chain_io_d),
+    .io_q(output_chain_io_q)
+  );
+  assign io_q = output_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign output_chain_clock = clock;
+  assign output_chain_reset = reset; // @[SynchronizerReg.scala 86:21]
+  assign output_chain_io_d = io_d; // @[SynchronizerReg.scala 87:41]
+endmodule
+module AsyncResetSynchronizerShiftReg_w1_d3_i0_1(
+  input   clock,
+  input   reset,
+  input   io_d,
+  output  io_q
+);
+  wire  output_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_reset; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_q; // @[ShiftReg.scala 45:23]
+  AsyncResetSynchronizerPrimitiveShiftReg_d3_i0 output_chain ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_clock),
+    .reset(output_chain_reset),
+    .io_d(output_chain_io_d),
+    .io_q(output_chain_io_q)
+  );
+  assign io_q = output_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign output_chain_clock = clock;
+  assign output_chain_reset = reset; // @[SynchronizerReg.scala 86:21]
+  assign output_chain_io_d = io_d; // @[SynchronizerReg.scala 87:41]
+endmodule
+module AsyncValidSync(
+  input   io_in,
+  output  io_out,
+  input   clock,
+  input   reset
+);
+  wire  io_out_source_valid_0_clock; // @[ShiftReg.scala 45:23]
+  wire  io_out_source_valid_0_reset; // @[ShiftReg.scala 45:23]
+  wire  io_out_source_valid_0_io_d; // @[ShiftReg.scala 45:23]
+  wire  io_out_source_valid_0_io_q; // @[ShiftReg.scala 45:23]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0_1 io_out_source_valid_0 ( // @[ShiftReg.scala 45:23]
+    .clock(io_out_source_valid_0_clock),
+    .reset(io_out_source_valid_0_reset),
+    .io_d(io_out_source_valid_0_io_d),
+    .io_q(io_out_source_valid_0_io_q)
+  );
+  assign io_out = io_out_source_valid_0_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign io_out_source_valid_0_clock = clock;
+  assign io_out_source_valid_0_reset = reset;
+  assign io_out_source_valid_0_io_d = io_in; // @[ShiftReg.scala 47:16]
+endmodule
+module AsyncQueueSource(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [1:0]  io_enq_bits_size,
+  input  [6:0]  io_enq_bits_source,
+  input  [28:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input  [31:0] io_enq_bits_data,
+  input         io_enq_bits_corrupt,
+  output [2:0]  io_async_mem_0_opcode,
+  output [2:0]  io_async_mem_0_param,
+  output [1:0]  io_async_mem_0_size,
+  output [6:0]  io_async_mem_0_source,
+  output [28:0] io_async_mem_0_address,
+  output [3:0]  io_async_mem_0_mask,
+  output [31:0] io_async_mem_0_data,
+  output        io_async_mem_0_corrupt,
+  input         io_async_ridx,
+  output        io_async_widx,
+  input         io_async_safe_ridx_valid,
+  output        io_async_safe_widx_valid,
+  output        io_async_safe_source_reset_n,
+  input         io_async_safe_sink_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  wire  ridx_ridx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  source_valid_0_io_in; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_io_out; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_clock; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_reset; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_1_io_in; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_io_out; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_clock; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_reset; // @[AsyncQueue.scala 101:32]
+  wire  sink_extend_io_in; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_io_out; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_clock; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_reset; // @[AsyncQueue.scala 103:30]
+  wire  sink_valid_io_in; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_io_out; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_clock; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_reset; // @[AsyncQueue.scala 104:30]
+  reg [2:0] mem_0_opcode; // @[AsyncQueue.scala 80:16]
+  reg [2:0] mem_0_param; // @[AsyncQueue.scala 80:16]
+  reg [1:0] mem_0_size; // @[AsyncQueue.scala 80:16]
+  reg [6:0] mem_0_source; // @[AsyncQueue.scala 80:16]
+  reg [28:0] mem_0_address; // @[AsyncQueue.scala 80:16]
+  reg [3:0] mem_0_mask; // @[AsyncQueue.scala 80:16]
+  reg [31:0] mem_0_data; // @[AsyncQueue.scala 80:16]
+  reg  mem_0_corrupt; // @[AsyncQueue.scala 80:16]
+  wire  _widx_T_1 = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  sink_ready = sink_valid_io_out;
+  wire  _widx_T_2 = ~sink_ready; // @[AsyncQueue.scala 81:79]
+  reg  widx_widx_bin; // @[AsyncQueue.scala 52:25]
+  wire  widx_incremented = _widx_T_2 ? 1'h0 : widx_widx_bin + _widx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  ridx = ridx_ridx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  reg  ready_reg; // @[AsyncQueue.scala 88:56]
+  reg  widx_gray; // @[AsyncQueue.scala 91:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 ridx_ridx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(ridx_ridx_gray_clock),
+    .reset(ridx_ridx_gray_reset),
+    .io_d(ridx_ridx_gray_io_d),
+    .io_q(ridx_ridx_gray_io_q)
+  );
+  AsyncValidSync source_valid_0 ( // @[AsyncQueue.scala 100:32]
+    .io_in(source_valid_0_io_in),
+    .io_out(source_valid_0_io_out),
+    .clock(source_valid_0_clock),
+    .reset(source_valid_0_reset)
+  );
+  AsyncValidSync source_valid_1 ( // @[AsyncQueue.scala 101:32]
+    .io_in(source_valid_1_io_in),
+    .io_out(source_valid_1_io_out),
+    .clock(source_valid_1_clock),
+    .reset(source_valid_1_reset)
+  );
+  AsyncValidSync sink_extend ( // @[AsyncQueue.scala 103:30]
+    .io_in(sink_extend_io_in),
+    .io_out(sink_extend_io_out),
+    .clock(sink_extend_clock),
+    .reset(sink_extend_reset)
+  );
+  AsyncValidSync sink_valid ( // @[AsyncQueue.scala 104:30]
+    .io_in(sink_valid_io_in),
+    .io_out(sink_valid_io_out),
+    .clock(sink_valid_clock),
+    .reset(sink_valid_reset)
+  );
+  assign io_enq_ready = ready_reg & sink_ready; // @[AsyncQueue.scala 89:29]
+  assign io_async_mem_0_opcode = mem_0_opcode; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_param = mem_0_param; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_size = mem_0_size; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_source = mem_0_source; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_address = mem_0_address; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_mask = mem_0_mask; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_data = mem_0_data; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_corrupt = mem_0_corrupt; // @[AsyncQueue.scala 96:31]
+  assign io_async_widx = widx_gray; // @[AsyncQueue.scala 92:17]
+  assign io_async_safe_widx_valid = source_valid_1_io_out; // @[AsyncQueue.scala 117:20]
+  assign io_async_safe_source_reset_n = ~reset; // @[AsyncQueue.scala 121:27]
+  assign ridx_ridx_gray_clock = clock;
+  assign ridx_ridx_gray_reset = reset;
+  assign ridx_ridx_gray_io_d = io_async_ridx; // @[ShiftReg.scala 47:16]
+  assign source_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 115:26]
+  assign source_valid_0_clock = clock; // @[AsyncQueue.scala 110:26]
+  assign source_valid_0_reset = reset | ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 105:65]
+  assign source_valid_1_io_in = source_valid_0_io_out; // @[AsyncQueue.scala 116:26]
+  assign source_valid_1_clock = clock; // @[AsyncQueue.scala 111:26]
+  assign source_valid_1_reset = reset | ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 106:65]
+  assign sink_extend_io_in = io_async_safe_ridx_valid; // @[AsyncQueue.scala 118:23]
+  assign sink_extend_clock = clock; // @[AsyncQueue.scala 112:26]
+  assign sink_extend_reset = reset | ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 107:65]
+  assign sink_valid_io_in = sink_extend_io_out; // @[AsyncQueue.scala 119:22]
+  assign sink_valid_clock = clock; // @[AsyncQueue.scala 113:26]
+  assign sink_valid_reset = reset; // @[AsyncQueue.scala 108:35]
+  always @(posedge clock) begin
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_opcode <= io_enq_bits_opcode; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_param <= io_enq_bits_param; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_size <= io_enq_bits_size; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_source <= io_enq_bits_source; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_address <= io_enq_bits_address; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_mask <= io_enq_bits_mask; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_data <= io_enq_bits_data; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_corrupt <= io_enq_bits_corrupt; // @[AsyncQueue.scala 86:37]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      widx_widx_bin <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_widx_bin <= 1'h0;
+    end else begin
+      widx_widx_bin <= widx_widx_bin + _widx_T_1;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 83:26]
+      ready_reg <= 1'h0;
+    end else begin
+      ready_reg <= sink_ready & widx_incremented != (ridx ^ 1'h1);
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      widx_gray <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_gray <= 1'h0;
+    end else begin
+      widx_gray <= widx_widx_bin + _widx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  mem_0_opcode = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  mem_0_param = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  mem_0_size = _RAND_2[1:0];
+  _RAND_3 = {1{`RANDOM}};
+  mem_0_source = _RAND_3[6:0];
+  _RAND_4 = {1{`RANDOM}};
+  mem_0_address = _RAND_4[28:0];
+  _RAND_5 = {1{`RANDOM}};
+  mem_0_mask = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  mem_0_data = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  mem_0_corrupt = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  widx_widx_bin = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  ready_reg = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  widx_gray = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    widx_widx_bin = 1'h0;
+  end
+  if (reset) begin
+    ready_reg = 1'h0;
+  end
+  if (reset) begin
+    widx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockCrossingReg_w49(
+  input         clock,
+  input  [48:0] io_d,
+  output [48:0] io_q,
+  input         io_en
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [63:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [48:0] cdc_reg; // @[Reg.scala 16:16]
+  assign io_q = cdc_reg; // @[SynchronizerReg.scala 202:8]
+  always @(posedge clock) begin
+    if (io_en) begin // @[Reg.scala 17:18]
+      cdc_reg <= io_d; // @[Reg.scala 17:22]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {2{`RANDOM}};
+  cdc_reg = _RAND_0[48:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncQueueSink(
+  input         clock,
+  input         reset,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [1:0]  io_deq_bits_param,
+  output [1:0]  io_deq_bits_size,
+  output [6:0]  io_deq_bits_source,
+  output        io_deq_bits_sink,
+  output        io_deq_bits_denied,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt,
+  input  [2:0]  io_async_mem_0_opcode,
+  input  [1:0]  io_async_mem_0_param,
+  input  [1:0]  io_async_mem_0_size,
+  input  [6:0]  io_async_mem_0_source,
+  input         io_async_mem_0_sink,
+  input         io_async_mem_0_denied,
+  input  [31:0] io_async_mem_0_data,
+  input         io_async_mem_0_corrupt,
+  output        io_async_ridx,
+  input         io_async_widx,
+  output        io_async_safe_ridx_valid,
+  input         io_async_safe_widx_valid,
+  input         io_async_safe_source_reset_n,
+  output        io_async_safe_sink_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  wire  widx_widx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  io_deq_bits_deq_bits_reg_clock; // @[SynchronizerReg.scala 207:25]
+  wire [48:0] io_deq_bits_deq_bits_reg_io_d; // @[SynchronizerReg.scala 207:25]
+  wire [48:0] io_deq_bits_deq_bits_reg_io_q; // @[SynchronizerReg.scala 207:25]
+  wire  io_deq_bits_deq_bits_reg_io_en; // @[SynchronizerReg.scala 207:25]
+  wire  sink_valid_0_io_in; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_io_out; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_clock; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_reset; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_1_io_in; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_io_out; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_clock; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_reset; // @[AsyncQueue.scala 169:33]
+  wire  source_extend_io_in; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_io_out; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_clock; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_reset; // @[AsyncQueue.scala 171:31]
+  wire  source_valid_io_in; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_io_out; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_clock; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_reset; // @[AsyncQueue.scala 172:31]
+  wire  _ridx_T_1 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  wire  source_ready = source_valid_io_out;
+  wire  _ridx_T_2 = ~source_ready; // @[AsyncQueue.scala 144:79]
+  reg  ridx_ridx_bin; // @[AsyncQueue.scala 52:25]
+  wire  ridx_incremented = _ridx_T_2 ? 1'h0 : ridx_ridx_bin + _ridx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  widx = widx_widx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [34:0] io_deq_bits_deq_bits_reg_io_d_lo = {io_async_mem_0_sink,io_async_mem_0_denied,io_async_mem_0_data,
+    io_async_mem_0_corrupt}; // @[SynchronizerReg.scala 209:24]
+  wire [13:0] io_deq_bits_deq_bits_reg_io_d_hi = {io_async_mem_0_opcode,io_async_mem_0_param,io_async_mem_0_size,
+    io_async_mem_0_source}; // @[SynchronizerReg.scala 209:24]
+  wire [48:0] _io_deq_bits_WIRE_1 = io_deq_bits_deq_bits_reg_io_q;
+  reg  valid_reg; // @[AsyncQueue.scala 161:56]
+  reg  ridx_gray; // @[AsyncQueue.scala 164:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 widx_widx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(widx_widx_gray_clock),
+    .reset(widx_widx_gray_reset),
+    .io_d(widx_widx_gray_io_d),
+    .io_q(widx_widx_gray_io_q)
+  );
+  ClockCrossingReg_w49 io_deq_bits_deq_bits_reg ( // @[SynchronizerReg.scala 207:25]
+    .clock(io_deq_bits_deq_bits_reg_clock),
+    .io_d(io_deq_bits_deq_bits_reg_io_d),
+    .io_q(io_deq_bits_deq_bits_reg_io_q),
+    .io_en(io_deq_bits_deq_bits_reg_io_en)
+  );
+  AsyncValidSync sink_valid_0 ( // @[AsyncQueue.scala 168:33]
+    .io_in(sink_valid_0_io_in),
+    .io_out(sink_valid_0_io_out),
+    .clock(sink_valid_0_clock),
+    .reset(sink_valid_0_reset)
+  );
+  AsyncValidSync sink_valid_1 ( // @[AsyncQueue.scala 169:33]
+    .io_in(sink_valid_1_io_in),
+    .io_out(sink_valid_1_io_out),
+    .clock(sink_valid_1_clock),
+    .reset(sink_valid_1_reset)
+  );
+  AsyncValidSync source_extend ( // @[AsyncQueue.scala 171:31]
+    .io_in(source_extend_io_in),
+    .io_out(source_extend_io_out),
+    .clock(source_extend_clock),
+    .reset(source_extend_reset)
+  );
+  AsyncValidSync source_valid ( // @[AsyncQueue.scala 172:31]
+    .io_in(source_valid_io_in),
+    .io_out(source_valid_io_out),
+    .clock(source_valid_clock),
+    .reset(source_valid_reset)
+  );
+  assign io_deq_valid = valid_reg & source_ready; // @[AsyncQueue.scala 162:29]
+  assign io_deq_bits_opcode = _io_deq_bits_WIRE_1[48:46]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_param = _io_deq_bits_WIRE_1[45:44]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_size = _io_deq_bits_WIRE_1[43:42]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_source = _io_deq_bits_WIRE_1[41:35]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_sink = _io_deq_bits_WIRE_1[34]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_denied = _io_deq_bits_WIRE_1[33]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_data = _io_deq_bits_WIRE_1[32:1]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_corrupt = _io_deq_bits_WIRE_1[0]; // @[SynchronizerReg.scala 211:26]
+  assign io_async_ridx = ridx_gray; // @[AsyncQueue.scala 165:17]
+  assign io_async_safe_ridx_valid = sink_valid_1_io_out; // @[AsyncQueue.scala 185:20]
+  assign io_async_safe_sink_reset_n = ~reset; // @[AsyncQueue.scala 189:25]
+  assign widx_widx_gray_clock = clock;
+  assign widx_widx_gray_reset = reset;
+  assign widx_widx_gray_io_d = io_async_widx; // @[ShiftReg.scala 47:16]
+  assign io_deq_bits_deq_bits_reg_clock = clock;
+  assign io_deq_bits_deq_bits_reg_io_d = {io_deq_bits_deq_bits_reg_io_d_hi,io_deq_bits_deq_bits_reg_io_d_lo}; // @[SynchronizerReg.scala 209:24]
+  assign io_deq_bits_deq_bits_reg_io_en = source_ready & ridx_incremented != widx; // @[AsyncQueue.scala 146:28]
+  assign sink_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 183:24]
+  assign sink_valid_0_clock = clock; // @[AsyncQueue.scala 178:25]
+  assign sink_valid_0_reset = reset | ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 173:66]
+  assign sink_valid_1_io_in = sink_valid_0_io_out; // @[AsyncQueue.scala 184:24]
+  assign sink_valid_1_clock = clock; // @[AsyncQueue.scala 179:25]
+  assign sink_valid_1_reset = reset | ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 174:66]
+  assign source_extend_io_in = io_async_safe_widx_valid; // @[AsyncQueue.scala 186:25]
+  assign source_extend_clock = clock; // @[AsyncQueue.scala 180:25]
+  assign source_extend_reset = reset | ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 175:66]
+  assign source_valid_io_in = source_extend_io_out; // @[AsyncQueue.scala 187:24]
+  assign source_valid_clock = clock; // @[AsyncQueue.scala 181:25]
+  assign source_valid_reset = reset; // @[AsyncQueue.scala 176:34]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      ridx_ridx_bin <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_ridx_bin <= 1'h0;
+    end else begin
+      ridx_ridx_bin <= ridx_ridx_bin + _ridx_T_1;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 146:28]
+      valid_reg <= 1'h0;
+    end else begin
+      valid_reg <= source_ready & ridx_incremented != widx;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      ridx_gray <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_gray <= 1'h0;
+    end else begin
+      ridx_gray <= ridx_ridx_bin + _ridx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ridx_ridx_bin = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  valid_reg = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ridx_gray = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    ridx_ridx_bin = 1'h0;
+  end
+  if (reset) begin
+    valid_reg = 1'h0;
+  end
+  if (reset) begin
+    ridx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLAsyncCrossingSource(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [1:0]  auto_in_a_bits_size,
+  input  [6:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [1:0]  auto_in_d_bits_size,
+  output [6:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  output [2:0]  auto_out_a_mem_0_opcode,
+  output [2:0]  auto_out_a_mem_0_param,
+  output [1:0]  auto_out_a_mem_0_size,
+  output [6:0]  auto_out_a_mem_0_source,
+  output [28:0] auto_out_a_mem_0_address,
+  output [3:0]  auto_out_a_mem_0_mask,
+  output [31:0] auto_out_a_mem_0_data,
+  output        auto_out_a_mem_0_corrupt,
+  input         auto_out_a_ridx,
+  output        auto_out_a_widx,
+  input         auto_out_a_safe_ridx_valid,
+  output        auto_out_a_safe_widx_valid,
+  output        auto_out_a_safe_source_reset_n,
+  input         auto_out_a_safe_sink_reset_n,
+  input  [2:0]  auto_out_d_mem_0_opcode,
+  input  [1:0]  auto_out_d_mem_0_param,
+  input  [1:0]  auto_out_d_mem_0_size,
+  input  [6:0]  auto_out_d_mem_0_source,
+  input         auto_out_d_mem_0_sink,
+  input         auto_out_d_mem_0_denied,
+  input  [31:0] auto_out_d_mem_0_data,
+  input         auto_out_d_mem_0_corrupt,
+  output        auto_out_d_ridx,
+  input         auto_out_d_widx,
+  output        auto_out_d_safe_ridx_valid,
+  input         auto_out_d_safe_widx_valid,
+  input         auto_out_d_safe_source_reset_n,
+  output        auto_out_d_safe_sink_reset_n
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_source_clock; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_reset; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_enq_ready; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_enq_valid; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleOut_0_a_source_io_enq_bits_opcode; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleOut_0_a_source_io_enq_bits_param; // @[AsyncQueue.scala 216:24]
+  wire [1:0] bundleOut_0_a_source_io_enq_bits_size; // @[AsyncQueue.scala 216:24]
+  wire [6:0] bundleOut_0_a_source_io_enq_bits_source; // @[AsyncQueue.scala 216:24]
+  wire [28:0] bundleOut_0_a_source_io_enq_bits_address; // @[AsyncQueue.scala 216:24]
+  wire [3:0] bundleOut_0_a_source_io_enq_bits_mask; // @[AsyncQueue.scala 216:24]
+  wire [31:0] bundleOut_0_a_source_io_enq_bits_data; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_enq_bits_corrupt; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleOut_0_a_source_io_async_mem_0_opcode; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleOut_0_a_source_io_async_mem_0_param; // @[AsyncQueue.scala 216:24]
+  wire [1:0] bundleOut_0_a_source_io_async_mem_0_size; // @[AsyncQueue.scala 216:24]
+  wire [6:0] bundleOut_0_a_source_io_async_mem_0_source; // @[AsyncQueue.scala 216:24]
+  wire [28:0] bundleOut_0_a_source_io_async_mem_0_address; // @[AsyncQueue.scala 216:24]
+  wire [3:0] bundleOut_0_a_source_io_async_mem_0_mask; // @[AsyncQueue.scala 216:24]
+  wire [31:0] bundleOut_0_a_source_io_async_mem_0_data; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_mem_0_corrupt; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_ridx; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_widx; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_safe_ridx_valid; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_safe_widx_valid; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_safe_source_reset_n; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_sink_clock; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_reset; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_ready; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_valid; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleIn_0_d_sink_io_deq_bits_opcode; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleIn_0_d_sink_io_deq_bits_param; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleIn_0_d_sink_io_deq_bits_size; // @[AsyncQueue.scala 207:22]
+  wire [6:0] bundleIn_0_d_sink_io_deq_bits_source; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_bits_sink; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_bits_denied; // @[AsyncQueue.scala 207:22]
+  wire [31:0] bundleIn_0_d_sink_io_deq_bits_data; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_bits_corrupt; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleIn_0_d_sink_io_async_mem_0_opcode; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleIn_0_d_sink_io_async_mem_0_param; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleIn_0_d_sink_io_async_mem_0_size; // @[AsyncQueue.scala 207:22]
+  wire [6:0] bundleIn_0_d_sink_io_async_mem_0_source; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_mem_0_sink; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_mem_0_denied; // @[AsyncQueue.scala 207:22]
+  wire [31:0] bundleIn_0_d_sink_io_async_mem_0_data; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_mem_0_corrupt; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_ridx; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_widx; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_safe_ridx_valid; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_safe_widx_valid; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_safe_source_reset_n; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 207:22]
+  TLMonitor_33 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  AsyncQueueSource bundleOut_0_a_source ( // @[AsyncQueue.scala 216:24]
+    .clock(bundleOut_0_a_source_clock),
+    .reset(bundleOut_0_a_source_reset),
+    .io_enq_ready(bundleOut_0_a_source_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_source_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_source_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_source_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_source_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_source_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_source_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_source_io_enq_bits_mask),
+    .io_enq_bits_data(bundleOut_0_a_source_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleOut_0_a_source_io_enq_bits_corrupt),
+    .io_async_mem_0_opcode(bundleOut_0_a_source_io_async_mem_0_opcode),
+    .io_async_mem_0_param(bundleOut_0_a_source_io_async_mem_0_param),
+    .io_async_mem_0_size(bundleOut_0_a_source_io_async_mem_0_size),
+    .io_async_mem_0_source(bundleOut_0_a_source_io_async_mem_0_source),
+    .io_async_mem_0_address(bundleOut_0_a_source_io_async_mem_0_address),
+    .io_async_mem_0_mask(bundleOut_0_a_source_io_async_mem_0_mask),
+    .io_async_mem_0_data(bundleOut_0_a_source_io_async_mem_0_data),
+    .io_async_mem_0_corrupt(bundleOut_0_a_source_io_async_mem_0_corrupt),
+    .io_async_ridx(bundleOut_0_a_source_io_async_ridx),
+    .io_async_widx(bundleOut_0_a_source_io_async_widx),
+    .io_async_safe_ridx_valid(bundleOut_0_a_source_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(bundleOut_0_a_source_io_async_safe_widx_valid),
+    .io_async_safe_source_reset_n(bundleOut_0_a_source_io_async_safe_source_reset_n),
+    .io_async_safe_sink_reset_n(bundleOut_0_a_source_io_async_safe_sink_reset_n)
+  );
+  AsyncQueueSink bundleIn_0_d_sink ( // @[AsyncQueue.scala 207:22]
+    .clock(bundleIn_0_d_sink_clock),
+    .reset(bundleIn_0_d_sink_reset),
+    .io_deq_ready(bundleIn_0_d_sink_io_deq_ready),
+    .io_deq_valid(bundleIn_0_d_sink_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_d_sink_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_d_sink_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_d_sink_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_d_sink_io_deq_bits_source),
+    .io_deq_bits_sink(bundleIn_0_d_sink_io_deq_bits_sink),
+    .io_deq_bits_denied(bundleIn_0_d_sink_io_deq_bits_denied),
+    .io_deq_bits_data(bundleIn_0_d_sink_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleIn_0_d_sink_io_deq_bits_corrupt),
+    .io_async_mem_0_opcode(bundleIn_0_d_sink_io_async_mem_0_opcode),
+    .io_async_mem_0_param(bundleIn_0_d_sink_io_async_mem_0_param),
+    .io_async_mem_0_size(bundleIn_0_d_sink_io_async_mem_0_size),
+    .io_async_mem_0_source(bundleIn_0_d_sink_io_async_mem_0_source),
+    .io_async_mem_0_sink(bundleIn_0_d_sink_io_async_mem_0_sink),
+    .io_async_mem_0_denied(bundleIn_0_d_sink_io_async_mem_0_denied),
+    .io_async_mem_0_data(bundleIn_0_d_sink_io_async_mem_0_data),
+    .io_async_mem_0_corrupt(bundleIn_0_d_sink_io_async_mem_0_corrupt),
+    .io_async_ridx(bundleIn_0_d_sink_io_async_ridx),
+    .io_async_widx(bundleIn_0_d_sink_io_async_widx),
+    .io_async_safe_ridx_valid(bundleIn_0_d_sink_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(bundleIn_0_d_sink_io_async_safe_widx_valid),
+    .io_async_safe_source_reset_n(bundleIn_0_d_sink_io_async_safe_source_reset_n),
+    .io_async_safe_sink_reset_n(bundleIn_0_d_sink_io_async_safe_sink_reset_n)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_source_io_enq_ready; // @[Nodes.scala 1210:84 AsyncQueue.scala 217:19]
+  assign auto_in_d_valid = bundleIn_0_d_sink_io_deq_valid; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_opcode = bundleIn_0_d_sink_io_deq_bits_opcode; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_param = bundleIn_0_d_sink_io_deq_bits_param; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_size = bundleIn_0_d_sink_io_deq_bits_size; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_source = bundleIn_0_d_sink_io_deq_bits_source; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_sink = bundleIn_0_d_sink_io_deq_bits_sink; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_denied = bundleIn_0_d_sink_io_deq_bits_denied; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_data = bundleIn_0_d_sink_io_deq_bits_data; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_corrupt = bundleIn_0_d_sink_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_out_a_mem_0_opcode = bundleOut_0_a_source_io_async_mem_0_opcode; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_param = bundleOut_0_a_source_io_async_mem_0_param; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_size = bundleOut_0_a_source_io_async_mem_0_size; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_source = bundleOut_0_a_source_io_async_mem_0_source; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_address = bundleOut_0_a_source_io_async_mem_0_address; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_mask = bundleOut_0_a_source_io_async_mem_0_mask; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_data = bundleOut_0_a_source_io_async_mem_0_data; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_corrupt = bundleOut_0_a_source_io_async_mem_0_corrupt; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_widx = bundleOut_0_a_source_io_async_widx; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_safe_widx_valid = bundleOut_0_a_source_io_async_safe_widx_valid; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_safe_source_reset_n = bundleOut_0_a_source_io_async_safe_source_reset_n; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_d_ridx = bundleIn_0_d_sink_io_async_ridx; // @[Nodes.scala 1207:84 AsyncQueue.scala 208:19]
+  assign auto_out_d_safe_ridx_valid = bundleIn_0_d_sink_io_async_safe_ridx_valid; // @[Nodes.scala 1207:84 AsyncQueue.scala 208:19]
+  assign auto_out_d_safe_sink_reset_n = bundleIn_0_d_sink_io_async_safe_sink_reset_n; // @[Nodes.scala 1207:84 AsyncQueue.scala 208:19]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_source_io_enq_ready; // @[Nodes.scala 1210:84 AsyncQueue.scala 217:19]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = bundleIn_0_d_sink_io_deq_valid; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_opcode = bundleIn_0_d_sink_io_deq_bits_opcode; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_param = bundleIn_0_d_sink_io_deq_bits_param; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_size = bundleIn_0_d_sink_io_deq_bits_size; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_source = bundleIn_0_d_sink_io_deq_bits_source; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_sink = bundleIn_0_d_sink_io_deq_bits_sink; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_denied = bundleIn_0_d_sink_io_deq_bits_denied; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_corrupt = bundleIn_0_d_sink_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign bundleOut_0_a_source_clock = clock;
+  assign bundleOut_0_a_source_reset = reset;
+  assign bundleOut_0_a_source_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_async_ridx = auto_out_a_ridx; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleOut_0_a_source_io_async_safe_ridx_valid = auto_out_a_safe_ridx_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleOut_0_a_source_io_async_safe_sink_reset_n = auto_out_a_safe_sink_reset_n; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_clock = clock;
+  assign bundleIn_0_d_sink_reset = reset;
+  assign bundleIn_0_d_sink_io_deq_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_d_sink_io_async_mem_0_opcode = auto_out_d_mem_0_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_param = auto_out_d_mem_0_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_size = auto_out_d_mem_0_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_source = auto_out_d_mem_0_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_sink = auto_out_d_mem_0_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_denied = auto_out_d_mem_0_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_data = auto_out_d_mem_0_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_corrupt = auto_out_d_mem_0_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_widx = auto_out_d_widx; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_safe_widx_valid = auto_out_d_safe_widx_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_safe_source_reset_n = auto_out_d_safe_source_reset_n; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_34(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input         io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{23'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_45 = io_in_a_bits_address ^ 29'h10000000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_48 = $signed(_T_46) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_245 = source_ok & _T_200; // @[Monitor.scala 115:71]
+  wire  _T_263 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_299 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_300 = io_in_a_bits_mask & _T_299; // @[Monitor.scala 127:31]
+  wire  _T_301 = _T_300 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_305 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_334 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_342 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_371 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_379 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_408 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_420 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_424 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_428 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_432 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_436 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_440 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_444 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_455 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_459 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_472 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_492 = _T_440 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_501 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_518 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_536 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_566 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_567 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_571 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_575 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_579 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_583 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_590 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_591 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_595 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_599 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_603 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_607 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_611 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_617 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_620 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_622 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_624 = ~_T_622[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_628 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_630 = ~_T_424; // @[Monitor.scala 671:74]
+  wire  _T_631 = io_in_d_valid & d_first_1 & ~_T_424; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 & _T_630 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 & _T_630 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_617 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_641 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_643 = _T_641[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_648 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_649 = io_in_d_bits_opcode == _GEN_32 | _T_648; // @[Monitor.scala 685:77]
+  wire  _T_653 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_660 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_661 = io_in_d_bits_opcode == _GEN_48 | _T_660; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_665 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_675 = _T_628 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_630; // @[Monitor.scala 694:116]
+  wire  _T_677 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_15[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_21[2:0];
+  wire  _T_684 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_693 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_424; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_424 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_68 = _d_first_T & d_first_2 & _T_424 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire [2:0] _T_727 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_737 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2:0] d_clr_1 = _GEN_67[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_68[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_762 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_245 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_263 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_263 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_334 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_334) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_305 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_305 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_371 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_371) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_342 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_342 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_408 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_408) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_379 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_379 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_420 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_420) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_432 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_432) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_436 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_436) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_440 & (io_in_d_valid & _T_424 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_424 & _T_2 & ~_T_440) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_455 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_455) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_459 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_459) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_436 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_436) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_440 & (io_in_d_valid & _T_444 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_444 & _T_2 & ~_T_440) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_428 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_428) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_455 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_455) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_459 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_459) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_492 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_492) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_440 & (io_in_d_valid & _T_472 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_472 & _T_2 & ~_T_440) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_432 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~_T_432) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_436 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~_T_436) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_440 & (io_in_d_valid & _T_501 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_501 & _T_2 & ~_T_440) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_432 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~_T_432) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_492 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~_T_492) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_440 & (io_in_d_valid & _T_518 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_518 & _T_2 & ~_T_440) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_432 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~_T_432) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_436 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~_T_436) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_440 & (io_in_d_valid & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_536 & _T_2 & ~_T_440) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_567 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_567) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_579 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_579) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_583 & (_T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_566 & ~reset & ~_T_583) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_591 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_591) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_595 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_595) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_599 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_603 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_603) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_607 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_607) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_611 & (_T_590 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & _T_2 & ~_T_611) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_620 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_620 & ~reset & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_653 & (_T_631 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & same_cycle_resp & _T_2 & ~_T_653) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (_T_631 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & ~same_cycle_resp & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_677 & (_T_675 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_675 & _T_2 & ~_T_677) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_684 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_684) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 4 (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_693 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_693) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727[0] & (_T_719 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_719 & _T_2 & ~_T_727[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_737 & (_T_719 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_719 & _T_2 & ~_T_737) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_762 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_762) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at MockAONPeriphery.scala:22:84)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[11:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[3:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[11:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[3:0];
+  _RAND_22 = {1{`RANDOM}};
+  watchdog_1 = _RAND_22[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_18(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [28:0] _GEN_11 = {{23'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_34 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  Repeater repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign monitor_io_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_24(
+  input         clock,
+  input         reset,
+  output [2:0]  auto_asource_out_a_mem_0_opcode,
+  output [2:0]  auto_asource_out_a_mem_0_param,
+  output [1:0]  auto_asource_out_a_mem_0_size,
+  output [6:0]  auto_asource_out_a_mem_0_source,
+  output [28:0] auto_asource_out_a_mem_0_address,
+  output [3:0]  auto_asource_out_a_mem_0_mask,
+  output [31:0] auto_asource_out_a_mem_0_data,
+  output        auto_asource_out_a_mem_0_corrupt,
+  input         auto_asource_out_a_ridx,
+  output        auto_asource_out_a_widx,
+  input         auto_asource_out_a_safe_ridx_valid,
+  output        auto_asource_out_a_safe_widx_valid,
+  output        auto_asource_out_a_safe_source_reset_n,
+  input         auto_asource_out_a_safe_sink_reset_n,
+  input  [2:0]  auto_asource_out_d_mem_0_opcode,
+  input  [1:0]  auto_asource_out_d_mem_0_param,
+  input  [1:0]  auto_asource_out_d_mem_0_size,
+  input  [6:0]  auto_asource_out_d_mem_0_source,
+  input         auto_asource_out_d_mem_0_sink,
+  input         auto_asource_out_d_mem_0_denied,
+  input  [31:0] auto_asource_out_d_mem_0_data,
+  input         auto_asource_out_d_mem_0_corrupt,
+  output        auto_asource_out_d_ridx,
+  input         auto_asource_out_d_widx,
+  output        auto_asource_out_d_safe_ridx_valid,
+  input         auto_asource_out_d_safe_widx_valid,
+  input         auto_asource_out_d_safe_source_reset_n,
+  output        auto_asource_out_d_safe_sink_reset_n,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [1:0]  auto_tl_in_d_bits_param,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output        auto_tl_in_d_bits_sink,
+  output        auto_tl_in_d_bits_denied,
+  output [31:0] auto_tl_in_d_bits_data,
+  output        auto_tl_in_d_bits_corrupt
+);
+  wire  asource_clock; // @[AsyncCrossing.scala 87:29]
+  wire  asource_reset; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_a_ready; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_a_valid; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_in_a_bits_opcode; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_in_a_bits_param; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_in_a_bits_size; // @[AsyncCrossing.scala 87:29]
+  wire [6:0] asource_auto_in_a_bits_source; // @[AsyncCrossing.scala 87:29]
+  wire [28:0] asource_auto_in_a_bits_address; // @[AsyncCrossing.scala 87:29]
+  wire [3:0] asource_auto_in_a_bits_mask; // @[AsyncCrossing.scala 87:29]
+  wire [31:0] asource_auto_in_a_bits_data; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_a_bits_corrupt; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_ready; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_valid; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_in_d_bits_opcode; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_in_d_bits_param; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_in_d_bits_size; // @[AsyncCrossing.scala 87:29]
+  wire [6:0] asource_auto_in_d_bits_source; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_bits_sink; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_bits_denied; // @[AsyncCrossing.scala 87:29]
+  wire [31:0] asource_auto_in_d_bits_data; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_bits_corrupt; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_out_a_mem_0_opcode; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_out_a_mem_0_param; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_out_a_mem_0_size; // @[AsyncCrossing.scala 87:29]
+  wire [6:0] asource_auto_out_a_mem_0_source; // @[AsyncCrossing.scala 87:29]
+  wire [28:0] asource_auto_out_a_mem_0_address; // @[AsyncCrossing.scala 87:29]
+  wire [3:0] asource_auto_out_a_mem_0_mask; // @[AsyncCrossing.scala 87:29]
+  wire [31:0] asource_auto_out_a_mem_0_data; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_mem_0_corrupt; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_ridx; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_widx; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_safe_ridx_valid; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_safe_widx_valid; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_safe_source_reset_n; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_safe_sink_reset_n; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_out_d_mem_0_opcode; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_out_d_mem_0_param; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_out_d_mem_0_size; // @[AsyncCrossing.scala 87:29]
+  wire [6:0] asource_auto_out_d_mem_0_source; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_mem_0_sink; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_mem_0_denied; // @[AsyncCrossing.scala 87:29]
+  wire [31:0] asource_auto_out_d_mem_0_data; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_mem_0_corrupt; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_ridx; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_widx; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_safe_ridx_valid; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_safe_widx_valid; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_safe_source_reset_n; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_safe_sink_reset_n; // @[AsyncCrossing.scala 87:29]
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_bits_sink; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_bits_denied; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [28:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_bits_sink; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_bits_denied; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_bits_corrupt; // @[Fragmenter.scala 333:34]
+  TLAsyncCrossingSource asource ( // @[AsyncCrossing.scala 87:29]
+    .clock(asource_clock),
+    .reset(asource_reset),
+    .auto_in_a_ready(asource_auto_in_a_ready),
+    .auto_in_a_valid(asource_auto_in_a_valid),
+    .auto_in_a_bits_opcode(asource_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(asource_auto_in_a_bits_param),
+    .auto_in_a_bits_size(asource_auto_in_a_bits_size),
+    .auto_in_a_bits_source(asource_auto_in_a_bits_source),
+    .auto_in_a_bits_address(asource_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(asource_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(asource_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(asource_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(asource_auto_in_d_ready),
+    .auto_in_d_valid(asource_auto_in_d_valid),
+    .auto_in_d_bits_opcode(asource_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(asource_auto_in_d_bits_param),
+    .auto_in_d_bits_size(asource_auto_in_d_bits_size),
+    .auto_in_d_bits_source(asource_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(asource_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(asource_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(asource_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(asource_auto_in_d_bits_corrupt),
+    .auto_out_a_mem_0_opcode(asource_auto_out_a_mem_0_opcode),
+    .auto_out_a_mem_0_param(asource_auto_out_a_mem_0_param),
+    .auto_out_a_mem_0_size(asource_auto_out_a_mem_0_size),
+    .auto_out_a_mem_0_source(asource_auto_out_a_mem_0_source),
+    .auto_out_a_mem_0_address(asource_auto_out_a_mem_0_address),
+    .auto_out_a_mem_0_mask(asource_auto_out_a_mem_0_mask),
+    .auto_out_a_mem_0_data(asource_auto_out_a_mem_0_data),
+    .auto_out_a_mem_0_corrupt(asource_auto_out_a_mem_0_corrupt),
+    .auto_out_a_ridx(asource_auto_out_a_ridx),
+    .auto_out_a_widx(asource_auto_out_a_widx),
+    .auto_out_a_safe_ridx_valid(asource_auto_out_a_safe_ridx_valid),
+    .auto_out_a_safe_widx_valid(asource_auto_out_a_safe_widx_valid),
+    .auto_out_a_safe_source_reset_n(asource_auto_out_a_safe_source_reset_n),
+    .auto_out_a_safe_sink_reset_n(asource_auto_out_a_safe_sink_reset_n),
+    .auto_out_d_mem_0_opcode(asource_auto_out_d_mem_0_opcode),
+    .auto_out_d_mem_0_param(asource_auto_out_d_mem_0_param),
+    .auto_out_d_mem_0_size(asource_auto_out_d_mem_0_size),
+    .auto_out_d_mem_0_source(asource_auto_out_d_mem_0_source),
+    .auto_out_d_mem_0_sink(asource_auto_out_d_mem_0_sink),
+    .auto_out_d_mem_0_denied(asource_auto_out_d_mem_0_denied),
+    .auto_out_d_mem_0_data(asource_auto_out_d_mem_0_data),
+    .auto_out_d_mem_0_corrupt(asource_auto_out_d_mem_0_corrupt),
+    .auto_out_d_ridx(asource_auto_out_d_ridx),
+    .auto_out_d_widx(asource_auto_out_d_widx),
+    .auto_out_d_safe_ridx_valid(asource_auto_out_d_safe_ridx_valid),
+    .auto_out_d_safe_widx_valid(asource_auto_out_d_safe_widx_valid),
+    .auto_out_d_safe_source_reset_n(asource_auto_out_d_safe_source_reset_n),
+    .auto_out_d_safe_sink_reset_n(asource_auto_out_d_safe_sink_reset_n)
+  );
+  TLFragmenter_18 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(fragmenter_auto_in_d_bits_param),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(fragmenter_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(fragmenter_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(fragmenter_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(fragmenter_auto_out_d_bits_param),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(fragmenter_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(fragmenter_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(fragmenter_auto_out_d_bits_corrupt)
+  );
+  assign auto_asource_out_a_mem_0_opcode = asource_auto_out_a_mem_0_opcode; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_param = asource_auto_out_a_mem_0_param; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_size = asource_auto_out_a_mem_0_size; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_source = asource_auto_out_a_mem_0_source; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_address = asource_auto_out_a_mem_0_address; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_mask = asource_auto_out_a_mem_0_mask; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_data = asource_auto_out_a_mem_0_data; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_corrupt = asource_auto_out_a_mem_0_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_widx = asource_auto_out_a_widx; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_safe_widx_valid = asource_auto_out_a_safe_widx_valid; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_safe_source_reset_n = asource_auto_out_a_safe_source_reset_n; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_d_ridx = asource_auto_out_d_ridx; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_d_safe_ridx_valid = asource_auto_out_d_safe_ridx_valid; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_d_safe_sink_reset_n = asource_auto_out_d_safe_sink_reset_n; // @[LazyModule.scala 311:12]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_param = fragmenter_auto_in_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_sink = fragmenter_auto_in_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_denied = fragmenter_auto_in_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_corrupt = fragmenter_auto_in_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign asource_clock = clock;
+  assign asource_reset = reset;
+  assign asource_auto_in_a_valid = fragmenter_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_a_bits_param = fragmenter_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_a_bits_size = fragmenter_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_a_bits_source = fragmenter_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_a_bits_address = fragmenter_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_a_bits_data = fragmenter_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign asource_auto_in_d_ready = fragmenter_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign asource_auto_out_a_ridx = auto_asource_out_a_ridx; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_a_safe_ridx_valid = auto_asource_out_a_safe_ridx_valid; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_a_safe_sink_reset_n = auto_asource_out_a_safe_sink_reset_n; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_opcode = auto_asource_out_d_mem_0_opcode; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_param = auto_asource_out_d_mem_0_param; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_size = auto_asource_out_d_mem_0_size; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_source = auto_asource_out_d_mem_0_source; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_sink = auto_asource_out_d_mem_0_sink; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_denied = auto_asource_out_d_mem_0_denied; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_data = auto_asource_out_d_mem_0_data; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_corrupt = auto_asource_out_d_mem_0_corrupt; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_widx = auto_asource_out_d_widx; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_safe_widx_valid = auto_asource_out_d_safe_widx_valid; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_safe_source_reset_n = auto_asource_out_d_safe_source_reset_n; // @[LazyModule.scala 311:12]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = asource_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_valid = asource_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_opcode = asource_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_param = asource_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_size = asource_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_source = asource_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_sink = asource_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_denied = asource_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_data = asource_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_corrupt = asource_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+endmodule
+module TLMonitor_35(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [16:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [16:0] _GEN_71 = {{11'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [16:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 17'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [16:0] _T_45 = io_in_a_bits_address ^ 17'h10000; // @[Parameters.scala 137:31]
+  wire [17:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [17:0] _T_48 = $signed(_T_46) & -18'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 18'sh0; // @[Parameters.scala 137:67]
+  wire  _T_59 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_60 = _source_ok_T & _T_59; // @[Mux.scala 27:73]
+  wire  _T_76 = _T_60 & _T_49; // @[Monitor.scala 83:78]
+  wire  _T_90 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_94 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_95 = _T_94 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_99 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_103 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_164 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_177 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_192 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_200 = _T_192 & _T_49; // @[Parameters.scala 670:56]
+  wire  _T_211 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_215 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_223 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_260 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_293 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_294 = io_in_a_bits_mask & _T_293; // @[Monitor.scala 127:31]
+  wire  _T_295 = _T_294 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_299 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_328 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_336 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_365 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_373 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_402 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [16:0] address; // @[Monitor.scala 388:22]
+  wire  _T_560 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_561 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_565 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_569 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_573 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_577 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_584 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_593 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_597 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_611 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_614 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_616 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_618 = ~_T_616[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_622 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_611 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_635 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_637 = _T_635[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_642 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_643 = 3'h1 == _GEN_32 | _T_642; // @[Monitor.scala 685:77]
+  wire  _T_647 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_654 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_655 = 3'h1 == _GEN_48 | _T_654; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_659 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_667 = _T_622 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_671 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set = _GEN_16[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_22[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_19[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_23[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_20[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_680 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 4'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= d_first_beats1_decode;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 4'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= d_first_beats1_decode;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_76 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_76) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_90 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_90) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_164 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_164) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_95 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_95) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_103 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_103 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_200 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_177 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_177 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_223 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_223 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_211 & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~_T_211) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_295 & (io_in_a_valid & _T_260 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_260 & ~reset & ~_T_295) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_328 & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~_T_328) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_299 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_299 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_365 & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~_T_365) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_336 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_336 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_215 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_215) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_99 & (io_in_a_valid & _T_373 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_373 & ~reset & ~_T_99) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_561 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_561) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_569 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_569) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_560 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & ~reset & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_593 & (_T_584 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_584 & _T_2 & ~_T_593) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BootROM.scala:84:68)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_597 & (_T_584 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_584 & _T_2 & ~_T_597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at BootROM.scala:84:68)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_618 & (_T_614 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_614 & ~reset & ~_T_618) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_637 & (_T_622 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & _T_2 & ~_T_637) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BootROM.scala:84:68)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_643 & (_T_622 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & same_cycle_resp & _T_2 & ~_T_643) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BootROM.scala:84:68)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_647 & (_T_622 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & same_cycle_resp & _T_2 & ~_T_647) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BootROM.scala:84:68)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_655 & (_T_622 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & ~same_cycle_resp & _T_2 & ~_T_655) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BootROM.scala:84:68)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_659 & (_T_622 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & ~same_cycle_resp & _T_2 & ~_T_659) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BootROM.scala:84:68)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_671 & (_T_667 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_667 & _T_2 & ~_T_671) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_680 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_680) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BootROM.scala:84:68)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[16:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[11:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[11:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[3:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  watchdog = _RAND_14[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater_20(
+  input         clock,
+  input         reset,
+  input         io_repeat,
+  output        io_full,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [16:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [16:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg  full; // @[Repeater.scala 19:21]
+  reg [2:0] saved_opcode; // @[Repeater.scala 20:18]
+  reg [2:0] saved_param; // @[Repeater.scala 20:18]
+  reg [2:0] saved_size; // @[Repeater.scala 20:18]
+  reg [1:0] saved_source; // @[Repeater.scala 20:18]
+  reg [16:0] saved_address; // @[Repeater.scala 20:18]
+  reg [3:0] saved_mask; // @[Repeater.scala 20:18]
+  reg  saved_corrupt; // @[Repeater.scala 20:18]
+  wire  _T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = _T & io_repeat | full; // @[Repeater.scala 19:21 28:{38,45}]
+  wire  _T_2 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign io_full = full; // @[Repeater.scala 26:11]
+  assign io_enq_ready = io_deq_ready & ~full; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid | full; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = full ? saved_opcode : io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = full ? saved_param : io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = full ? saved_size : io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = full ? saved_source : io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = full ? saved_address : io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = full ? saved_mask : io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_corrupt = full ? saved_corrupt : io_enq_bits_corrupt; // @[Repeater.scala 25:21]
+  always @(posedge clock) begin
+    if (reset) begin // @[Repeater.scala 19:21]
+      full <= 1'h0; // @[Repeater.scala 19:21]
+    end else if (_T_2 & ~io_repeat) begin // @[Repeater.scala 29:38]
+      full <= 1'h0; // @[Repeater.scala 29:45]
+    end else begin
+      full <= _GEN_0;
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_opcode <= io_enq_bits_opcode; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_param <= io_enq_bits_param; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_size <= io_enq_bits_size; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_source <= io_enq_bits_source; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_address <= io_enq_bits_address; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_mask <= io_enq_bits_mask; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_corrupt <= io_enq_bits_corrupt; // @[Repeater.scala 28:62]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  full = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  saved_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  saved_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  saved_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  saved_source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[16:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  saved_corrupt = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_19(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [16:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [16:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [16:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [16:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [16:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  _T_7 = auto_in_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _acknum_T_1 = acknum - 4'h1; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_9 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_9; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [16:0] _GEN_10 = {{11'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_35 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_20 repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,new_gennum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_10; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[6:5]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = new_gennum != 4'h0; // @[Fragmenter.scala 302:53]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_25(
+  input         clock,
+  input         reset,
+  input         auto_fragmenter_out_a_ready,
+  output        auto_fragmenter_out_a_valid,
+  output [2:0]  auto_fragmenter_out_a_bits_opcode,
+  output [2:0]  auto_fragmenter_out_a_bits_param,
+  output [1:0]  auto_fragmenter_out_a_bits_size,
+  output [6:0]  auto_fragmenter_out_a_bits_source,
+  output [16:0] auto_fragmenter_out_a_bits_address,
+  output [3:0]  auto_fragmenter_out_a_bits_mask,
+  output        auto_fragmenter_out_a_bits_corrupt,
+  output        auto_fragmenter_out_d_ready,
+  input         auto_fragmenter_out_d_valid,
+  input  [1:0]  auto_fragmenter_out_d_bits_size,
+  input  [6:0]  auto_fragmenter_out_d_bits_source,
+  input  [31:0] auto_fragmenter_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [1:0]  auto_tl_in_a_bits_source,
+  input  [16:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [1:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [16:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [16:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [6:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  TLFragmenter_19 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  assign auto_fragmenter_out_a_valid = fragmenter_auto_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_fragmenter_out_d_ready = fragmenter_auto_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_tl_in_a_ready = fragmenter_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = fragmenter_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = fragmenter_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = fragmenter_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = fragmenter_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign fragmenter_auto_out_a_ready = auto_fragmenter_out_a_ready; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_fragmenter_out_d_valid; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 311:12]
+endmodule
+module PeripheryBus_1(
+  input         auto_coupler_to_bootrom_fragmenter_out_a_ready,
+  output        auto_coupler_to_bootrom_fragmenter_out_a_valid,
+  output [2:0]  auto_coupler_to_bootrom_fragmenter_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_bootrom_fragmenter_out_a_bits_param,
+  output [1:0]  auto_coupler_to_bootrom_fragmenter_out_a_bits_size,
+  output [6:0]  auto_coupler_to_bootrom_fragmenter_out_a_bits_source,
+  output [16:0] auto_coupler_to_bootrom_fragmenter_out_a_bits_address,
+  output [3:0]  auto_coupler_to_bootrom_fragmenter_out_a_bits_mask,
+  output        auto_coupler_to_bootrom_fragmenter_out_a_bits_corrupt,
+  output        auto_coupler_to_bootrom_fragmenter_out_d_ready,
+  input         auto_coupler_to_bootrom_fragmenter_out_d_valid,
+  input  [1:0]  auto_coupler_to_bootrom_fragmenter_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_bootrom_fragmenter_out_d_bits_source,
+  input  [31:0] auto_coupler_to_bootrom_fragmenter_out_d_bits_data,
+  output [2:0]  auto_coupler_to_aon_asource_out_a_mem_0_opcode,
+  output [2:0]  auto_coupler_to_aon_asource_out_a_mem_0_param,
+  output [1:0]  auto_coupler_to_aon_asource_out_a_mem_0_size,
+  output [6:0]  auto_coupler_to_aon_asource_out_a_mem_0_source,
+  output [28:0] auto_coupler_to_aon_asource_out_a_mem_0_address,
+  output [3:0]  auto_coupler_to_aon_asource_out_a_mem_0_mask,
+  output [31:0] auto_coupler_to_aon_asource_out_a_mem_0_data,
+  output        auto_coupler_to_aon_asource_out_a_mem_0_corrupt,
+  input         auto_coupler_to_aon_asource_out_a_ridx,
+  output        auto_coupler_to_aon_asource_out_a_widx,
+  input         auto_coupler_to_aon_asource_out_a_safe_ridx_valid,
+  output        auto_coupler_to_aon_asource_out_a_safe_widx_valid,
+  output        auto_coupler_to_aon_asource_out_a_safe_source_reset_n,
+  input         auto_coupler_to_aon_asource_out_a_safe_sink_reset_n,
+  input  [2:0]  auto_coupler_to_aon_asource_out_d_mem_0_opcode,
+  input  [1:0]  auto_coupler_to_aon_asource_out_d_mem_0_param,
+  input  [1:0]  auto_coupler_to_aon_asource_out_d_mem_0_size,
+  input  [6:0]  auto_coupler_to_aon_asource_out_d_mem_0_source,
+  input         auto_coupler_to_aon_asource_out_d_mem_0_sink,
+  input         auto_coupler_to_aon_asource_out_d_mem_0_denied,
+  input  [31:0] auto_coupler_to_aon_asource_out_d_mem_0_data,
+  input         auto_coupler_to_aon_asource_out_d_mem_0_corrupt,
+  output        auto_coupler_to_aon_asource_out_d_ridx,
+  input         auto_coupler_to_aon_asource_out_d_widx,
+  output        auto_coupler_to_aon_asource_out_d_safe_ridx_valid,
+  input         auto_coupler_to_aon_asource_out_d_safe_widx_valid,
+  input         auto_coupler_to_aon_asource_out_d_safe_source_reset_n,
+  output        auto_coupler_to_aon_asource_out_d_safe_sink_reset_n,
+  input         auto_coupler_to_tile_tl_slave_clock_xing_out_a_ready,
+  output        auto_coupler_to_tile_tl_slave_clock_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_param,
+  output [2:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_size,
+  output [1:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_source,
+  output [27:0] auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_data,
+  output        auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_tile_tl_slave_clock_xing_out_d_ready,
+  input         auto_coupler_to_tile_tl_slave_clock_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_param,
+  input  [2:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_size,
+  input  [1:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_source,
+  input         auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_sink,
+  input         auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_denied,
+  input  [31:0] auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_data,
+  input         auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_corrupt,
+  input         auto_coupler_to_debug_fragmenter_out_a_ready,
+  output        auto_coupler_to_debug_fragmenter_out_a_valid,
+  output [2:0]  auto_coupler_to_debug_fragmenter_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_debug_fragmenter_out_a_bits_param,
+  output [1:0]  auto_coupler_to_debug_fragmenter_out_a_bits_size,
+  output [6:0]  auto_coupler_to_debug_fragmenter_out_a_bits_source,
+  output [11:0] auto_coupler_to_debug_fragmenter_out_a_bits_address,
+  output [3:0]  auto_coupler_to_debug_fragmenter_out_a_bits_mask,
+  output [31:0] auto_coupler_to_debug_fragmenter_out_a_bits_data,
+  output        auto_coupler_to_debug_fragmenter_out_a_bits_corrupt,
+  output        auto_coupler_to_debug_fragmenter_out_d_ready,
+  input         auto_coupler_to_debug_fragmenter_out_d_valid,
+  input  [2:0]  auto_coupler_to_debug_fragmenter_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_debug_fragmenter_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_debug_fragmenter_out_d_bits_source,
+  input  [31:0] auto_coupler_to_debug_fragmenter_out_d_bits_data,
+  input         auto_coupler_to_clint_fragmenter_out_a_ready,
+  output        auto_coupler_to_clint_fragmenter_out_a_valid,
+  output [2:0]  auto_coupler_to_clint_fragmenter_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_clint_fragmenter_out_a_bits_param,
+  output [1:0]  auto_coupler_to_clint_fragmenter_out_a_bits_size,
+  output [6:0]  auto_coupler_to_clint_fragmenter_out_a_bits_source,
+  output [25:0] auto_coupler_to_clint_fragmenter_out_a_bits_address,
+  output [3:0]  auto_coupler_to_clint_fragmenter_out_a_bits_mask,
+  output [31:0] auto_coupler_to_clint_fragmenter_out_a_bits_data,
+  output        auto_coupler_to_clint_fragmenter_out_a_bits_corrupt,
+  output        auto_coupler_to_clint_fragmenter_out_d_ready,
+  input         auto_coupler_to_clint_fragmenter_out_d_valid,
+  input  [2:0]  auto_coupler_to_clint_fragmenter_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_clint_fragmenter_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_clint_fragmenter_out_d_bits_source,
+  input  [31:0] auto_coupler_to_clint_fragmenter_out_d_bits_data,
+  input         auto_coupler_to_plic_fragmenter_out_a_ready,
+  output        auto_coupler_to_plic_fragmenter_out_a_valid,
+  output [2:0]  auto_coupler_to_plic_fragmenter_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_plic_fragmenter_out_a_bits_param,
+  output [1:0]  auto_coupler_to_plic_fragmenter_out_a_bits_size,
+  output [6:0]  auto_coupler_to_plic_fragmenter_out_a_bits_source,
+  output [27:0] auto_coupler_to_plic_fragmenter_out_a_bits_address,
+  output [3:0]  auto_coupler_to_plic_fragmenter_out_a_bits_mask,
+  output [31:0] auto_coupler_to_plic_fragmenter_out_a_bits_data,
+  output        auto_coupler_to_plic_fragmenter_out_a_bits_corrupt,
+  output        auto_coupler_to_plic_fragmenter_out_d_ready,
+  input         auto_coupler_to_plic_fragmenter_out_d_valid,
+  input  [2:0]  auto_coupler_to_plic_fragmenter_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_plic_fragmenter_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_plic_fragmenter_out_d_bits_source,
+  input  [31:0] auto_coupler_to_plic_fragmenter_out_d_bits_data,
+  input         auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_ready,
+  output        auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_param,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_size,
+  output [1:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_source,
+  output [29:0] auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_data,
+  output        auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_ready,
+  input         auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_param,
+  input  [2:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_size,
+  input  [1:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_source,
+  input         auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_sink,
+  input         auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_denied,
+  input  [31:0] auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_data,
+  input         auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_corrupt,
+  output        auto_fixedClockNode_out_2_clock,
+  output        auto_fixedClockNode_out_2_reset,
+  output        auto_fixedClockNode_out_0_clock,
+  output        auto_fixedClockNode_out_0_reset,
+  input         auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_clock,
+  input         auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_reset,
+  input         auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_clock,
+  input         auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_reset,
+  output        auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_clock,
+  output        auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_reset,
+  output        auto_bus_xing_in_a_ready,
+  input         auto_bus_xing_in_a_valid,
+  input  [2:0]  auto_bus_xing_in_a_bits_opcode,
+  input  [2:0]  auto_bus_xing_in_a_bits_param,
+  input  [3:0]  auto_bus_xing_in_a_bits_size,
+  input  [1:0]  auto_bus_xing_in_a_bits_source,
+  input  [29:0] auto_bus_xing_in_a_bits_address,
+  input  [3:0]  auto_bus_xing_in_a_bits_mask,
+  input  [31:0] auto_bus_xing_in_a_bits_data,
+  input         auto_bus_xing_in_a_bits_corrupt,
+  input         auto_bus_xing_in_d_ready,
+  output        auto_bus_xing_in_d_valid,
+  output [2:0]  auto_bus_xing_in_d_bits_opcode,
+  output [1:0]  auto_bus_xing_in_d_bits_param,
+  output [3:0]  auto_bus_xing_in_d_bits_size,
+  output [1:0]  auto_bus_xing_in_d_bits_source,
+  output        auto_bus_xing_in_d_bits_sink,
+  output        auto_bus_xing_in_d_bits_denied,
+  output [31:0] auto_bus_xing_in_d_bits_data,
+  output        auto_bus_xing_in_d_bits_corrupt,
+  output        clock,
+  output        reset
+);
+  wire  subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_1_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_1_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_cbus_clock_groups_auto_out_1_member_subsystem_pbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_cbus_clock_groups_auto_out_1_member_subsystem_pbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_cbus_clock_groups_auto_out_0_member_subsystem_cbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_cbus_clock_groups_auto_out_0_member_subsystem_cbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  clockGroup_auto_in_member_subsystem_cbus_0_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_in_member_subsystem_cbus_0_reset; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_reset; // @[BusWrapper.scala 41:38]
+  wire  fixedClockNode_auto_in_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_in_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_3_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_3_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_1_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_1_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_0_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_0_reset; // @[ClockGroup.scala 106:107]
+  wire  fixer_clock; // @[PeripheryBus.scala 47:33]
+  wire  fixer_reset; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_a_ready; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_a_valid; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_a_bits_opcode; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_a_bits_param; // @[PeripheryBus.scala 47:33]
+  wire [3:0] fixer_auto_in_a_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_in_a_bits_source; // @[PeripheryBus.scala 47:33]
+  wire [29:0] fixer_auto_in_a_bits_address; // @[PeripheryBus.scala 47:33]
+  wire [3:0] fixer_auto_in_a_bits_mask; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_in_a_bits_data; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_a_bits_corrupt; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_d_ready; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_d_valid; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_d_bits_opcode; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_in_d_bits_param; // @[PeripheryBus.scala 47:33]
+  wire [3:0] fixer_auto_in_d_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_in_d_bits_source; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_d_bits_sink; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_d_bits_denied; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_in_d_bits_data; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_in_d_bits_corrupt; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_a_ready; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_a_valid; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_out_a_bits_opcode; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_out_a_bits_param; // @[PeripheryBus.scala 47:33]
+  wire [3:0] fixer_auto_out_a_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_out_a_bits_source; // @[PeripheryBus.scala 47:33]
+  wire [29:0] fixer_auto_out_a_bits_address; // @[PeripheryBus.scala 47:33]
+  wire [3:0] fixer_auto_out_a_bits_mask; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_out_a_bits_data; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_a_bits_corrupt; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_d_ready; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_d_valid; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_out_d_bits_opcode; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_out_d_bits_param; // @[PeripheryBus.scala 47:33]
+  wire [3:0] fixer_auto_out_d_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [1:0] fixer_auto_out_d_bits_source; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_d_bits_sink; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_d_bits_denied; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_out_d_bits_data; // @[PeripheryBus.scala 47:33]
+  wire  fixer_auto_out_d_bits_corrupt; // @[PeripheryBus.scala 47:33]
+  wire  in_xbar_auto_in_a_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_a_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_a_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_a_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_in_a_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_a_bits_source; // @[PeripheryBus.scala 49:29]
+  wire [29:0] in_xbar_auto_in_a_bits_address; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_in_a_bits_mask; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_in_a_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_a_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_d_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_d_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_in_d_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_d_bits_source; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_bits_sink; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_bits_denied; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_in_d_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_d_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_a_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_a_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_out_a_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_out_a_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_out_a_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_out_a_bits_source; // @[PeripheryBus.scala 49:29]
+  wire [29:0] in_xbar_auto_out_a_bits_address; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_out_a_bits_mask; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_out_a_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_a_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_out_d_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_out_d_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_out_d_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_out_d_bits_source; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_bits_sink; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_bits_denied; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_out_d_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_out_d_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  out_xbar_clock; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_reset; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_in_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_in_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_in_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_in_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [29:0] out_xbar_auto_in_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_in_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_in_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_in_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_in_d_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_in_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_in_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_d_bits_sink; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_d_bits_denied; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_in_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_in_d_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_7_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [16:0] out_xbar_auto_out_7_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_7_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_7_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_7_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_6_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [28:0] out_xbar_auto_out_6_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_6_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_6_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_6_d_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_6_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_6_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_d_bits_sink; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_d_bits_denied; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_6_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_6_d_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_5_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [27:0] out_xbar_auto_out_5_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_5_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_5_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_5_d_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_5_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_5_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_d_bits_sink; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_d_bits_denied; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_5_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_5_d_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_4_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [11:0] out_xbar_auto_out_4_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_4_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_4_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_4_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_4_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_4_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_4_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_3_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [25:0] out_xbar_auto_out_3_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_3_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_3_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_3_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_3_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_3_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_3_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_2_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [27:0] out_xbar_auto_out_2_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_2_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_2_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_2_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_2_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_2_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_2_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_1_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [29:0] out_xbar_auto_out_1_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_1_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_1_a_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_1_d_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_1_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_1_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_d_bits_sink; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_d_bits_denied; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_1_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_1_d_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_a_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_a_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_a_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_a_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_0_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_0_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [13:0] out_xbar_auto_out_0_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_0_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_a_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_d_ready; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_d_valid; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_d_bits_opcode; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_0_d_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [3:0] out_xbar_auto_out_0_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [1:0] out_xbar_auto_out_0_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_d_bits_sink; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_d_bits_denied; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_0_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_0_d_bits_corrupt; // @[PeripheryBus.scala 50:30]
+  wire  buffer_clock; // @[Buffer.scala 68:28]
+  wire  buffer_reset; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  atomics_clock; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_reset; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_a_ready; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_a_valid; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_in_a_bits_opcode; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_in_a_bits_param; // @[AtomicAutomata.scala 283:29]
+  wire [3:0] atomics_auto_in_a_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_in_a_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire [29:0] atomics_auto_in_a_bits_address; // @[AtomicAutomata.scala 283:29]
+  wire [3:0] atomics_auto_in_a_bits_mask; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_in_a_bits_data; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_a_bits_corrupt; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_ready; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_valid; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_in_d_bits_opcode; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_in_d_bits_param; // @[AtomicAutomata.scala 283:29]
+  wire [3:0] atomics_auto_in_d_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_in_d_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_bits_sink; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_bits_denied; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_in_d_bits_data; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_in_d_bits_corrupt; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_a_ready; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_a_valid; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_out_a_bits_opcode; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_out_a_bits_param; // @[AtomicAutomata.scala 283:29]
+  wire [3:0] atomics_auto_out_a_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_out_a_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire [29:0] atomics_auto_out_a_bits_address; // @[AtomicAutomata.scala 283:29]
+  wire [3:0] atomics_auto_out_a_bits_mask; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_out_a_bits_data; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_a_bits_corrupt; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_ready; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_valid; // @[AtomicAutomata.scala 283:29]
+  wire [2:0] atomics_auto_out_d_bits_opcode; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_out_d_bits_param; // @[AtomicAutomata.scala 283:29]
+  wire [3:0] atomics_auto_out_d_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [1:0] atomics_auto_out_d_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_bits_sink; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_bits_denied; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_out_d_bits_data; // @[AtomicAutomata.scala 283:29]
+  wire  atomics_auto_out_d_bits_corrupt; // @[AtomicAutomata.scala 283:29]
+  wire  wrapped_error_device_clock; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_reset; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_auto_buffer_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_auto_buffer_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] wrapped_error_device_auto_buffer_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] wrapped_error_device_auto_buffer_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] wrapped_error_device_auto_buffer_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] wrapped_error_device_auto_buffer_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [13:0] wrapped_error_device_auto_buffer_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] wrapped_error_device_auto_buffer_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_auto_buffer_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_auto_buffer_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_auto_buffer_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] wrapped_error_device_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] wrapped_error_device_auto_buffer_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] wrapped_error_device_auto_buffer_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] wrapped_error_device_auto_buffer_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_auto_buffer_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_auto_buffer_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] wrapped_error_device_auto_buffer_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  wrapped_error_device_auto_buffer_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  buffer_1_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [29:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [29:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_fragmenter_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_fragmenter_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_plic_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_plic_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_plic_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_plic_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [27:0] coupler_to_plic_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_plic_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_plic_auto_fragmenter_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_fragmenter_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_fragmenter_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_plic_auto_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_plic_auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_plic_auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_plic_auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_plic_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_plic_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_plic_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_plic_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [27:0] coupler_to_plic_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_plic_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_plic_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_plic_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_plic_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_plic_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_plic_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_plic_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_fragmenter_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_fragmenter_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_clint_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_clint_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_clint_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_clint_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [25:0] coupler_to_clint_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_clint_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_clint_auto_fragmenter_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_fragmenter_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_fragmenter_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_clint_auto_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_clint_auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_clint_auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_clint_auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_clint_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_clint_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_clint_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_clint_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [25:0] coupler_to_clint_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_clint_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_clint_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_clint_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_clint_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_clint_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_clint_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_clint_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_fragmenter_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_fragmenter_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_debug_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_debug_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_debug_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_debug_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [11:0] coupler_to_debug_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_debug_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_debug_auto_fragmenter_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_fragmenter_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_fragmenter_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_debug_auto_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_debug_auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_debug_auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_debug_auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_debug_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_debug_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_debug_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_debug_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [11:0] coupler_to_debug_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_debug_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_debug_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_debug_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_debug_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_debug_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_debug_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_debug_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_slave_clock_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_slave_clock_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [27:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_slave_clock_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_slave_clock_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_tile_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [27:0] coupler_to_tile_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_tile_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_tile_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_tile_auto_tl_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_tile_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_tile_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_tile_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_tile_auto_tl_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_reset; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_aon_auto_asource_out_a_mem_0_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_aon_auto_asource_out_a_mem_0_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_aon_auto_asource_out_a_mem_0_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_aon_auto_asource_out_a_mem_0_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_aon_auto_asource_out_a_mem_0_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_aon_auto_asource_out_a_mem_0_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_aon_auto_asource_out_a_mem_0_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_a_mem_0_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_a_ridx; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_a_widx; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_a_safe_ridx_valid; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_a_safe_widx_valid; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_a_safe_source_reset_n; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_a_safe_sink_reset_n; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_aon_auto_asource_out_d_mem_0_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_aon_auto_asource_out_d_mem_0_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_aon_auto_asource_out_d_mem_0_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_aon_auto_asource_out_d_mem_0_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_mem_0_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_mem_0_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_aon_auto_asource_out_d_mem_0_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_mem_0_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_ridx; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_widx; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_safe_ridx_valid; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_safe_widx_valid; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_safe_source_reset_n; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_asource_out_d_safe_sink_reset_n; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_aon_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_aon_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_aon_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_aon_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_aon_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_aon_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_aon_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_aon_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_aon_auto_tl_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_aon_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_aon_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_tl_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_tl_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_aon_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_aon_auto_tl_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_fragmenter_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_fragmenter_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bootrom_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bootrom_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bootrom_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_bootrom_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [16:0] coupler_to_bootrom_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bootrom_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_fragmenter_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_fragmenter_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bootrom_auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_bootrom_auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bootrom_auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bootrom_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bootrom_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bootrom_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bootrom_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [16:0] coupler_to_bootrom_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bootrom_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bootrom_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bootrom_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_bootrom_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bootrom_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  ClockGroupAggregator_3 subsystem_cbus_clock_groups ( // @[BusWrapper.scala 40:48]
+    .auto_in_member_subsystem_cbus_1_clock(subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_1_clock),
+    .auto_in_member_subsystem_cbus_1_reset(subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_1_reset),
+    .auto_in_member_subsystem_cbus_0_clock(subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_0_clock),
+    .auto_in_member_subsystem_cbus_0_reset(subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_0_reset),
+    .auto_out_1_member_subsystem_pbus_0_clock(subsystem_cbus_clock_groups_auto_out_1_member_subsystem_pbus_0_clock),
+    .auto_out_1_member_subsystem_pbus_0_reset(subsystem_cbus_clock_groups_auto_out_1_member_subsystem_pbus_0_reset),
+    .auto_out_0_member_subsystem_cbus_0_clock(subsystem_cbus_clock_groups_auto_out_0_member_subsystem_cbus_0_clock),
+    .auto_out_0_member_subsystem_cbus_0_reset(subsystem_cbus_clock_groups_auto_out_0_member_subsystem_cbus_0_reset)
+  );
+  ClockGroup_3 clockGroup ( // @[BusWrapper.scala 41:38]
+    .auto_in_member_subsystem_cbus_0_clock(clockGroup_auto_in_member_subsystem_cbus_0_clock),
+    .auto_in_member_subsystem_cbus_0_reset(clockGroup_auto_in_member_subsystem_cbus_0_reset),
+    .auto_out_clock(clockGroup_auto_out_clock),
+    .auto_out_reset(clockGroup_auto_out_reset)
+  );
+  FixedClockBroadcast_3 fixedClockNode ( // @[ClockGroup.scala 106:107]
+    .auto_in_clock(fixedClockNode_auto_in_clock),
+    .auto_in_reset(fixedClockNode_auto_in_reset),
+    .auto_out_3_clock(fixedClockNode_auto_out_3_clock),
+    .auto_out_3_reset(fixedClockNode_auto_out_3_reset),
+    .auto_out_1_clock(fixedClockNode_auto_out_1_clock),
+    .auto_out_1_reset(fixedClockNode_auto_out_1_reset),
+    .auto_out_0_clock(fixedClockNode_auto_out_0_clock),
+    .auto_out_0_reset(fixedClockNode_auto_out_0_reset)
+  );
+  TLFIFOFixer_2 fixer ( // @[PeripheryBus.scala 47:33]
+    .clock(fixer_clock),
+    .reset(fixer_reset),
+    .auto_in_a_ready(fixer_auto_in_a_ready),
+    .auto_in_a_valid(fixer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fixer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fixer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fixer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fixer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fixer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fixer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fixer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fixer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fixer_auto_in_d_ready),
+    .auto_in_d_valid(fixer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fixer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(fixer_auto_in_d_bits_param),
+    .auto_in_d_bits_size(fixer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fixer_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(fixer_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(fixer_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(fixer_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(fixer_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(fixer_auto_out_a_ready),
+    .auto_out_a_valid(fixer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fixer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fixer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fixer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fixer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fixer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fixer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fixer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fixer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fixer_auto_out_d_ready),
+    .auto_out_d_valid(fixer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fixer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(fixer_auto_out_d_bits_param),
+    .auto_out_d_bits_size(fixer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fixer_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(fixer_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(fixer_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(fixer_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(fixer_auto_out_d_bits_corrupt)
+  );
+  TLXbar_4 in_xbar ( // @[PeripheryBus.scala 49:29]
+    .auto_in_a_ready(in_xbar_auto_in_a_ready),
+    .auto_in_a_valid(in_xbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(in_xbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(in_xbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(in_xbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(in_xbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(in_xbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(in_xbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(in_xbar_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(in_xbar_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(in_xbar_auto_in_d_ready),
+    .auto_in_d_valid(in_xbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(in_xbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(in_xbar_auto_in_d_bits_param),
+    .auto_in_d_bits_size(in_xbar_auto_in_d_bits_size),
+    .auto_in_d_bits_source(in_xbar_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(in_xbar_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(in_xbar_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(in_xbar_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(in_xbar_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(in_xbar_auto_out_a_ready),
+    .auto_out_a_valid(in_xbar_auto_out_a_valid),
+    .auto_out_a_bits_opcode(in_xbar_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(in_xbar_auto_out_a_bits_param),
+    .auto_out_a_bits_size(in_xbar_auto_out_a_bits_size),
+    .auto_out_a_bits_source(in_xbar_auto_out_a_bits_source),
+    .auto_out_a_bits_address(in_xbar_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(in_xbar_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(in_xbar_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(in_xbar_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(in_xbar_auto_out_d_ready),
+    .auto_out_d_valid(in_xbar_auto_out_d_valid),
+    .auto_out_d_bits_opcode(in_xbar_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(in_xbar_auto_out_d_bits_param),
+    .auto_out_d_bits_size(in_xbar_auto_out_d_bits_size),
+    .auto_out_d_bits_source(in_xbar_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(in_xbar_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(in_xbar_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(in_xbar_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(in_xbar_auto_out_d_bits_corrupt)
+  );
+  TLXbar_5 out_xbar ( // @[PeripheryBus.scala 50:30]
+    .clock(out_xbar_clock),
+    .reset(out_xbar_reset),
+    .auto_in_a_ready(out_xbar_auto_in_a_ready),
+    .auto_in_a_valid(out_xbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(out_xbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(out_xbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(out_xbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(out_xbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(out_xbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(out_xbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(out_xbar_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(out_xbar_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(out_xbar_auto_in_d_ready),
+    .auto_in_d_valid(out_xbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(out_xbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(out_xbar_auto_in_d_bits_param),
+    .auto_in_d_bits_size(out_xbar_auto_in_d_bits_size),
+    .auto_in_d_bits_source(out_xbar_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(out_xbar_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(out_xbar_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(out_xbar_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(out_xbar_auto_in_d_bits_corrupt),
+    .auto_out_7_a_ready(out_xbar_auto_out_7_a_ready),
+    .auto_out_7_a_valid(out_xbar_auto_out_7_a_valid),
+    .auto_out_7_a_bits_opcode(out_xbar_auto_out_7_a_bits_opcode),
+    .auto_out_7_a_bits_param(out_xbar_auto_out_7_a_bits_param),
+    .auto_out_7_a_bits_size(out_xbar_auto_out_7_a_bits_size),
+    .auto_out_7_a_bits_source(out_xbar_auto_out_7_a_bits_source),
+    .auto_out_7_a_bits_address(out_xbar_auto_out_7_a_bits_address),
+    .auto_out_7_a_bits_mask(out_xbar_auto_out_7_a_bits_mask),
+    .auto_out_7_a_bits_corrupt(out_xbar_auto_out_7_a_bits_corrupt),
+    .auto_out_7_d_ready(out_xbar_auto_out_7_d_ready),
+    .auto_out_7_d_valid(out_xbar_auto_out_7_d_valid),
+    .auto_out_7_d_bits_size(out_xbar_auto_out_7_d_bits_size),
+    .auto_out_7_d_bits_source(out_xbar_auto_out_7_d_bits_source),
+    .auto_out_7_d_bits_data(out_xbar_auto_out_7_d_bits_data),
+    .auto_out_6_a_ready(out_xbar_auto_out_6_a_ready),
+    .auto_out_6_a_valid(out_xbar_auto_out_6_a_valid),
+    .auto_out_6_a_bits_opcode(out_xbar_auto_out_6_a_bits_opcode),
+    .auto_out_6_a_bits_param(out_xbar_auto_out_6_a_bits_param),
+    .auto_out_6_a_bits_size(out_xbar_auto_out_6_a_bits_size),
+    .auto_out_6_a_bits_source(out_xbar_auto_out_6_a_bits_source),
+    .auto_out_6_a_bits_address(out_xbar_auto_out_6_a_bits_address),
+    .auto_out_6_a_bits_mask(out_xbar_auto_out_6_a_bits_mask),
+    .auto_out_6_a_bits_data(out_xbar_auto_out_6_a_bits_data),
+    .auto_out_6_a_bits_corrupt(out_xbar_auto_out_6_a_bits_corrupt),
+    .auto_out_6_d_ready(out_xbar_auto_out_6_d_ready),
+    .auto_out_6_d_valid(out_xbar_auto_out_6_d_valid),
+    .auto_out_6_d_bits_opcode(out_xbar_auto_out_6_d_bits_opcode),
+    .auto_out_6_d_bits_param(out_xbar_auto_out_6_d_bits_param),
+    .auto_out_6_d_bits_size(out_xbar_auto_out_6_d_bits_size),
+    .auto_out_6_d_bits_source(out_xbar_auto_out_6_d_bits_source),
+    .auto_out_6_d_bits_sink(out_xbar_auto_out_6_d_bits_sink),
+    .auto_out_6_d_bits_denied(out_xbar_auto_out_6_d_bits_denied),
+    .auto_out_6_d_bits_data(out_xbar_auto_out_6_d_bits_data),
+    .auto_out_6_d_bits_corrupt(out_xbar_auto_out_6_d_bits_corrupt),
+    .auto_out_5_a_ready(out_xbar_auto_out_5_a_ready),
+    .auto_out_5_a_valid(out_xbar_auto_out_5_a_valid),
+    .auto_out_5_a_bits_opcode(out_xbar_auto_out_5_a_bits_opcode),
+    .auto_out_5_a_bits_param(out_xbar_auto_out_5_a_bits_param),
+    .auto_out_5_a_bits_size(out_xbar_auto_out_5_a_bits_size),
+    .auto_out_5_a_bits_source(out_xbar_auto_out_5_a_bits_source),
+    .auto_out_5_a_bits_address(out_xbar_auto_out_5_a_bits_address),
+    .auto_out_5_a_bits_mask(out_xbar_auto_out_5_a_bits_mask),
+    .auto_out_5_a_bits_data(out_xbar_auto_out_5_a_bits_data),
+    .auto_out_5_a_bits_corrupt(out_xbar_auto_out_5_a_bits_corrupt),
+    .auto_out_5_d_ready(out_xbar_auto_out_5_d_ready),
+    .auto_out_5_d_valid(out_xbar_auto_out_5_d_valid),
+    .auto_out_5_d_bits_opcode(out_xbar_auto_out_5_d_bits_opcode),
+    .auto_out_5_d_bits_param(out_xbar_auto_out_5_d_bits_param),
+    .auto_out_5_d_bits_size(out_xbar_auto_out_5_d_bits_size),
+    .auto_out_5_d_bits_source(out_xbar_auto_out_5_d_bits_source),
+    .auto_out_5_d_bits_sink(out_xbar_auto_out_5_d_bits_sink),
+    .auto_out_5_d_bits_denied(out_xbar_auto_out_5_d_bits_denied),
+    .auto_out_5_d_bits_data(out_xbar_auto_out_5_d_bits_data),
+    .auto_out_5_d_bits_corrupt(out_xbar_auto_out_5_d_bits_corrupt),
+    .auto_out_4_a_ready(out_xbar_auto_out_4_a_ready),
+    .auto_out_4_a_valid(out_xbar_auto_out_4_a_valid),
+    .auto_out_4_a_bits_opcode(out_xbar_auto_out_4_a_bits_opcode),
+    .auto_out_4_a_bits_param(out_xbar_auto_out_4_a_bits_param),
+    .auto_out_4_a_bits_size(out_xbar_auto_out_4_a_bits_size),
+    .auto_out_4_a_bits_source(out_xbar_auto_out_4_a_bits_source),
+    .auto_out_4_a_bits_address(out_xbar_auto_out_4_a_bits_address),
+    .auto_out_4_a_bits_mask(out_xbar_auto_out_4_a_bits_mask),
+    .auto_out_4_a_bits_data(out_xbar_auto_out_4_a_bits_data),
+    .auto_out_4_a_bits_corrupt(out_xbar_auto_out_4_a_bits_corrupt),
+    .auto_out_4_d_ready(out_xbar_auto_out_4_d_ready),
+    .auto_out_4_d_valid(out_xbar_auto_out_4_d_valid),
+    .auto_out_4_d_bits_opcode(out_xbar_auto_out_4_d_bits_opcode),
+    .auto_out_4_d_bits_size(out_xbar_auto_out_4_d_bits_size),
+    .auto_out_4_d_bits_source(out_xbar_auto_out_4_d_bits_source),
+    .auto_out_4_d_bits_data(out_xbar_auto_out_4_d_bits_data),
+    .auto_out_3_a_ready(out_xbar_auto_out_3_a_ready),
+    .auto_out_3_a_valid(out_xbar_auto_out_3_a_valid),
+    .auto_out_3_a_bits_opcode(out_xbar_auto_out_3_a_bits_opcode),
+    .auto_out_3_a_bits_param(out_xbar_auto_out_3_a_bits_param),
+    .auto_out_3_a_bits_size(out_xbar_auto_out_3_a_bits_size),
+    .auto_out_3_a_bits_source(out_xbar_auto_out_3_a_bits_source),
+    .auto_out_3_a_bits_address(out_xbar_auto_out_3_a_bits_address),
+    .auto_out_3_a_bits_mask(out_xbar_auto_out_3_a_bits_mask),
+    .auto_out_3_a_bits_data(out_xbar_auto_out_3_a_bits_data),
+    .auto_out_3_a_bits_corrupt(out_xbar_auto_out_3_a_bits_corrupt),
+    .auto_out_3_d_ready(out_xbar_auto_out_3_d_ready),
+    .auto_out_3_d_valid(out_xbar_auto_out_3_d_valid),
+    .auto_out_3_d_bits_opcode(out_xbar_auto_out_3_d_bits_opcode),
+    .auto_out_3_d_bits_size(out_xbar_auto_out_3_d_bits_size),
+    .auto_out_3_d_bits_source(out_xbar_auto_out_3_d_bits_source),
+    .auto_out_3_d_bits_data(out_xbar_auto_out_3_d_bits_data),
+    .auto_out_2_a_ready(out_xbar_auto_out_2_a_ready),
+    .auto_out_2_a_valid(out_xbar_auto_out_2_a_valid),
+    .auto_out_2_a_bits_opcode(out_xbar_auto_out_2_a_bits_opcode),
+    .auto_out_2_a_bits_param(out_xbar_auto_out_2_a_bits_param),
+    .auto_out_2_a_bits_size(out_xbar_auto_out_2_a_bits_size),
+    .auto_out_2_a_bits_source(out_xbar_auto_out_2_a_bits_source),
+    .auto_out_2_a_bits_address(out_xbar_auto_out_2_a_bits_address),
+    .auto_out_2_a_bits_mask(out_xbar_auto_out_2_a_bits_mask),
+    .auto_out_2_a_bits_data(out_xbar_auto_out_2_a_bits_data),
+    .auto_out_2_a_bits_corrupt(out_xbar_auto_out_2_a_bits_corrupt),
+    .auto_out_2_d_ready(out_xbar_auto_out_2_d_ready),
+    .auto_out_2_d_valid(out_xbar_auto_out_2_d_valid),
+    .auto_out_2_d_bits_opcode(out_xbar_auto_out_2_d_bits_opcode),
+    .auto_out_2_d_bits_size(out_xbar_auto_out_2_d_bits_size),
+    .auto_out_2_d_bits_source(out_xbar_auto_out_2_d_bits_source),
+    .auto_out_2_d_bits_data(out_xbar_auto_out_2_d_bits_data),
+    .auto_out_1_a_ready(out_xbar_auto_out_1_a_ready),
+    .auto_out_1_a_valid(out_xbar_auto_out_1_a_valid),
+    .auto_out_1_a_bits_opcode(out_xbar_auto_out_1_a_bits_opcode),
+    .auto_out_1_a_bits_param(out_xbar_auto_out_1_a_bits_param),
+    .auto_out_1_a_bits_size(out_xbar_auto_out_1_a_bits_size),
+    .auto_out_1_a_bits_source(out_xbar_auto_out_1_a_bits_source),
+    .auto_out_1_a_bits_address(out_xbar_auto_out_1_a_bits_address),
+    .auto_out_1_a_bits_mask(out_xbar_auto_out_1_a_bits_mask),
+    .auto_out_1_a_bits_data(out_xbar_auto_out_1_a_bits_data),
+    .auto_out_1_a_bits_corrupt(out_xbar_auto_out_1_a_bits_corrupt),
+    .auto_out_1_d_ready(out_xbar_auto_out_1_d_ready),
+    .auto_out_1_d_valid(out_xbar_auto_out_1_d_valid),
+    .auto_out_1_d_bits_opcode(out_xbar_auto_out_1_d_bits_opcode),
+    .auto_out_1_d_bits_param(out_xbar_auto_out_1_d_bits_param),
+    .auto_out_1_d_bits_size(out_xbar_auto_out_1_d_bits_size),
+    .auto_out_1_d_bits_source(out_xbar_auto_out_1_d_bits_source),
+    .auto_out_1_d_bits_sink(out_xbar_auto_out_1_d_bits_sink),
+    .auto_out_1_d_bits_denied(out_xbar_auto_out_1_d_bits_denied),
+    .auto_out_1_d_bits_data(out_xbar_auto_out_1_d_bits_data),
+    .auto_out_1_d_bits_corrupt(out_xbar_auto_out_1_d_bits_corrupt),
+    .auto_out_0_a_ready(out_xbar_auto_out_0_a_ready),
+    .auto_out_0_a_valid(out_xbar_auto_out_0_a_valid),
+    .auto_out_0_a_bits_opcode(out_xbar_auto_out_0_a_bits_opcode),
+    .auto_out_0_a_bits_param(out_xbar_auto_out_0_a_bits_param),
+    .auto_out_0_a_bits_size(out_xbar_auto_out_0_a_bits_size),
+    .auto_out_0_a_bits_source(out_xbar_auto_out_0_a_bits_source),
+    .auto_out_0_a_bits_address(out_xbar_auto_out_0_a_bits_address),
+    .auto_out_0_a_bits_mask(out_xbar_auto_out_0_a_bits_mask),
+    .auto_out_0_a_bits_corrupt(out_xbar_auto_out_0_a_bits_corrupt),
+    .auto_out_0_d_ready(out_xbar_auto_out_0_d_ready),
+    .auto_out_0_d_valid(out_xbar_auto_out_0_d_valid),
+    .auto_out_0_d_bits_opcode(out_xbar_auto_out_0_d_bits_opcode),
+    .auto_out_0_d_bits_param(out_xbar_auto_out_0_d_bits_param),
+    .auto_out_0_d_bits_size(out_xbar_auto_out_0_d_bits_size),
+    .auto_out_0_d_bits_source(out_xbar_auto_out_0_d_bits_source),
+    .auto_out_0_d_bits_sink(out_xbar_auto_out_0_d_bits_sink),
+    .auto_out_0_d_bits_denied(out_xbar_auto_out_0_d_bits_denied),
+    .auto_out_0_d_bits_data(out_xbar_auto_out_0_d_bits_data),
+    .auto_out_0_d_bits_corrupt(out_xbar_auto_out_0_d_bits_corrupt)
+  );
+  TLBuffer_4 buffer ( // @[Buffer.scala 68:28]
+    .clock(buffer_clock),
+    .reset(buffer_reset),
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(buffer_auto_in_d_bits_param),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(buffer_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(buffer_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(buffer_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(buffer_auto_out_d_bits_param),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(buffer_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(buffer_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(buffer_auto_out_d_bits_corrupt)
+  );
+  TLAtomicAutomata_1 atomics ( // @[AtomicAutomata.scala 283:29]
+    .clock(atomics_clock),
+    .reset(atomics_reset),
+    .auto_in_a_ready(atomics_auto_in_a_ready),
+    .auto_in_a_valid(atomics_auto_in_a_valid),
+    .auto_in_a_bits_opcode(atomics_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(atomics_auto_in_a_bits_param),
+    .auto_in_a_bits_size(atomics_auto_in_a_bits_size),
+    .auto_in_a_bits_source(atomics_auto_in_a_bits_source),
+    .auto_in_a_bits_address(atomics_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(atomics_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(atomics_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(atomics_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(atomics_auto_in_d_ready),
+    .auto_in_d_valid(atomics_auto_in_d_valid),
+    .auto_in_d_bits_opcode(atomics_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(atomics_auto_in_d_bits_param),
+    .auto_in_d_bits_size(atomics_auto_in_d_bits_size),
+    .auto_in_d_bits_source(atomics_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(atomics_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(atomics_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(atomics_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(atomics_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(atomics_auto_out_a_ready),
+    .auto_out_a_valid(atomics_auto_out_a_valid),
+    .auto_out_a_bits_opcode(atomics_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(atomics_auto_out_a_bits_param),
+    .auto_out_a_bits_size(atomics_auto_out_a_bits_size),
+    .auto_out_a_bits_source(atomics_auto_out_a_bits_source),
+    .auto_out_a_bits_address(atomics_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(atomics_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(atomics_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(atomics_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(atomics_auto_out_d_ready),
+    .auto_out_d_valid(atomics_auto_out_d_valid),
+    .auto_out_d_bits_opcode(atomics_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(atomics_auto_out_d_bits_param),
+    .auto_out_d_bits_size(atomics_auto_out_d_bits_size),
+    .auto_out_d_bits_source(atomics_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(atomics_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(atomics_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(atomics_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(atomics_auto_out_d_bits_corrupt)
+  );
+  ErrorDeviceWrapper wrapped_error_device ( // @[LazyModule.scala 432:27]
+    .clock(wrapped_error_device_clock),
+    .reset(wrapped_error_device_reset),
+    .auto_buffer_in_a_ready(wrapped_error_device_auto_buffer_in_a_ready),
+    .auto_buffer_in_a_valid(wrapped_error_device_auto_buffer_in_a_valid),
+    .auto_buffer_in_a_bits_opcode(wrapped_error_device_auto_buffer_in_a_bits_opcode),
+    .auto_buffer_in_a_bits_param(wrapped_error_device_auto_buffer_in_a_bits_param),
+    .auto_buffer_in_a_bits_size(wrapped_error_device_auto_buffer_in_a_bits_size),
+    .auto_buffer_in_a_bits_source(wrapped_error_device_auto_buffer_in_a_bits_source),
+    .auto_buffer_in_a_bits_address(wrapped_error_device_auto_buffer_in_a_bits_address),
+    .auto_buffer_in_a_bits_mask(wrapped_error_device_auto_buffer_in_a_bits_mask),
+    .auto_buffer_in_a_bits_corrupt(wrapped_error_device_auto_buffer_in_a_bits_corrupt),
+    .auto_buffer_in_d_ready(wrapped_error_device_auto_buffer_in_d_ready),
+    .auto_buffer_in_d_valid(wrapped_error_device_auto_buffer_in_d_valid),
+    .auto_buffer_in_d_bits_opcode(wrapped_error_device_auto_buffer_in_d_bits_opcode),
+    .auto_buffer_in_d_bits_param(wrapped_error_device_auto_buffer_in_d_bits_param),
+    .auto_buffer_in_d_bits_size(wrapped_error_device_auto_buffer_in_d_bits_size),
+    .auto_buffer_in_d_bits_source(wrapped_error_device_auto_buffer_in_d_bits_source),
+    .auto_buffer_in_d_bits_sink(wrapped_error_device_auto_buffer_in_d_bits_sink),
+    .auto_buffer_in_d_bits_denied(wrapped_error_device_auto_buffer_in_d_bits_denied),
+    .auto_buffer_in_d_bits_data(wrapped_error_device_auto_buffer_in_d_bits_data),
+    .auto_buffer_in_d_bits_corrupt(wrapped_error_device_auto_buffer_in_d_bits_corrupt)
+  );
+  TLBuffer_6 buffer_1 ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_1_auto_in_a_ready),
+    .auto_in_a_valid(buffer_1_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_1_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_1_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_1_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_1_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_1_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_1_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_1_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_1_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_1_auto_in_d_ready),
+    .auto_in_d_valid(buffer_1_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_1_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(buffer_1_auto_in_d_bits_param),
+    .auto_in_d_bits_size(buffer_1_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_1_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(buffer_1_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(buffer_1_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(buffer_1_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(buffer_1_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(buffer_1_auto_out_a_ready),
+    .auto_out_a_valid(buffer_1_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_1_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_1_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_1_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_1_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_1_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_1_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_1_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_1_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_1_auto_out_d_ready),
+    .auto_out_d_valid(buffer_1_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_1_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(buffer_1_auto_out_d_bits_param),
+    .auto_out_d_bits_size(buffer_1_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_1_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(buffer_1_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(buffer_1_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(buffer_1_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(buffer_1_auto_out_d_bits_corrupt)
+  );
+  TLInterconnectCoupler_19 coupler_to_bus_named_subsystem_pbus ( // @[LazyModule.scala 432:27]
+    .auto_widget_in_a_ready(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_ready),
+    .auto_widget_in_a_valid(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_valid),
+    .auto_widget_in_a_bits_opcode(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_opcode),
+    .auto_widget_in_a_bits_param(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_param),
+    .auto_widget_in_a_bits_size(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_size),
+    .auto_widget_in_a_bits_source(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_source),
+    .auto_widget_in_a_bits_address(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_address),
+    .auto_widget_in_a_bits_mask(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_mask),
+    .auto_widget_in_a_bits_data(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_data),
+    .auto_widget_in_a_bits_corrupt(coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_corrupt),
+    .auto_widget_in_d_ready(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_ready),
+    .auto_widget_in_d_valid(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_valid),
+    .auto_widget_in_d_bits_opcode(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_opcode),
+    .auto_widget_in_d_bits_param(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_param),
+    .auto_widget_in_d_bits_size(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_size),
+    .auto_widget_in_d_bits_source(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_source),
+    .auto_widget_in_d_bits_sink(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_sink),
+    .auto_widget_in_d_bits_denied(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_denied),
+    .auto_widget_in_d_bits_data(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_data),
+    .auto_widget_in_d_bits_corrupt(coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_corrupt),
+    .auto_bus_xing_out_a_ready(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_ready),
+    .auto_bus_xing_out_a_valid(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_valid),
+    .auto_bus_xing_out_a_bits_opcode(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_opcode),
+    .auto_bus_xing_out_a_bits_param(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_param),
+    .auto_bus_xing_out_a_bits_size(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_size),
+    .auto_bus_xing_out_a_bits_source(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_source),
+    .auto_bus_xing_out_a_bits_address(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_address),
+    .auto_bus_xing_out_a_bits_mask(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_mask),
+    .auto_bus_xing_out_a_bits_data(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_data),
+    .auto_bus_xing_out_a_bits_corrupt(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_corrupt),
+    .auto_bus_xing_out_d_ready(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_ready),
+    .auto_bus_xing_out_d_valid(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_valid),
+    .auto_bus_xing_out_d_bits_opcode(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_opcode),
+    .auto_bus_xing_out_d_bits_param(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_param),
+    .auto_bus_xing_out_d_bits_size(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_size),
+    .auto_bus_xing_out_d_bits_source(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_source),
+    .auto_bus_xing_out_d_bits_sink(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_sink),
+    .auto_bus_xing_out_d_bits_denied(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_denied),
+    .auto_bus_xing_out_d_bits_data(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_data),
+    .auto_bus_xing_out_d_bits_corrupt(coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_corrupt)
+  );
+  TLInterconnectCoupler_20 coupler_to_plic ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_plic_clock),
+    .reset(coupler_to_plic_reset),
+    .auto_fragmenter_out_a_ready(coupler_to_plic_auto_fragmenter_out_a_ready),
+    .auto_fragmenter_out_a_valid(coupler_to_plic_auto_fragmenter_out_a_valid),
+    .auto_fragmenter_out_a_bits_opcode(coupler_to_plic_auto_fragmenter_out_a_bits_opcode),
+    .auto_fragmenter_out_a_bits_param(coupler_to_plic_auto_fragmenter_out_a_bits_param),
+    .auto_fragmenter_out_a_bits_size(coupler_to_plic_auto_fragmenter_out_a_bits_size),
+    .auto_fragmenter_out_a_bits_source(coupler_to_plic_auto_fragmenter_out_a_bits_source),
+    .auto_fragmenter_out_a_bits_address(coupler_to_plic_auto_fragmenter_out_a_bits_address),
+    .auto_fragmenter_out_a_bits_mask(coupler_to_plic_auto_fragmenter_out_a_bits_mask),
+    .auto_fragmenter_out_a_bits_data(coupler_to_plic_auto_fragmenter_out_a_bits_data),
+    .auto_fragmenter_out_a_bits_corrupt(coupler_to_plic_auto_fragmenter_out_a_bits_corrupt),
+    .auto_fragmenter_out_d_ready(coupler_to_plic_auto_fragmenter_out_d_ready),
+    .auto_fragmenter_out_d_valid(coupler_to_plic_auto_fragmenter_out_d_valid),
+    .auto_fragmenter_out_d_bits_opcode(coupler_to_plic_auto_fragmenter_out_d_bits_opcode),
+    .auto_fragmenter_out_d_bits_size(coupler_to_plic_auto_fragmenter_out_d_bits_size),
+    .auto_fragmenter_out_d_bits_source(coupler_to_plic_auto_fragmenter_out_d_bits_source),
+    .auto_fragmenter_out_d_bits_data(coupler_to_plic_auto_fragmenter_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_plic_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_plic_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_plic_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_plic_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_plic_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_plic_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_plic_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_plic_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_plic_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_plic_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_plic_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_plic_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_plic_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_plic_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_plic_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_plic_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_21 coupler_to_clint ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_clint_clock),
+    .reset(coupler_to_clint_reset),
+    .auto_fragmenter_out_a_ready(coupler_to_clint_auto_fragmenter_out_a_ready),
+    .auto_fragmenter_out_a_valid(coupler_to_clint_auto_fragmenter_out_a_valid),
+    .auto_fragmenter_out_a_bits_opcode(coupler_to_clint_auto_fragmenter_out_a_bits_opcode),
+    .auto_fragmenter_out_a_bits_param(coupler_to_clint_auto_fragmenter_out_a_bits_param),
+    .auto_fragmenter_out_a_bits_size(coupler_to_clint_auto_fragmenter_out_a_bits_size),
+    .auto_fragmenter_out_a_bits_source(coupler_to_clint_auto_fragmenter_out_a_bits_source),
+    .auto_fragmenter_out_a_bits_address(coupler_to_clint_auto_fragmenter_out_a_bits_address),
+    .auto_fragmenter_out_a_bits_mask(coupler_to_clint_auto_fragmenter_out_a_bits_mask),
+    .auto_fragmenter_out_a_bits_data(coupler_to_clint_auto_fragmenter_out_a_bits_data),
+    .auto_fragmenter_out_a_bits_corrupt(coupler_to_clint_auto_fragmenter_out_a_bits_corrupt),
+    .auto_fragmenter_out_d_ready(coupler_to_clint_auto_fragmenter_out_d_ready),
+    .auto_fragmenter_out_d_valid(coupler_to_clint_auto_fragmenter_out_d_valid),
+    .auto_fragmenter_out_d_bits_opcode(coupler_to_clint_auto_fragmenter_out_d_bits_opcode),
+    .auto_fragmenter_out_d_bits_size(coupler_to_clint_auto_fragmenter_out_d_bits_size),
+    .auto_fragmenter_out_d_bits_source(coupler_to_clint_auto_fragmenter_out_d_bits_source),
+    .auto_fragmenter_out_d_bits_data(coupler_to_clint_auto_fragmenter_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_clint_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_clint_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_clint_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_clint_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_clint_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_clint_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_clint_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_clint_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_clint_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_clint_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_clint_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_clint_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_clint_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_clint_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_clint_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_clint_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_22 coupler_to_debug ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_debug_clock),
+    .reset(coupler_to_debug_reset),
+    .auto_fragmenter_out_a_ready(coupler_to_debug_auto_fragmenter_out_a_ready),
+    .auto_fragmenter_out_a_valid(coupler_to_debug_auto_fragmenter_out_a_valid),
+    .auto_fragmenter_out_a_bits_opcode(coupler_to_debug_auto_fragmenter_out_a_bits_opcode),
+    .auto_fragmenter_out_a_bits_param(coupler_to_debug_auto_fragmenter_out_a_bits_param),
+    .auto_fragmenter_out_a_bits_size(coupler_to_debug_auto_fragmenter_out_a_bits_size),
+    .auto_fragmenter_out_a_bits_source(coupler_to_debug_auto_fragmenter_out_a_bits_source),
+    .auto_fragmenter_out_a_bits_address(coupler_to_debug_auto_fragmenter_out_a_bits_address),
+    .auto_fragmenter_out_a_bits_mask(coupler_to_debug_auto_fragmenter_out_a_bits_mask),
+    .auto_fragmenter_out_a_bits_data(coupler_to_debug_auto_fragmenter_out_a_bits_data),
+    .auto_fragmenter_out_a_bits_corrupt(coupler_to_debug_auto_fragmenter_out_a_bits_corrupt),
+    .auto_fragmenter_out_d_ready(coupler_to_debug_auto_fragmenter_out_d_ready),
+    .auto_fragmenter_out_d_valid(coupler_to_debug_auto_fragmenter_out_d_valid),
+    .auto_fragmenter_out_d_bits_opcode(coupler_to_debug_auto_fragmenter_out_d_bits_opcode),
+    .auto_fragmenter_out_d_bits_size(coupler_to_debug_auto_fragmenter_out_d_bits_size),
+    .auto_fragmenter_out_d_bits_source(coupler_to_debug_auto_fragmenter_out_d_bits_source),
+    .auto_fragmenter_out_d_bits_data(coupler_to_debug_auto_fragmenter_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_debug_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_debug_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_debug_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_debug_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_debug_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_debug_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_debug_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_debug_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_debug_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_debug_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_debug_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_debug_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_debug_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_debug_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_debug_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_debug_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_23 coupler_to_tile ( // @[LazyModule.scala 432:27]
+    .auto_tl_slave_clock_xing_out_a_ready(coupler_to_tile_auto_tl_slave_clock_xing_out_a_ready),
+    .auto_tl_slave_clock_xing_out_a_valid(coupler_to_tile_auto_tl_slave_clock_xing_out_a_valid),
+    .auto_tl_slave_clock_xing_out_a_bits_opcode(coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_opcode),
+    .auto_tl_slave_clock_xing_out_a_bits_param(coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_param),
+    .auto_tl_slave_clock_xing_out_a_bits_size(coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_size),
+    .auto_tl_slave_clock_xing_out_a_bits_source(coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_source),
+    .auto_tl_slave_clock_xing_out_a_bits_address(coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_address),
+    .auto_tl_slave_clock_xing_out_a_bits_mask(coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_mask),
+    .auto_tl_slave_clock_xing_out_a_bits_data(coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_data),
+    .auto_tl_slave_clock_xing_out_a_bits_corrupt(coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_corrupt),
+    .auto_tl_slave_clock_xing_out_d_ready(coupler_to_tile_auto_tl_slave_clock_xing_out_d_ready),
+    .auto_tl_slave_clock_xing_out_d_valid(coupler_to_tile_auto_tl_slave_clock_xing_out_d_valid),
+    .auto_tl_slave_clock_xing_out_d_bits_opcode(coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_opcode),
+    .auto_tl_slave_clock_xing_out_d_bits_param(coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_param),
+    .auto_tl_slave_clock_xing_out_d_bits_size(coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_size),
+    .auto_tl_slave_clock_xing_out_d_bits_source(coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_source),
+    .auto_tl_slave_clock_xing_out_d_bits_sink(coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_sink),
+    .auto_tl_slave_clock_xing_out_d_bits_denied(coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_denied),
+    .auto_tl_slave_clock_xing_out_d_bits_data(coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_data),
+    .auto_tl_slave_clock_xing_out_d_bits_corrupt(coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_corrupt),
+    .auto_tl_in_a_ready(coupler_to_tile_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_tile_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_tile_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_tile_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_tile_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_tile_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_tile_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_tile_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_tile_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_tile_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_tile_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_tile_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_tile_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_param(coupler_to_tile_auto_tl_in_d_bits_param),
+    .auto_tl_in_d_bits_size(coupler_to_tile_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_tile_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_sink(coupler_to_tile_auto_tl_in_d_bits_sink),
+    .auto_tl_in_d_bits_denied(coupler_to_tile_auto_tl_in_d_bits_denied),
+    .auto_tl_in_d_bits_data(coupler_to_tile_auto_tl_in_d_bits_data),
+    .auto_tl_in_d_bits_corrupt(coupler_to_tile_auto_tl_in_d_bits_corrupt)
+  );
+  TLInterconnectCoupler_24 coupler_to_aon ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_aon_clock),
+    .reset(coupler_to_aon_reset),
+    .auto_asource_out_a_mem_0_opcode(coupler_to_aon_auto_asource_out_a_mem_0_opcode),
+    .auto_asource_out_a_mem_0_param(coupler_to_aon_auto_asource_out_a_mem_0_param),
+    .auto_asource_out_a_mem_0_size(coupler_to_aon_auto_asource_out_a_mem_0_size),
+    .auto_asource_out_a_mem_0_source(coupler_to_aon_auto_asource_out_a_mem_0_source),
+    .auto_asource_out_a_mem_0_address(coupler_to_aon_auto_asource_out_a_mem_0_address),
+    .auto_asource_out_a_mem_0_mask(coupler_to_aon_auto_asource_out_a_mem_0_mask),
+    .auto_asource_out_a_mem_0_data(coupler_to_aon_auto_asource_out_a_mem_0_data),
+    .auto_asource_out_a_mem_0_corrupt(coupler_to_aon_auto_asource_out_a_mem_0_corrupt),
+    .auto_asource_out_a_ridx(coupler_to_aon_auto_asource_out_a_ridx),
+    .auto_asource_out_a_widx(coupler_to_aon_auto_asource_out_a_widx),
+    .auto_asource_out_a_safe_ridx_valid(coupler_to_aon_auto_asource_out_a_safe_ridx_valid),
+    .auto_asource_out_a_safe_widx_valid(coupler_to_aon_auto_asource_out_a_safe_widx_valid),
+    .auto_asource_out_a_safe_source_reset_n(coupler_to_aon_auto_asource_out_a_safe_source_reset_n),
+    .auto_asource_out_a_safe_sink_reset_n(coupler_to_aon_auto_asource_out_a_safe_sink_reset_n),
+    .auto_asource_out_d_mem_0_opcode(coupler_to_aon_auto_asource_out_d_mem_0_opcode),
+    .auto_asource_out_d_mem_0_param(coupler_to_aon_auto_asource_out_d_mem_0_param),
+    .auto_asource_out_d_mem_0_size(coupler_to_aon_auto_asource_out_d_mem_0_size),
+    .auto_asource_out_d_mem_0_source(coupler_to_aon_auto_asource_out_d_mem_0_source),
+    .auto_asource_out_d_mem_0_sink(coupler_to_aon_auto_asource_out_d_mem_0_sink),
+    .auto_asource_out_d_mem_0_denied(coupler_to_aon_auto_asource_out_d_mem_0_denied),
+    .auto_asource_out_d_mem_0_data(coupler_to_aon_auto_asource_out_d_mem_0_data),
+    .auto_asource_out_d_mem_0_corrupt(coupler_to_aon_auto_asource_out_d_mem_0_corrupt),
+    .auto_asource_out_d_ridx(coupler_to_aon_auto_asource_out_d_ridx),
+    .auto_asource_out_d_widx(coupler_to_aon_auto_asource_out_d_widx),
+    .auto_asource_out_d_safe_ridx_valid(coupler_to_aon_auto_asource_out_d_safe_ridx_valid),
+    .auto_asource_out_d_safe_widx_valid(coupler_to_aon_auto_asource_out_d_safe_widx_valid),
+    .auto_asource_out_d_safe_source_reset_n(coupler_to_aon_auto_asource_out_d_safe_source_reset_n),
+    .auto_asource_out_d_safe_sink_reset_n(coupler_to_aon_auto_asource_out_d_safe_sink_reset_n),
+    .auto_tl_in_a_ready(coupler_to_aon_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_aon_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_aon_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_aon_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_aon_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_aon_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_aon_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_aon_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_aon_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_aon_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_aon_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_aon_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_aon_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_param(coupler_to_aon_auto_tl_in_d_bits_param),
+    .auto_tl_in_d_bits_size(coupler_to_aon_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_aon_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_sink(coupler_to_aon_auto_tl_in_d_bits_sink),
+    .auto_tl_in_d_bits_denied(coupler_to_aon_auto_tl_in_d_bits_denied),
+    .auto_tl_in_d_bits_data(coupler_to_aon_auto_tl_in_d_bits_data),
+    .auto_tl_in_d_bits_corrupt(coupler_to_aon_auto_tl_in_d_bits_corrupt)
+  );
+  TLInterconnectCoupler_25 coupler_to_bootrom ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_bootrom_clock),
+    .reset(coupler_to_bootrom_reset),
+    .auto_fragmenter_out_a_ready(coupler_to_bootrom_auto_fragmenter_out_a_ready),
+    .auto_fragmenter_out_a_valid(coupler_to_bootrom_auto_fragmenter_out_a_valid),
+    .auto_fragmenter_out_a_bits_opcode(coupler_to_bootrom_auto_fragmenter_out_a_bits_opcode),
+    .auto_fragmenter_out_a_bits_param(coupler_to_bootrom_auto_fragmenter_out_a_bits_param),
+    .auto_fragmenter_out_a_bits_size(coupler_to_bootrom_auto_fragmenter_out_a_bits_size),
+    .auto_fragmenter_out_a_bits_source(coupler_to_bootrom_auto_fragmenter_out_a_bits_source),
+    .auto_fragmenter_out_a_bits_address(coupler_to_bootrom_auto_fragmenter_out_a_bits_address),
+    .auto_fragmenter_out_a_bits_mask(coupler_to_bootrom_auto_fragmenter_out_a_bits_mask),
+    .auto_fragmenter_out_a_bits_corrupt(coupler_to_bootrom_auto_fragmenter_out_a_bits_corrupt),
+    .auto_fragmenter_out_d_ready(coupler_to_bootrom_auto_fragmenter_out_d_ready),
+    .auto_fragmenter_out_d_valid(coupler_to_bootrom_auto_fragmenter_out_d_valid),
+    .auto_fragmenter_out_d_bits_size(coupler_to_bootrom_auto_fragmenter_out_d_bits_size),
+    .auto_fragmenter_out_d_bits_source(coupler_to_bootrom_auto_fragmenter_out_d_bits_source),
+    .auto_fragmenter_out_d_bits_data(coupler_to_bootrom_auto_fragmenter_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_bootrom_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_bootrom_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_bootrom_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_bootrom_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_bootrom_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_bootrom_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_bootrom_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_bootrom_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_corrupt(coupler_to_bootrom_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_bootrom_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_bootrom_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_size(coupler_to_bootrom_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_bootrom_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_bootrom_auto_tl_in_d_bits_data)
+  );
+  assign auto_coupler_to_bootrom_fragmenter_out_a_valid = coupler_to_bootrom_auto_fragmenter_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bootrom_fragmenter_out_a_bits_opcode = coupler_to_bootrom_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bootrom_fragmenter_out_a_bits_param = coupler_to_bootrom_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bootrom_fragmenter_out_a_bits_size = coupler_to_bootrom_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bootrom_fragmenter_out_a_bits_source = coupler_to_bootrom_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bootrom_fragmenter_out_a_bits_address = coupler_to_bootrom_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bootrom_fragmenter_out_a_bits_mask = coupler_to_bootrom_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bootrom_fragmenter_out_a_bits_corrupt = coupler_to_bootrom_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bootrom_fragmenter_out_d_ready = coupler_to_bootrom_auto_fragmenter_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_mem_0_opcode = coupler_to_aon_auto_asource_out_a_mem_0_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_mem_0_param = coupler_to_aon_auto_asource_out_a_mem_0_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_mem_0_size = coupler_to_aon_auto_asource_out_a_mem_0_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_mem_0_source = coupler_to_aon_auto_asource_out_a_mem_0_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_mem_0_address = coupler_to_aon_auto_asource_out_a_mem_0_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_mem_0_mask = coupler_to_aon_auto_asource_out_a_mem_0_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_mem_0_data = coupler_to_aon_auto_asource_out_a_mem_0_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_mem_0_corrupt = coupler_to_aon_auto_asource_out_a_mem_0_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_widx = coupler_to_aon_auto_asource_out_a_widx; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_safe_widx_valid = coupler_to_aon_auto_asource_out_a_safe_widx_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_a_safe_source_reset_n = coupler_to_aon_auto_asource_out_a_safe_source_reset_n; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_d_ridx = coupler_to_aon_auto_asource_out_d_ridx; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_d_safe_ridx_valid = coupler_to_aon_auto_asource_out_d_safe_ridx_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_aon_asource_out_d_safe_sink_reset_n = coupler_to_aon_auto_asource_out_d_safe_sink_reset_n; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_valid = coupler_to_tile_auto_tl_slave_clock_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_opcode =
+    coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_param =
+    coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_size =
+    coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_source =
+    coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_address =
+    coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_mask =
+    coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_data =
+    coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_corrupt =
+    coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_tile_tl_slave_clock_xing_out_d_ready = coupler_to_tile_auto_tl_slave_clock_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_valid = coupler_to_debug_auto_fragmenter_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_bits_opcode = coupler_to_debug_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_bits_param = coupler_to_debug_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_bits_size = coupler_to_debug_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_bits_source = coupler_to_debug_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_bits_address = coupler_to_debug_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_bits_mask = coupler_to_debug_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_bits_data = coupler_to_debug_auto_fragmenter_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_a_bits_corrupt = coupler_to_debug_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_debug_fragmenter_out_d_ready = coupler_to_debug_auto_fragmenter_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_valid = coupler_to_clint_auto_fragmenter_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_bits_opcode = coupler_to_clint_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_bits_param = coupler_to_clint_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_bits_size = coupler_to_clint_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_bits_source = coupler_to_clint_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_bits_address = coupler_to_clint_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_bits_mask = coupler_to_clint_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_bits_data = coupler_to_clint_auto_fragmenter_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_a_bits_corrupt = coupler_to_clint_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_clint_fragmenter_out_d_ready = coupler_to_clint_auto_fragmenter_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_valid = coupler_to_plic_auto_fragmenter_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_bits_opcode = coupler_to_plic_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_bits_param = coupler_to_plic_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_bits_size = coupler_to_plic_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_bits_source = coupler_to_plic_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_bits_address = coupler_to_plic_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_bits_mask = coupler_to_plic_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_bits_data = coupler_to_plic_auto_fragmenter_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_a_bits_corrupt = coupler_to_plic_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_plic_fragmenter_out_d_ready = coupler_to_plic_auto_fragmenter_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_valid =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_opcode =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_param =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_size =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_source =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_address =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_mask =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_data =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_corrupt =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_ready =
+    coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_2_clock = fixedClockNode_auto_out_3_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_2_reset = fixedClockNode_auto_out_3_reset; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_0_clock = fixedClockNode_auto_out_1_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_0_reset = fixedClockNode_auto_out_1_reset; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_clock =
+    subsystem_cbus_clock_groups_auto_out_1_member_subsystem_pbus_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_reset =
+    subsystem_cbus_clock_groups_auto_out_1_member_subsystem_pbus_0_reset; // @[LazyModule.scala 311:12]
+  assign auto_bus_xing_in_a_ready = buffer_1_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_valid = buffer_1_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_opcode = buffer_1_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_param = buffer_1_auto_in_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_size = buffer_1_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_source = buffer_1_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_sink = buffer_1_auto_in_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_denied = buffer_1_auto_in_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_data = buffer_1_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_corrupt = buffer_1_auto_in_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_1_clock =
+    auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_1_reset =
+    auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_reset; // @[LazyModule.scala 309:16]
+  assign subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_0_clock =
+    auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_cbus_clock_groups_auto_in_member_subsystem_cbus_0_reset =
+    auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_reset; // @[LazyModule.scala 309:16]
+  assign clockGroup_auto_in_member_subsystem_cbus_0_clock =
+    subsystem_cbus_clock_groups_auto_out_0_member_subsystem_cbus_0_clock; // @[LazyModule.scala 298:16]
+  assign clockGroup_auto_in_member_subsystem_cbus_0_reset =
+    subsystem_cbus_clock_groups_auto_out_0_member_subsystem_cbus_0_reset; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_clock = clockGroup_auto_out_clock; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_reset = clockGroup_auto_out_reset; // @[LazyModule.scala 298:16]
+  assign fixer_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fixer_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fixer_auto_in_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_data = buffer_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_a_ready = out_xbar_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_valid = out_xbar_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_opcode = out_xbar_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_param = out_xbar_auto_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_size = out_xbar_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_source = out_xbar_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_sink = out_xbar_auto_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_denied = out_xbar_auto_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_data = out_xbar_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign fixer_auto_out_d_bits_corrupt = out_xbar_auto_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_in_a_valid = buffer_1_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_param = buffer_1_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_size = buffer_1_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_source = buffer_1_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_address = buffer_1_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_mask = buffer_1_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_data = buffer_1_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_a_bits_corrupt = buffer_1_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_d_ready = buffer_1_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_out_a_ready = atomics_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_valid = atomics_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_opcode = atomics_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_param = atomics_auto_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_size = atomics_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_source = atomics_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_sink = atomics_auto_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_denied = atomics_auto_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_data = atomics_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign in_xbar_auto_out_d_bits_corrupt = atomics_auto_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign out_xbar_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign out_xbar_auto_in_a_valid = fixer_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_opcode = fixer_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_param = fixer_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_size = fixer_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_source = fixer_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_address = fixer_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_mask = fixer_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_data = fixer_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_a_bits_corrupt = fixer_auto_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_in_d_ready = fixer_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_a_ready = coupler_to_bootrom_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_valid = coupler_to_bootrom_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_size = coupler_to_bootrom_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_source = coupler_to_bootrom_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_data = coupler_to_bootrom_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_a_ready = coupler_to_aon_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_valid = coupler_to_aon_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_opcode = coupler_to_aon_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_param = coupler_to_aon_auto_tl_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_size = coupler_to_aon_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_source = coupler_to_aon_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_sink = coupler_to_aon_auto_tl_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_denied = coupler_to_aon_auto_tl_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_data = coupler_to_aon_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_corrupt = coupler_to_aon_auto_tl_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_a_ready = coupler_to_tile_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_valid = coupler_to_tile_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_opcode = coupler_to_tile_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_param = coupler_to_tile_auto_tl_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_size = coupler_to_tile_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_source = coupler_to_tile_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_sink = coupler_to_tile_auto_tl_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_denied = coupler_to_tile_auto_tl_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_data = coupler_to_tile_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_5_d_bits_corrupt = coupler_to_tile_auto_tl_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_a_ready = coupler_to_debug_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_valid = coupler_to_debug_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_opcode = coupler_to_debug_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_size = coupler_to_debug_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_source = coupler_to_debug_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_data = coupler_to_debug_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_a_ready = coupler_to_clint_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_valid = coupler_to_clint_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_opcode = coupler_to_clint_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_size = coupler_to_clint_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_source = coupler_to_clint_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_data = coupler_to_clint_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_a_ready = coupler_to_plic_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_valid = coupler_to_plic_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_opcode = coupler_to_plic_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_size = coupler_to_plic_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_source = coupler_to_plic_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_data = coupler_to_plic_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_a_ready = coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_valid = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_opcode = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_param = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_size = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_source = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_sink = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_denied = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_data = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_corrupt = coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_a_ready = wrapped_error_device_auto_buffer_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_valid = wrapped_error_device_auto_buffer_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_opcode = wrapped_error_device_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_param = wrapped_error_device_auto_buffer_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_size = wrapped_error_device_auto_buffer_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_source = wrapped_error_device_auto_buffer_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_sink = wrapped_error_device_auto_buffer_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_denied = wrapped_error_device_auto_buffer_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_data = wrapped_error_device_auto_buffer_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_corrupt = wrapped_error_device_auto_buffer_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign buffer_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_in_a_valid = atomics_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_opcode = atomics_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_param = atomics_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_size = atomics_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_source = atomics_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_address = atomics_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_mask = atomics_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_data = atomics_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_corrupt = atomics_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_d_ready = atomics_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_a_ready = fixer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = fixer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = fixer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_param = fixer_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_size = fixer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = fixer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_sink = fixer_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_denied = fixer_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = fixer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_corrupt = fixer_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign atomics_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign atomics_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign atomics_auto_in_a_valid = in_xbar_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_opcode = in_xbar_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_param = in_xbar_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_size = in_xbar_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_source = in_xbar_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_address = in_xbar_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_mask = in_xbar_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_data = in_xbar_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_a_bits_corrupt = in_xbar_auto_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign atomics_auto_in_d_ready = in_xbar_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign atomics_auto_out_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_param = buffer_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_source = buffer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_sink = buffer_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_denied = buffer_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign atomics_auto_out_d_bits_corrupt = buffer_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign wrapped_error_device_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign wrapped_error_device_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign wrapped_error_device_auto_buffer_in_a_valid = out_xbar_auto_out_0_a_valid; // @[LazyModule.scala 298:16]
+  assign wrapped_error_device_auto_buffer_in_a_bits_opcode = out_xbar_auto_out_0_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign wrapped_error_device_auto_buffer_in_a_bits_param = out_xbar_auto_out_0_a_bits_param; // @[LazyModule.scala 298:16]
+  assign wrapped_error_device_auto_buffer_in_a_bits_size = out_xbar_auto_out_0_a_bits_size; // @[LazyModule.scala 298:16]
+  assign wrapped_error_device_auto_buffer_in_a_bits_source = out_xbar_auto_out_0_a_bits_source; // @[LazyModule.scala 298:16]
+  assign wrapped_error_device_auto_buffer_in_a_bits_address = out_xbar_auto_out_0_a_bits_address; // @[LazyModule.scala 298:16]
+  assign wrapped_error_device_auto_buffer_in_a_bits_mask = out_xbar_auto_out_0_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign wrapped_error_device_auto_buffer_in_a_bits_corrupt = out_xbar_auto_out_0_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign wrapped_error_device_auto_buffer_in_d_ready = out_xbar_auto_out_0_d_ready; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_a_valid = auto_bus_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_opcode = auto_bus_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_param = auto_bus_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_size = auto_bus_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_source = auto_bus_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_address = auto_bus_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_mask = auto_bus_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_data = auto_bus_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_corrupt = auto_bus_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_d_ready = auto_bus_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_out_a_ready = in_xbar_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_valid = in_xbar_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_opcode = in_xbar_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_param = in_xbar_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_size = in_xbar_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_source = in_xbar_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_sink = in_xbar_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_denied = in_xbar_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_data = in_xbar_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_corrupt = in_xbar_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_valid = out_xbar_auto_out_1_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_opcode = out_xbar_auto_out_1_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_param = out_xbar_auto_out_1_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_size = out_xbar_auto_out_1_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_source = out_xbar_auto_out_1_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_address = out_xbar_auto_out_1_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_mask = out_xbar_auto_out_1_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_data = out_xbar_auto_out_1_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_corrupt = out_xbar_auto_out_1_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_widget_in_d_ready = out_xbar_auto_out_1_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_ready =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_valid =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_opcode =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_param =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_param; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_size =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_source =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_sink =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_denied =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_denied; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_data =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_d_bits_corrupt =
+    auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign coupler_to_plic_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_plic_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_plic_auto_fragmenter_out_a_ready = auto_coupler_to_plic_fragmenter_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_plic_auto_fragmenter_out_d_valid = auto_coupler_to_plic_fragmenter_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_plic_auto_fragmenter_out_d_bits_opcode = auto_coupler_to_plic_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_plic_auto_fragmenter_out_d_bits_size = auto_coupler_to_plic_fragmenter_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_plic_auto_fragmenter_out_d_bits_source = auto_coupler_to_plic_fragmenter_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_plic_auto_fragmenter_out_d_bits_data = auto_coupler_to_plic_fragmenter_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_plic_auto_tl_in_a_valid = out_xbar_auto_out_2_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_a_bits_opcode = out_xbar_auto_out_2_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_a_bits_param = out_xbar_auto_out_2_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_a_bits_size = out_xbar_auto_out_2_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_a_bits_source = out_xbar_auto_out_2_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_a_bits_address = out_xbar_auto_out_2_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_a_bits_mask = out_xbar_auto_out_2_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_a_bits_data = out_xbar_auto_out_2_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_2_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_plic_auto_tl_in_d_ready = out_xbar_auto_out_2_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_clint_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_clint_auto_fragmenter_out_a_ready = auto_coupler_to_clint_fragmenter_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_clint_auto_fragmenter_out_d_valid = auto_coupler_to_clint_fragmenter_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_clint_auto_fragmenter_out_d_bits_opcode = auto_coupler_to_clint_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_clint_auto_fragmenter_out_d_bits_size = auto_coupler_to_clint_fragmenter_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_clint_auto_fragmenter_out_d_bits_source = auto_coupler_to_clint_fragmenter_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_clint_auto_fragmenter_out_d_bits_data = auto_coupler_to_clint_fragmenter_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_clint_auto_tl_in_a_valid = out_xbar_auto_out_3_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_a_bits_opcode = out_xbar_auto_out_3_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_a_bits_param = out_xbar_auto_out_3_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_a_bits_size = out_xbar_auto_out_3_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_a_bits_source = out_xbar_auto_out_3_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_a_bits_address = out_xbar_auto_out_3_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_a_bits_mask = out_xbar_auto_out_3_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_a_bits_data = out_xbar_auto_out_3_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_3_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_clint_auto_tl_in_d_ready = out_xbar_auto_out_3_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_debug_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_debug_auto_fragmenter_out_a_ready = auto_coupler_to_debug_fragmenter_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_debug_auto_fragmenter_out_d_valid = auto_coupler_to_debug_fragmenter_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_debug_auto_fragmenter_out_d_bits_opcode = auto_coupler_to_debug_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_debug_auto_fragmenter_out_d_bits_size = auto_coupler_to_debug_fragmenter_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_debug_auto_fragmenter_out_d_bits_source = auto_coupler_to_debug_fragmenter_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_debug_auto_fragmenter_out_d_bits_data = auto_coupler_to_debug_fragmenter_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_debug_auto_tl_in_a_valid = out_xbar_auto_out_4_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_a_bits_opcode = out_xbar_auto_out_4_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_a_bits_param = out_xbar_auto_out_4_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_a_bits_size = out_xbar_auto_out_4_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_a_bits_source = out_xbar_auto_out_4_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_a_bits_address = out_xbar_auto_out_4_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_a_bits_mask = out_xbar_auto_out_4_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_a_bits_data = out_xbar_auto_out_4_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_4_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_debug_auto_tl_in_d_ready = out_xbar_auto_out_4_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_a_ready = auto_coupler_to_tile_tl_slave_clock_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_valid = auto_coupler_to_tile_tl_slave_clock_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_opcode =
+    auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_param =
+    auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_param; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_size =
+    auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_source =
+    auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_sink =
+    auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_denied =
+    auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_denied; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_data =
+    auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_slave_clock_xing_out_d_bits_corrupt =
+    auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign coupler_to_tile_auto_tl_in_a_valid = out_xbar_auto_out_5_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_a_bits_opcode = out_xbar_auto_out_5_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_a_bits_param = out_xbar_auto_out_5_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_a_bits_size = out_xbar_auto_out_5_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_a_bits_source = out_xbar_auto_out_5_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_a_bits_address = out_xbar_auto_out_5_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_a_bits_mask = out_xbar_auto_out_5_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_a_bits_data = out_xbar_auto_out_5_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_5_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_tile_auto_tl_in_d_ready = out_xbar_auto_out_5_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_aon_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_aon_auto_asource_out_a_ridx = auto_coupler_to_aon_asource_out_a_ridx; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_a_safe_ridx_valid = auto_coupler_to_aon_asource_out_a_safe_ridx_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_a_safe_sink_reset_n = auto_coupler_to_aon_asource_out_a_safe_sink_reset_n; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_mem_0_opcode = auto_coupler_to_aon_asource_out_d_mem_0_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_mem_0_param = auto_coupler_to_aon_asource_out_d_mem_0_param; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_mem_0_size = auto_coupler_to_aon_asource_out_d_mem_0_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_mem_0_source = auto_coupler_to_aon_asource_out_d_mem_0_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_mem_0_sink = auto_coupler_to_aon_asource_out_d_mem_0_sink; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_mem_0_denied = auto_coupler_to_aon_asource_out_d_mem_0_denied; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_mem_0_data = auto_coupler_to_aon_asource_out_d_mem_0_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_mem_0_corrupt = auto_coupler_to_aon_asource_out_d_mem_0_corrupt; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_widx = auto_coupler_to_aon_asource_out_d_widx; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_safe_widx_valid = auto_coupler_to_aon_asource_out_d_safe_widx_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_asource_out_d_safe_source_reset_n = auto_coupler_to_aon_asource_out_d_safe_source_reset_n; // @[LazyModule.scala 311:12]
+  assign coupler_to_aon_auto_tl_in_a_valid = out_xbar_auto_out_6_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_a_bits_opcode = out_xbar_auto_out_6_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_a_bits_param = out_xbar_auto_out_6_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_a_bits_size = out_xbar_auto_out_6_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_a_bits_source = out_xbar_auto_out_6_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_a_bits_address = out_xbar_auto_out_6_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_a_bits_mask = out_xbar_auto_out_6_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_a_bits_data = out_xbar_auto_out_6_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_6_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_aon_auto_tl_in_d_ready = out_xbar_auto_out_6_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_bootrom_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_bootrom_auto_fragmenter_out_a_ready = auto_coupler_to_bootrom_fragmenter_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_bootrom_auto_fragmenter_out_d_valid = auto_coupler_to_bootrom_fragmenter_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_bootrom_auto_fragmenter_out_d_bits_size = auto_coupler_to_bootrom_fragmenter_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_bootrom_auto_fragmenter_out_d_bits_source = auto_coupler_to_bootrom_fragmenter_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_bootrom_auto_fragmenter_out_d_bits_data = auto_coupler_to_bootrom_fragmenter_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_bootrom_auto_tl_in_a_valid = out_xbar_auto_out_7_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_opcode = out_xbar_auto_out_7_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_param = out_xbar_auto_out_7_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_size = out_xbar_auto_out_7_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_source = out_xbar_auto_out_7_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_address = out_xbar_auto_out_7_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_mask = out_xbar_auto_out_7_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_7_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_d_ready = out_xbar_auto_out_7_d_ready; // @[LazyModule.scala 298:16]
+endmodule
+module ClockGroupAggregator_4(
+  input   auto_in_member_subsystem_mbus_0_clock,
+  input   auto_in_member_subsystem_mbus_0_reset,
+  output  auto_out_member_subsystem_mbus_0_clock,
+  output  auto_out_member_subsystem_mbus_0_reset
+);
+  assign auto_out_member_subsystem_mbus_0_clock = auto_in_member_subsystem_mbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_member_subsystem_mbus_0_reset = auto_in_member_subsystem_mbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockGroup_4(
+  input   auto_in_member_subsystem_mbus_0_clock,
+  input   auto_in_member_subsystem_mbus_0_reset,
+  output  auto_out_clock,
+  output  auto_out_reset
+);
+  assign auto_out_clock = auto_in_member_subsystem_mbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_reset = auto_in_member_subsystem_mbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLXbar_6(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Xbar.scala 228:69]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_36(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [3:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [3:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [63:0] _RAND_11;
+  reg [63:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [63:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_71 = {{25'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [30:0] _T_33 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_36 = $signed(_T_34) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_270 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_271 = io_in_a_bits_mask & _T_270; // @[Monitor.scala 127:31]
+  wire  _T_272 = _T_271 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_306 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_314 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_344 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_352 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_382 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_394 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_398 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_402 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_418 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_446 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [3:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_540 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_541 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_545 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_549 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_553 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_557 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [3:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_564 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_565 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_573 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_577 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [15:0] inflight; // @[Monitor.scala 611:27]
+  reg [63:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [63:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [5:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [6:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [63:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [63:0] _GEN_73 = {{48'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[63:1]}; // @[Monitor.scala 634:152]
+  wire [63:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [63:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [63:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[63:1]}; // @[Monitor.scala 638:144]
+  wire  _T_591 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [15:0] _a_set_wo_ready_T = 16'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] a_set_wo_ready = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_594 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [5:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [6:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [130:0] _GEN_1 = {{127'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [130:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [130:0] _GEN_2 = {{127'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [130:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [15:0] _T_596 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_598 = ~_T_596[0]; // @[Monitor.scala 658:17]
+  wire [15:0] a_set = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 652:72 653:28]
+  wire [130:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 656:28]
+  wire [130:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_602 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_604 = ~_T_398; // @[Monitor.scala 671:74]
+  wire  _T_605 = io_in_d_valid & d_first_1 & ~_T_398; // @[Monitor.scala 671:71]
+  wire [15:0] _d_clr_wo_ready_T = 16'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] d_clr_wo_ready = io_in_d_valid & d_first_1 & ~_T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 671:90 672:22]
+  wire [142:0] _GEN_3 = {{127'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [142:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [15:0] d_clr = _d_first_T & d_first_1 & _T_604 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 675:91 676:21]
+  wire [142:0] _GEN_23 = _d_first_T & d_first_1 & _T_604 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_591 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [15:0] _T_615 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_617 = _T_615[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_622 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_623 = io_in_d_bits_opcode == _GEN_32 | _T_622; // @[Monitor.scala 685:77]
+  wire  _T_627 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_634 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_635 = io_in_d_bits_opcode == _GEN_48 | _T_634; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_639 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_649 = _T_602 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_604; // @[Monitor.scala 694:116]
+  wire  _T_651 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_658 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [15:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [15:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [15:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [63:0] a_opcodes_set = _GEN_19[63:0];
+  wire [63:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [63:0] d_opcodes_clr = _GEN_23[63:0];
+  wire [63:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [63:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [63:0] a_sizes_set = _GEN_20[63:0];
+  wire [63:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [63:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_667 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [15:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [63:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [63:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [63:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [63:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[63:1]}; // @[Monitor.scala 747:146]
+  wire  _T_693 = io_in_d_valid & d_first_2 & _T_398; // @[Monitor.scala 779:71]
+  wire [15:0] d_clr_1 = _d_first_T & d_first_2 & _T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 783:90 784:21]
+  wire [142:0] _GEN_68 = _d_first_T & d_first_2 & _T_398 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 783:90 785:21]
+  wire [15:0] _T_701 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_711 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [15:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [15:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [63:0] d_opcodes_clr_1 = _GEN_68[63:0];
+  wire [63:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [63:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_736 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 16'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 64'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 64'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 16'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 64'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_306 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_344 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_344) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_382 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_382) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_394 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_394) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_398 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_398 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_418 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_446 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_541 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_541) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_545 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_545) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_549 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_549) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_557 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_557) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_T_594 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_594 & ~reset & ~_T_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_617 & (_T_605 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & _T_2 & ~_T_617) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_623 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_623) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_627 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_627) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_635 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_635) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_639 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_639) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_651 & (_T_649 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_649 & _T_2 & ~_T_651) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_658 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_658) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_667 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_667) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_701[0] & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_701[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_711 & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_711) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_736 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_736) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[15:0];
+  _RAND_11 = {2{`RANDOM}};
+  inflight_opcodes = _RAND_11[63:0];
+  _RAND_12 = {2{`RANDOM}};
+  inflight_sizes = _RAND_12[63:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[15:0];
+  _RAND_17 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[63:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFIFOFixer_3(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  TLMonitor_36 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_in_a_ready = auto_out_a_ready; // @[FIFOFixer.scala 88:33]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[FIFOFixer.scala 87:33]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_out_a_ready; // @[FIFOFixer.scala 88:33]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_37(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [3:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [3:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [63:0] _RAND_11;
+  reg [63:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [63:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_71 = {{25'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [30:0] _T_33 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_36 = $signed(_T_34) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_270 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_271 = io_in_a_bits_mask & _T_270; // @[Monitor.scala 127:31]
+  wire  _T_272 = _T_271 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_306 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_314 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_344 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_352 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_382 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_394 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_398 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_402 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_418 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_446 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [3:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_540 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_541 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_545 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_549 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_553 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_557 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [3:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_564 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_565 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_573 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_577 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [15:0] inflight; // @[Monitor.scala 611:27]
+  reg [63:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [63:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [5:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [6:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [63:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [63:0] _GEN_73 = {{48'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[63:1]}; // @[Monitor.scala 634:152]
+  wire [63:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [63:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [63:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[63:1]}; // @[Monitor.scala 638:144]
+  wire  _T_591 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [15:0] _a_set_wo_ready_T = 16'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] a_set_wo_ready = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_594 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [5:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [6:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [130:0] _GEN_1 = {{127'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [130:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [130:0] _GEN_2 = {{127'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [130:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [15:0] _T_596 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_598 = ~_T_596[0]; // @[Monitor.scala 658:17]
+  wire [15:0] a_set = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 652:72 653:28]
+  wire [130:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 656:28]
+  wire [130:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_602 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_604 = ~_T_398; // @[Monitor.scala 671:74]
+  wire  _T_605 = io_in_d_valid & d_first_1 & ~_T_398; // @[Monitor.scala 671:71]
+  wire [15:0] _d_clr_wo_ready_T = 16'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] d_clr_wo_ready = io_in_d_valid & d_first_1 & ~_T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 671:90 672:22]
+  wire [142:0] _GEN_3 = {{127'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [142:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [15:0] d_clr = _d_first_T & d_first_1 & _T_604 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 675:91 676:21]
+  wire [142:0] _GEN_23 = _d_first_T & d_first_1 & _T_604 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_591 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [15:0] _T_615 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_617 = _T_615[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_622 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_623 = io_in_d_bits_opcode == _GEN_32 | _T_622; // @[Monitor.scala 685:77]
+  wire  _T_627 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_634 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_635 = io_in_d_bits_opcode == _GEN_48 | _T_634; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_639 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_649 = _T_602 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_604; // @[Monitor.scala 694:116]
+  wire  _T_651 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_658 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [15:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [15:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [15:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [63:0] a_opcodes_set = _GEN_19[63:0];
+  wire [63:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [63:0] d_opcodes_clr = _GEN_23[63:0];
+  wire [63:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [63:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [63:0] a_sizes_set = _GEN_20[63:0];
+  wire [63:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [63:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_667 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [15:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [63:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [63:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [63:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [63:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[63:1]}; // @[Monitor.scala 747:146]
+  wire  _T_693 = io_in_d_valid & d_first_2 & _T_398; // @[Monitor.scala 779:71]
+  wire [15:0] d_clr_1 = _d_first_T & d_first_2 & _T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 783:90 784:21]
+  wire [142:0] _GEN_68 = _d_first_T & d_first_2 & _T_398 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 783:90 785:21]
+  wire [15:0] _T_701 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_711 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [15:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [15:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [63:0] d_opcodes_clr_1 = _GEN_68[63:0];
+  wire [63:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [63:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_736 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 16'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 64'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 64'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 16'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 64'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_306 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_344 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_344) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_382 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_382) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_394 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_394) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_398 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_398 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_418 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_446 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_541 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_541) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_545 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_545) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_549 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_549) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_557 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_557) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_T_594 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_594 & ~reset & ~_T_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_617 & (_T_605 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & _T_2 & ~_T_617) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_623 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_623) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_627 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_627) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_635 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_635) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_639 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_639) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_651 & (_T_649 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_649 & _T_2 & ~_T_651) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_658 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_658) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_667 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_667) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_701[0] & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_701[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_711 & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_711) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_736 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_736) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at MemoryBus.scala:47:50)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[15:0];
+  _RAND_11 = {2{`RANDOM}};
+  inflight_opcodes = _RAND_11[63:0];
+  _RAND_12 = {2{`RANDOM}};
+  inflight_sizes = _RAND_12[63:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[15:0];
+  _RAND_17 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[63:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ProbePicker(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  TLMonitor_37 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLBuffer_7(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_38(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [3:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input         io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [3:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [63:0] _RAND_11;
+  reg [63:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [63:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_71 = {{25'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [30:0] _T_33 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_36 = $signed(_T_34) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_306 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_314 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_344 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_352 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_382 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_394 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_398 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_418 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_446 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [5:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [5:0] a_first_counter1 = a_first_counter - 6'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 6'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [3:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_540 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_541 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_545 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_549 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_553 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_557 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] d_first_beats1_decode = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [5:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1 = d_first_counter - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 6'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [3:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_564 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_565 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_573 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_577 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [15:0] inflight; // @[Monitor.scala 611:27]
+  reg [63:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [63:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [5:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [5:0] a_first_counter1_1 = a_first_counter_1 - 6'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 6'h0; // @[Edges.scala 230:25]
+  reg [5:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1_1 = d_first_counter_1 - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 6'h0; // @[Edges.scala 230:25]
+  wire [5:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [6:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [63:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [63:0] _GEN_73 = {{48'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[63:1]}; // @[Monitor.scala 634:152]
+  wire [63:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [63:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [63:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[63:1]}; // @[Monitor.scala 638:144]
+  wire  _T_591 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [15:0] _a_set_wo_ready_T = 16'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_594 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [5:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [6:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [130:0] _GEN_1 = {{127'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [130:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [130:0] _GEN_2 = {{127'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [130:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [15:0] _T_596 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_598 = ~_T_596[0]; // @[Monitor.scala 658:17]
+  wire [15:0] a_set = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 652:72 653:28]
+  wire [130:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 656:28]
+  wire [130:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_602 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_604 = ~_T_398; // @[Monitor.scala 671:74]
+  wire  _T_605 = io_in_d_valid & d_first_1 & ~_T_398; // @[Monitor.scala 671:71]
+  wire [15:0] _d_clr_wo_ready_T = 16'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [142:0] _GEN_3 = {{127'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [142:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [15:0] d_clr = _d_first_T & d_first_1 & _T_604 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 675:91 676:21]
+  wire [142:0] _GEN_23 = _d_first_T & d_first_1 & _T_604 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_591 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [15:0] _T_615 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_617 = _T_615[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_622 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_623 = io_in_d_bits_opcode == _GEN_32 | _T_622; // @[Monitor.scala 685:77]
+  wire  _T_627 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_634 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_635 = io_in_d_bits_opcode == _GEN_48 | _T_634; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_639 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_649 = _T_602 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_604; // @[Monitor.scala 694:116]
+  wire  _T_651 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [15:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [15:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [15:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [63:0] a_opcodes_set = _GEN_19[63:0];
+  wire [63:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [63:0] d_opcodes_clr = _GEN_23[63:0];
+  wire [63:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [63:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [63:0] a_sizes_set = _GEN_20[63:0];
+  wire [63:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [63:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_660 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [15:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [63:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [5:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1_2 = d_first_counter_2 - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 6'h0; // @[Edges.scala 230:25]
+  wire [63:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [63:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [63:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[63:1]}; // @[Monitor.scala 747:146]
+  wire  _T_686 = io_in_d_valid & d_first_2 & _T_398; // @[Monitor.scala 779:71]
+  wire [15:0] d_clr_1 = _d_first_T & d_first_2 & _T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 783:90 784:21]
+  wire [142:0] _GEN_68 = _d_first_T & d_first_2 & _T_398 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 783:90 785:21]
+  wire [15:0] _T_694 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_704 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [15:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [15:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [63:0] d_opcodes_clr_1 = _GEN_68[63:0];
+  wire [63:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [63:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_724 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= is_aligned_mask;
+        end else begin
+          a_first_counter <= 6'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 6'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 16'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 64'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 64'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= is_aligned_mask;
+        end else begin
+          a_first_counter_1 <= 6'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 6'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 16'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 64'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 6'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_306 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_344 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_344) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_382 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_382) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_394 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_394) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_541 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_541) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_545 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_545) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_549 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_549) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_557 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_557) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_T_594 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_594 & ~reset & ~_T_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_617 & (_T_605 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & _T_2 & ~_T_617) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_623 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_623) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_627 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_627) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_635 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_635) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_639 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_639) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_651 & (_T_649 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_649 & _T_2 & ~_T_651) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_660 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_660) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_694[0] & (_T_686 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_686 & _T_2 & ~_T_694[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_704 & (_T_686 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_686 & _T_2 & ~_T_704) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:78:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_724 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_724) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:78:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[5:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[5:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[15:0];
+  _RAND_11 = {2{`RANDOM}};
+  inflight_opcodes = _RAND_11[63:0];
+  _RAND_12 = {2{`RANDOM}};
+  inflight_sizes = _RAND_12[63:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[5:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[5:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[15:0];
+  _RAND_17 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[63:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[5:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater_21(
+  input         clock,
+  input         reset,
+  input         io_repeat,
+  output        io_full,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [3:0]  io_enq_bits_source,
+  input  [30:0] io_enq_bits_address,
+  input         io_enq_bits_mask,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [3:0]  io_deq_bits_source,
+  output [30:0] io_deq_bits_address,
+  output        io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg  full; // @[Repeater.scala 19:21]
+  reg [2:0] saved_opcode; // @[Repeater.scala 20:18]
+  reg [2:0] saved_param; // @[Repeater.scala 20:18]
+  reg [2:0] saved_size; // @[Repeater.scala 20:18]
+  reg [3:0] saved_source; // @[Repeater.scala 20:18]
+  reg [30:0] saved_address; // @[Repeater.scala 20:18]
+  reg  saved_mask; // @[Repeater.scala 20:18]
+  reg  saved_corrupt; // @[Repeater.scala 20:18]
+  wire  _T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = _T & io_repeat | full; // @[Repeater.scala 19:21 28:{38,45}]
+  wire  _T_2 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign io_full = full; // @[Repeater.scala 26:11]
+  assign io_enq_ready = io_deq_ready & ~full; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid | full; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = full ? saved_opcode : io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = full ? saved_param : io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = full ? saved_size : io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = full ? saved_source : io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = full ? saved_address : io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = full ? saved_mask : io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_corrupt = full ? saved_corrupt : io_enq_bits_corrupt; // @[Repeater.scala 25:21]
+  always @(posedge clock) begin
+    if (reset) begin // @[Repeater.scala 19:21]
+      full <= 1'h0; // @[Repeater.scala 19:21]
+    end else if (_T_2 & ~io_repeat) begin // @[Repeater.scala 29:38]
+      full <= 1'h0; // @[Repeater.scala 29:45]
+    end else begin
+      full <= _GEN_0;
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_opcode <= io_enq_bits_opcode; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_param <= io_enq_bits_param; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_size <= io_enq_bits_size; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_source <= io_enq_bits_source; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_address <= io_enq_bits_address; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_mask <= io_enq_bits_mask; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_corrupt <= io_enq_bits_corrupt; // @[Repeater.scala 28:62]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  full = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  saved_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  saved_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  saved_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  saved_source = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  saved_corrupt = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_20(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input         auto_in_a_bits_mask,
+  input  [7:0]  auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [7:0]  auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output        auto_out_a_bits_size,
+  output [10:0] auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output        auto_out_a_bits_mask,
+  output [7:0]  auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input         auto_out_d_bits_size,
+  input  [10:0] auto_out_d_bits_source,
+  input  [7:0]  auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [30:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [30:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [5:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [5:0] dFragnum = auto_out_d_bits_source[5:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 6'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 6'h0; // @[Fragmenter.scala 194:30]
+  wire [1:0] _dsizeOH1_T_1 = 2'h1 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire  dsizeOH1 = ~_dsizeOH1_T_1[0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [5:0] _GEN_7 = {{5'd0}, dsizeOH1}; // @[Fragmenter.scala 202:50]
+  wire [5:0] _T_1 = dFragnum & _GEN_7; // @[Fragmenter.scala 202:50]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  _dFirst_acknum_T = dHasData & dsizeOH1; // @[Fragmenter.scala 203:50]
+  wire [5:0] _GEN_8 = {{5'd0}, _dFirst_acknum_T}; // @[Fragmenter.scala 203:45]
+  wire [5:0] dFirst_acknum = dFragnum | _GEN_8; // @[Fragmenter.scala 203:45]
+  wire [5:0] _dFirst_size_T_1 = dFragnum | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_10 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_10 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  drop = ~dHasData & ~dLast; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [5:0] _acknum_T_1 = acknum - 6'h1; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h0 ? 3'h0 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [7:0] _aFragOH1_T_1 = 8'h1 << aFrag; // @[package.scala 234:77]
+  wire  aFragOH1 = ~_aFragOH1_T_1[0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire  aMask = aHasData ? 1'h0 : aFragOH1; // @[Fragmenter.scala 289:24]
+  reg [5:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 6'h0; // @[Fragmenter.scala 292:29]
+  wire [5:0] _old_gennum1_T_2 = gennum - 6'h1; // @[Fragmenter.scala 293:79]
+  wire [5:0] old_gennum1 = aFirst ? aOrigOH1 : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [5:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [5:0] _GEN_11 = {{5'd0}, aMask}; // @[Fragmenter.scala 294:41]
+  wire [5:0] _new_gennum_T_2 = _new_gennum_T | _GEN_11; // @[Fragmenter.scala 294:41]
+  wire [5:0] new_gennum = ~_new_gennum_T_2; // @[Fragmenter.scala 294:26]
+  wire [5:0] _GEN_12 = {{5'd0}, aFragOH1}; // @[Fragmenter.scala 295:72]
+  wire [5:0] _aFragnum_T_3 = _new_gennum_T | _GEN_12; // @[Fragmenter.scala 295:72]
+  wire [5:0] aFragnum = ~_aFragnum_T_3; // @[Fragmenter.scala 295:24]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = old_gennum1 | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_12; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_3; // @[Fragmenter.scala 304:51]
+  wire [30:0] _GEN_14 = {{25'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [4:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aToggle}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  TLMonitor_38 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_21 repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[10:7]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_param = repeater_io_deq_bits_param; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,aFragnum}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_14; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full | auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = repeater_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[10:7]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & aFragnum != 6'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 6'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFirst_acknum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[6]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 6'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~auto_out_d_valid | _T_1 == 6'h0) & ~reset) begin
+          $fatal; // @[Fragmenter.scala 202:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~auto_out_d_valid | _T_1 == 6'h0)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:202 assert (!out.d.valid || (acknum_fragment & acknum_size) === UInt(0))\n"
+            ); // @[Fragmenter.scala 202:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[5:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[5:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_39(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [3:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input         io_in_a_bits_mask,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [3:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [63:0] _RAND_11;
+  reg [63:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [63:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_71 = {{25'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [30:0] _T_33 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_36 = $signed(_T_34) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_306 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_314 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_344 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_352 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_382 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_394 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_398 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_418 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_446 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [5:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [5:0] a_first_counter1 = a_first_counter - 6'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 6'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [3:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_540 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_541 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_545 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_549 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_553 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_557 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] d_first_beats1_decode = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [5:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1 = d_first_counter - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 6'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [3:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_564 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_565 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_573 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_577 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [15:0] inflight; // @[Monitor.scala 611:27]
+  reg [63:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [63:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [5:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [5:0] a_first_counter1_1 = a_first_counter_1 - 6'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 6'h0; // @[Edges.scala 230:25]
+  reg [5:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1_1 = d_first_counter_1 - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 6'h0; // @[Edges.scala 230:25]
+  wire [5:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [6:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [63:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [63:0] _GEN_73 = {{48'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[63:1]}; // @[Monitor.scala 634:152]
+  wire [63:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [63:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [63:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[63:1]}; // @[Monitor.scala 638:144]
+  wire  _T_591 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [15:0] _a_set_wo_ready_T = 16'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] a_set_wo_ready = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_594 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [5:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [6:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [130:0] _GEN_1 = {{127'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [130:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [130:0] _GEN_2 = {{127'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [130:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [15:0] _T_596 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_598 = ~_T_596[0]; // @[Monitor.scala 658:17]
+  wire [15:0] a_set = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 652:72 653:28]
+  wire [130:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 656:28]
+  wire [130:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_602 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_604 = ~_T_398; // @[Monitor.scala 671:74]
+  wire  _T_605 = io_in_d_valid & d_first_1 & ~_T_398; // @[Monitor.scala 671:71]
+  wire [15:0] _d_clr_wo_ready_T = 16'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] d_clr_wo_ready = io_in_d_valid & d_first_1 & ~_T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 671:90 672:22]
+  wire [142:0] _GEN_3 = {{127'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [142:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [15:0] d_clr = _d_first_T & d_first_1 & _T_604 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 675:91 676:21]
+  wire [142:0] _GEN_23 = _d_first_T & d_first_1 & _T_604 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_591 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [15:0] _T_615 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_617 = _T_615[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_622 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_623 = io_in_d_bits_opcode == _GEN_32 | _T_622; // @[Monitor.scala 685:77]
+  wire  _T_627 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_634 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_635 = io_in_d_bits_opcode == _GEN_48 | _T_634; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_639 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_649 = _T_602 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_604; // @[Monitor.scala 694:116]
+  wire  _T_651 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_658 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [15:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [15:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [15:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [63:0] a_opcodes_set = _GEN_19[63:0];
+  wire [63:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [63:0] d_opcodes_clr = _GEN_23[63:0];
+  wire [63:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [63:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [63:0] a_sizes_set = _GEN_20[63:0];
+  wire [63:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [63:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_667 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [15:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [63:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [5:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [5:0] d_first_counter1_2 = d_first_counter_2 - 6'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 6'h0; // @[Edges.scala 230:25]
+  wire [63:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [63:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [63:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[63:1]}; // @[Monitor.scala 747:146]
+  wire  _T_693 = io_in_d_valid & d_first_2 & _T_398; // @[Monitor.scala 779:71]
+  wire [15:0] d_clr_1 = _d_first_T & d_first_2 & _T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 783:90 784:21]
+  wire [142:0] _GEN_68 = _d_first_T & d_first_2 & _T_398 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 783:90 785:21]
+  wire [15:0] _T_701 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_711 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [15:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [15:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [63:0] d_opcodes_clr_1 = _GEN_68[63:0];
+  wire [63:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [63:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_736 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= is_aligned_mask;
+        end else begin
+          a_first_counter <= 6'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 6'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 16'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 64'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 64'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= is_aligned_mask;
+        end else begin
+          a_first_counter_1 <= 6'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 6'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 16'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 64'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 6'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 6'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_306 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_344 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_344) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_382 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_382) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_394 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_394) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_541 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_541) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_545 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_545) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_549 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_549) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_557 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_557) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_T_594 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_594 & ~reset & ~_T_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_617 & (_T_605 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & _T_2 & ~_T_617) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_623 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_623) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_627 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_627) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_635 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_635) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_639 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_639) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_651 & (_T_649 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_649 & _T_2 & ~_T_651) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_658 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_658) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_667 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_667) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_701[0] & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_701[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_711 & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_711) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:79:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_736 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_736) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:79:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[5:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[5:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[15:0];
+  _RAND_11 = {2{`RANDOM}};
+  inflight_opcodes = _RAND_11[63:0];
+  _RAND_12 = {2{`RANDOM}};
+  inflight_sizes = _RAND_12[63:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[5:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[5:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[15:0];
+  _RAND_17 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[63:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[5:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_10(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [3:0]  io_enq_bits_source,
+  input  [30:0] io_enq_bits_address,
+  input         io_enq_bits_mask,
+  input  [7:0]  io_enq_bits_data,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [3:0]  io_deq_bits_source,
+  output [30:0] io_deq_bits_address,
+  output        io_deq_bits_mask,
+  output [7:0]  io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_param [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_size [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_source [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [30:0] ram_address [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [30:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [30:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_mask [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [7:0] ram_data [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [7:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] value; // @[Counter.scala 62:40]
+  reg [2:0] value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] _value_T_1 = value + 3'h1; // @[Counter.scala 78:24]
+  wire [2:0] _value_T_3 = value_1 + 3'h1; // @[Counter.scala 78:24]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = 1'h0;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 3'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= _value_T_1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 3'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= _value_T_3; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[30:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[7:0];
+  _RAND_7 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_7[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_8 = {1{`RANDOM}};
+  value = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  value_1 = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  maybe_full = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer_8(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input         auto_in_a_bits_mask,
+  input  [7:0]  auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [7:0]  auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output        auto_out_a_bits_mask,
+  output [7:0]  auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [7:0]  auto_out_d_bits_data
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [30:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [30:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  TLMonitor_39 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Queue_10 bundleOut_0_a_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_a_q_clock),
+    .reset(bundleOut_0_a_q_reset),
+    .io_enq_ready(bundleOut_0_a_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_q_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_q_io_enq_bits_mask),
+    .io_enq_bits_data(bundleOut_0_a_q_io_enq_bits_data),
+    .io_deq_ready(bundleOut_0_a_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_q_io_deq_bits_mask),
+    .io_deq_bits_data(bundleOut_0_a_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_a_q_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = bundleOut_0_a_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_q_io_deq_bits_mask; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_data = bundleOut_0_a_q_io_deq_bits_data; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleOut_0_a_q_clock = clock;
+  assign bundleOut_0_a_q_reset = reset;
+  assign bundleOut_0_a_q_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLMonitor_40(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [3:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [3:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [63:0] _RAND_11;
+  reg [63:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [63:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_71 = {{25'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [30:0] _T_33 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_36 = $signed(_T_34) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_270 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_271 = io_in_a_bits_mask & _T_270; // @[Monitor.scala 127:31]
+  wire  _T_272 = _T_271 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_306 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_314 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_344 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_352 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_382 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_394 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_398 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_402 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_418 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_446 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [3:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_540 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_541 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_545 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_549 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_553 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_557 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [3:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_564 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_565 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_573 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_577 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [15:0] inflight; // @[Monitor.scala 611:27]
+  reg [63:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [63:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [5:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [6:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [63:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [63:0] _GEN_73 = {{48'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[63:1]}; // @[Monitor.scala 634:152]
+  wire [63:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [63:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [63:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[63:1]}; // @[Monitor.scala 638:144]
+  wire  _T_591 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [15:0] _a_set_wo_ready_T = 16'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] a_set_wo_ready = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_594 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [5:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [6:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [130:0] _GEN_1 = {{127'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [130:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [130:0] _GEN_2 = {{127'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [130:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [15:0] _T_596 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_598 = ~_T_596[0]; // @[Monitor.scala 658:17]
+  wire [15:0] a_set = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 652:72 653:28]
+  wire [130:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 656:28]
+  wire [130:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_602 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_604 = ~_T_398; // @[Monitor.scala 671:74]
+  wire  _T_605 = io_in_d_valid & d_first_1 & ~_T_398; // @[Monitor.scala 671:71]
+  wire [15:0] _d_clr_wo_ready_T = 16'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] d_clr_wo_ready = io_in_d_valid & d_first_1 & ~_T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 671:90 672:22]
+  wire [142:0] _GEN_3 = {{127'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [142:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [15:0] d_clr = _d_first_T & d_first_1 & _T_604 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 675:91 676:21]
+  wire [142:0] _GEN_23 = _d_first_T & d_first_1 & _T_604 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_591 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [15:0] _T_615 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_617 = _T_615[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_622 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_623 = io_in_d_bits_opcode == _GEN_32 | _T_622; // @[Monitor.scala 685:77]
+  wire  _T_627 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_634 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_635 = io_in_d_bits_opcode == _GEN_48 | _T_634; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_639 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_649 = _T_602 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_604; // @[Monitor.scala 694:116]
+  wire  _T_651 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_658 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [15:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [15:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [15:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [63:0] a_opcodes_set = _GEN_19[63:0];
+  wire [63:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [63:0] d_opcodes_clr = _GEN_23[63:0];
+  wire [63:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [63:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [63:0] a_sizes_set = _GEN_20[63:0];
+  wire [63:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [63:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_667 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [15:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [63:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [63:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [63:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [63:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[63:1]}; // @[Monitor.scala 747:146]
+  wire  _T_693 = io_in_d_valid & d_first_2 & _T_398; // @[Monitor.scala 779:71]
+  wire [15:0] d_clr_1 = _d_first_T & d_first_2 & _T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 783:90 784:21]
+  wire [142:0] _GEN_68 = _d_first_T & d_first_2 & _T_398 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 783:90 785:21]
+  wire [15:0] _T_701 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_711 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [15:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [15:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [63:0] d_opcodes_clr_1 = _GEN_68[63:0];
+  wire [63:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [63:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_736 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 16'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 64'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 64'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 16'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 64'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_306 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_344 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_344) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_382 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_382) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_394 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_394) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_398 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_398 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_418 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_446 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_541 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_541) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_545 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_545) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_549 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_549) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_557 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_557) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_T_594 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_594 & ~reset & ~_T_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_617 & (_T_605 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & _T_2 & ~_T_617) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_623 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_623) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_627 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_627) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_635 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_635) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_639 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_639) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_651 & (_T_649 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_649 & _T_2 & ~_T_651) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_658 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_658) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_667 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_667) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_701[0] & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_701[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_711 & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_711) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SPI.scala:80:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_736 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_736) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SPI.scala:80:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[15:0];
+  _RAND_11 = {2{`RANDOM}};
+  inflight_opcodes = _RAND_11[63:0];
+  _RAND_12 = {2{`RANDOM}};
+  inflight_sizes = _RAND_12[63:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[15:0];
+  _RAND_17 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[63:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Repeater_22(
+  input         clock,
+  input         reset,
+  input         io_repeat,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [3:0]  io_enq_bits_source,
+  input  [30:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input  [31:0] io_enq_bits_data,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [3:0]  io_deq_bits_source,
+  output [30:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output [31:0] io_deq_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg  full; // @[Repeater.scala 19:21]
+  reg [2:0] saved_opcode; // @[Repeater.scala 20:18]
+  reg [2:0] saved_param; // @[Repeater.scala 20:18]
+  reg [2:0] saved_size; // @[Repeater.scala 20:18]
+  reg [3:0] saved_source; // @[Repeater.scala 20:18]
+  reg [30:0] saved_address; // @[Repeater.scala 20:18]
+  reg [3:0] saved_mask; // @[Repeater.scala 20:18]
+  reg [31:0] saved_data; // @[Repeater.scala 20:18]
+  wire  _T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = _T & io_repeat | full; // @[Repeater.scala 19:21 28:{38,45}]
+  wire  _T_2 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign io_enq_ready = io_deq_ready & ~full; // @[Repeater.scala 24:32]
+  assign io_deq_valid = io_enq_valid | full; // @[Repeater.scala 23:32]
+  assign io_deq_bits_opcode = full ? saved_opcode : io_enq_bits_opcode; // @[Repeater.scala 25:21]
+  assign io_deq_bits_param = full ? saved_param : io_enq_bits_param; // @[Repeater.scala 25:21]
+  assign io_deq_bits_size = full ? saved_size : io_enq_bits_size; // @[Repeater.scala 25:21]
+  assign io_deq_bits_source = full ? saved_source : io_enq_bits_source; // @[Repeater.scala 25:21]
+  assign io_deq_bits_address = full ? saved_address : io_enq_bits_address; // @[Repeater.scala 25:21]
+  assign io_deq_bits_mask = full ? saved_mask : io_enq_bits_mask; // @[Repeater.scala 25:21]
+  assign io_deq_bits_data = full ? saved_data : io_enq_bits_data; // @[Repeater.scala 25:21]
+  always @(posedge clock) begin
+    if (reset) begin // @[Repeater.scala 19:21]
+      full <= 1'h0; // @[Repeater.scala 19:21]
+    end else if (_T_2 & ~io_repeat) begin // @[Repeater.scala 29:38]
+      full <= 1'h0; // @[Repeater.scala 29:45]
+    end else begin
+      full <= _GEN_0;
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_opcode <= io_enq_bits_opcode; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_param <= io_enq_bits_param; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_size <= io_enq_bits_size; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_source <= io_enq_bits_source; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_address <= io_enq_bits_address; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_mask <= io_enq_bits_mask; // @[Repeater.scala 28:62]
+    end
+    if (_T & io_repeat) begin // @[Repeater.scala 28:38]
+      saved_data <= io_enq_bits_data; // @[Repeater.scala 28:62]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  full = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  saved_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  saved_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  saved_size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  saved_source = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  saved_data = _RAND_7[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLWidthWidget_6(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output        auto_out_a_bits_mask,
+  output [7:0]  auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [7:0]  auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  repeated_repeater_clock; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_reset; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_repeat; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_enq_ready; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_enq_valid; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_enq_bits_opcode; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_enq_bits_param; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_enq_bits_size; // @[Repeater.scala 35:26]
+  wire [3:0] repeated_repeater_io_enq_bits_source; // @[Repeater.scala 35:26]
+  wire [30:0] repeated_repeater_io_enq_bits_address; // @[Repeater.scala 35:26]
+  wire [3:0] repeated_repeater_io_enq_bits_mask; // @[Repeater.scala 35:26]
+  wire [31:0] repeated_repeater_io_enq_bits_data; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_deq_ready; // @[Repeater.scala 35:26]
+  wire  repeated_repeater_io_deq_valid; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_deq_bits_opcode; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_deq_bits_param; // @[Repeater.scala 35:26]
+  wire [2:0] repeated_repeater_io_deq_bits_size; // @[Repeater.scala 35:26]
+  wire [3:0] repeated_repeater_io_deq_bits_source; // @[Repeater.scala 35:26]
+  wire [30:0] repeated_repeater_io_deq_bits_address; // @[Repeater.scala 35:26]
+  wire [3:0] repeated_repeater_io_deq_bits_mask; // @[Repeater.scala 35:26]
+  wire [31:0] repeated_repeater_io_deq_bits_data; // @[Repeater.scala 35:26]
+  wire [31:0] cated_bits_data = {repeated_repeater_io_deq_bits_data[31:8],auto_in_a_bits_data[7:0]}; // @[Cat.scala 31:58]
+  wire [2:0] cated_bits_opcode = repeated_repeater_io_deq_bits_opcode; // @[WidthWidget.scala 155:25 156:15]
+  wire  repeat_hasData = ~cated_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [2:0] cated_bits_size = repeated_repeater_io_deq_bits_size; // @[WidthWidget.scala 155:25 156:15]
+  wire [8:0] _repeat_limit_T_1 = 9'h3 << cated_bits_size; // @[package.scala 234:77]
+  wire [1:0] repeat_limit = ~_repeat_limit_T_1[1:0]; // @[package.scala 234:46]
+  reg [1:0] repeat_count; // @[WidthWidget.scala 99:26]
+  wire  repeat_last = repeat_count == repeat_limit | ~repeat_hasData; // @[WidthWidget.scala 101:35]
+  wire  cated_valid = repeated_repeater_io_deq_valid; // @[WidthWidget.scala 155:25 156:15]
+  wire  _repeat_T = auto_out_a_ready & cated_valid; // @[Decoupled.scala 50:35]
+  wire [1:0] _repeat_count_T_1 = repeat_count + 2'h1; // @[WidthWidget.scala 104:24]
+  wire [30:0] cated_bits_address = repeated_repeater_io_deq_bits_address; // @[WidthWidget.scala 155:25 156:15]
+  wire [1:0] repeat_sel = cated_bits_address[1:0]; // @[WidthWidget.scala 110:39]
+  wire [1:0] repeat_index = repeat_sel | repeat_count; // @[WidthWidget.scala 120:24]
+  wire [7:0] repeat_bundleOut_0_a_bits_data_mux_0 = cated_bits_data[7:0]; // @[WidthWidget.scala 122:55]
+  wire [7:0] repeat_bundleOut_0_a_bits_data_mux_1 = cated_bits_data[15:8]; // @[WidthWidget.scala 122:55]
+  wire [7:0] repeat_bundleOut_0_a_bits_data_mux_2 = cated_bits_data[23:16]; // @[WidthWidget.scala 122:55]
+  wire [7:0] repeat_bundleOut_0_a_bits_data_mux_3 = cated_bits_data[31:24]; // @[WidthWidget.scala 122:55]
+  wire [7:0] _GEN_3 = 2'h1 == repeat_index ? repeat_bundleOut_0_a_bits_data_mux_1 : repeat_bundleOut_0_a_bits_data_mux_0
+    ; // @[WidthWidget.scala 131:{30,30}]
+  wire [7:0] _GEN_4 = 2'h2 == repeat_index ? repeat_bundleOut_0_a_bits_data_mux_2 : _GEN_3; // @[WidthWidget.scala 131:{30,30}]
+  wire [3:0] cated_bits_mask = repeated_repeater_io_deq_bits_mask; // @[WidthWidget.scala 155:25 156:15]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_0 = cated_bits_mask[0]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_1 = cated_bits_mask[1]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_2 = cated_bits_mask[2]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_3 = cated_bits_mask[3]; // @[WidthWidget.scala 122:55]
+  wire  _GEN_7 = 2'h1 == repeat_index ? repeat_bundleOut_0_a_bits_mask_mux_1 : repeat_bundleOut_0_a_bits_mask_mux_0; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_8 = 2'h2 == repeat_index ? repeat_bundleOut_0_a_bits_mask_mux_2 : _GEN_7; // @[WidthWidget.scala 134:{53,53}]
+  wire  hasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [8:0] _limit_T_1 = 9'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] limit = ~_limit_T_1[1:0]; // @[package.scala 234:46]
+  reg [1:0] count; // @[WidthWidget.scala 34:27]
+  wire  last = count == limit | ~hasData; // @[WidthWidget.scala 36:36]
+  wire [1:0] _enable_T_1 = count & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_0 = ~(|_enable_T_1); // @[WidthWidget.scala 37:47]
+  wire [1:0] _enable_T_3 = count ^ 2'h1; // @[WidthWidget.scala 37:56]
+  wire [1:0] _enable_T_4 = _enable_T_3 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_1 = ~(|_enable_T_4); // @[WidthWidget.scala 37:47]
+  wire [1:0] _enable_T_6 = count ^ 2'h2; // @[WidthWidget.scala 37:56]
+  wire [1:0] _enable_T_7 = _enable_T_6 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_2 = ~(|_enable_T_7); // @[WidthWidget.scala 37:47]
+  wire  _bundleOut_0_d_ready_T = ~last; // @[WidthWidget.scala 70:32]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | ~last; // @[WidthWidget.scala 70:29]
+  wire  _T = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [1:0] _count_T_1 = count + 2'h1; // @[WidthWidget.scala 44:24]
+  reg  bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 56:41]
+  wire  bundleIn_0_d_bits_data_masked_enable_0 = enable_0 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_1 = enable_1 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_2 = enable_2 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_0; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_1; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_2; // @[WidthWidget.scala 60:24]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_0 = bundleIn_0_d_bits_data_masked_enable_0 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_0; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_1 = bundleIn_0_d_bits_data_masked_enable_1 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_1; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_2 = bundleIn_0_d_bits_data_masked_enable_2 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_2; // @[WidthWidget.scala 62:88]
+  wire  _GEN_14 = _T & _bundleOut_0_d_ready_T | bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 63:35 64:30 56:41]
+  wire [15:0] bundleIn_0_d_bits_data_lo = {bundleIn_0_d_bits_data_mdata_1,bundleIn_0_d_bits_data_mdata_0}; // @[Cat.scala 31:58]
+  wire [15:0] bundleIn_0_d_bits_data_hi = {auto_out_d_bits_data,bundleIn_0_d_bits_data_mdata_2}; // @[Cat.scala 31:58]
+  TLMonitor_40 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_22 repeated_repeater ( // @[Repeater.scala 35:26]
+    .clock(repeated_repeater_clock),
+    .reset(repeated_repeater_reset),
+    .io_repeat(repeated_repeater_io_repeat),
+    .io_enq_ready(repeated_repeater_io_enq_ready),
+    .io_enq_valid(repeated_repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeated_repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeated_repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeated_repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeated_repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeated_repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeated_repeater_io_enq_bits_mask),
+    .io_enq_bits_data(repeated_repeater_io_enq_bits_data),
+    .io_deq_ready(repeated_repeater_io_deq_ready),
+    .io_deq_valid(repeated_repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeated_repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeated_repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeated_repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeated_repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeated_repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeated_repeater_io_deq_bits_mask),
+    .io_deq_bits_data(repeated_repeater_io_deq_bits_data)
+  );
+  assign auto_in_a_ready = repeated_repeater_io_enq_ready; // @[Nodes.scala 1210:84 Repeater.scala 37:21]
+  assign auto_in_d_valid = auto_out_d_valid & last; // @[WidthWidget.scala 71:29]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = {bundleIn_0_d_bits_data_hi,bundleIn_0_d_bits_data_lo}; // @[Cat.scala 31:58]
+  assign auto_out_a_valid = repeated_repeater_io_deq_valid; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_opcode = repeated_repeater_io_deq_bits_opcode; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_param = repeated_repeater_io_deq_bits_param; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_size = repeated_repeater_io_deq_bits_size; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_source = repeated_repeater_io_deq_bits_source; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_address = repeated_repeater_io_deq_bits_address; // @[WidthWidget.scala 155:25 156:15]
+  assign auto_out_a_bits_mask = 2'h3 == repeat_index ? repeat_bundleOut_0_a_bits_mask_mux_3 : _GEN_8; // @[WidthWidget.scala 134:{53,53}]
+  assign auto_out_a_bits_data = 2'h3 == repeat_index ? repeat_bundleOut_0_a_bits_data_mux_3 : _GEN_4; // @[WidthWidget.scala 131:{30,30}]
+  assign auto_out_d_ready = auto_in_d_ready | ~last; // @[WidthWidget.scala 70:29]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = repeated_repeater_io_enq_ready; // @[Nodes.scala 1210:84 Repeater.scala 37:21]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & last; // @[WidthWidget.scala 71:29]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign repeated_repeater_clock = clock;
+  assign repeated_repeater_reset = reset;
+  assign repeated_repeater_io_repeat = ~repeat_last; // @[WidthWidget.scala 142:7]
+  assign repeated_repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeated_repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[WidthWidget.scala 99:26]
+      repeat_count <= 2'h0; // @[WidthWidget.scala 99:26]
+    end else if (_repeat_T) begin // @[WidthWidget.scala 103:25]
+      if (repeat_last) begin // @[WidthWidget.scala 105:21]
+        repeat_count <= 2'h0; // @[WidthWidget.scala 105:29]
+      end else begin
+        repeat_count <= _repeat_count_T_1; // @[WidthWidget.scala 104:15]
+      end
+    end
+    if (reset) begin // @[WidthWidget.scala 34:27]
+      count <= 2'h0; // @[WidthWidget.scala 34:27]
+    end else if (_T) begin // @[WidthWidget.scala 43:24]
+      if (last) begin // @[WidthWidget.scala 46:21]
+        count <= 2'h0; // @[WidthWidget.scala 47:17]
+      end else begin
+        count <= _count_T_1; // @[WidthWidget.scala 44:15]
+      end
+    end
+    if (reset) begin // @[WidthWidget.scala 56:41]
+      bundleIn_0_d_bits_data_rdata_written_once <= 1'h0; // @[WidthWidget.scala 56:41]
+    end else begin
+      bundleIn_0_d_bits_data_rdata_written_once <= _GEN_14;
+    end
+    if (_T & _bundleOut_0_d_ready_T) begin // @[WidthWidget.scala 63:35]
+      if (bundleIn_0_d_bits_data_masked_enable_0) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_0 <= auto_out_d_bits_data;
+      end
+    end
+    if (_T & _bundleOut_0_d_ready_T) begin // @[WidthWidget.scala 63:35]
+      if (bundleIn_0_d_bits_data_masked_enable_1) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_1 <= auto_out_d_bits_data;
+      end
+    end
+    if (_T & _bundleOut_0_d_ready_T) begin // @[WidthWidget.scala 63:35]
+      if (bundleIn_0_d_bits_data_masked_enable_2) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_2 <= auto_out_d_bits_data;
+      end
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  repeat_count = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  count = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_written_once = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_0 = _RAND_3[7:0];
+  _RAND_4 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_1 = _RAND_4[7:0];
+  _RAND_5 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_2 = _RAND_5[7:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLInterconnectCoupler_26(
+  input         clock,
+  input         reset,
+  input         auto_mem_xing_out_a_ready,
+  output        auto_mem_xing_out_a_valid,
+  output [2:0]  auto_mem_xing_out_a_bits_opcode,
+  output [2:0]  auto_mem_xing_out_a_bits_param,
+  output        auto_mem_xing_out_a_bits_size,
+  output [10:0] auto_mem_xing_out_a_bits_source,
+  output [30:0] auto_mem_xing_out_a_bits_address,
+  output        auto_mem_xing_out_a_bits_mask,
+  output [7:0]  auto_mem_xing_out_a_bits_data,
+  output        auto_mem_xing_out_a_bits_corrupt,
+  output        auto_mem_xing_out_d_ready,
+  input         auto_mem_xing_out_d_valid,
+  input  [2:0]  auto_mem_xing_out_d_bits_opcode,
+  input         auto_mem_xing_out_d_bits_size,
+  input  [10:0] auto_mem_xing_out_d_bits_source,
+  input  [7:0]  auto_mem_xing_out_d_bits_data,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [2:0]  auto_tl_in_a_bits_size,
+  input  [3:0]  auto_tl_in_a_bits_source,
+  input  [30:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [3:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data
+);
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [30:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [10:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [30:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [10:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  buffer_clock; // @[Buffer.scala 68:28]
+  wire  buffer_reset; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  widget_clock; // @[WidthWidget.scala 219:28]
+  wire  widget_reset; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_out_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  TLFragmenter_20 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(fragmenter_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  TLBuffer_8 buffer ( // @[Buffer.scala 68:28]
+    .clock(buffer_clock),
+    .reset(buffer_reset),
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  TLWidthWidget_6 widget ( // @[WidthWidget.scala 219:28]
+    .clock(widget_clock),
+    .reset(widget_reset),
+    .auto_in_a_ready(widget_auto_in_a_ready),
+    .auto_in_a_valid(widget_auto_in_a_valid),
+    .auto_in_a_bits_opcode(widget_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(widget_auto_in_a_bits_param),
+    .auto_in_a_bits_size(widget_auto_in_a_bits_size),
+    .auto_in_a_bits_source(widget_auto_in_a_bits_source),
+    .auto_in_a_bits_address(widget_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(widget_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(widget_auto_in_a_bits_data),
+    .auto_in_d_ready(widget_auto_in_d_ready),
+    .auto_in_d_valid(widget_auto_in_d_valid),
+    .auto_in_d_bits_opcode(widget_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(widget_auto_in_d_bits_size),
+    .auto_in_d_bits_source(widget_auto_in_d_bits_source),
+    .auto_in_d_bits_data(widget_auto_in_d_bits_data),
+    .auto_out_a_ready(widget_auto_out_a_ready),
+    .auto_out_a_valid(widget_auto_out_a_valid),
+    .auto_out_a_bits_opcode(widget_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(widget_auto_out_a_bits_param),
+    .auto_out_a_bits_size(widget_auto_out_a_bits_size),
+    .auto_out_a_bits_source(widget_auto_out_a_bits_source),
+    .auto_out_a_bits_address(widget_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(widget_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(widget_auto_out_a_bits_data),
+    .auto_out_d_ready(widget_auto_out_d_ready),
+    .auto_out_d_valid(widget_auto_out_d_valid),
+    .auto_out_d_bits_opcode(widget_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(widget_auto_out_d_bits_size),
+    .auto_out_d_bits_source(widget_auto_out_d_bits_source),
+    .auto_out_d_bits_data(widget_auto_out_d_bits_data)
+  );
+  assign auto_mem_xing_out_a_valid = fragmenter_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_param = fragmenter_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_size = fragmenter_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_source = fragmenter_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_address = fragmenter_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_data = fragmenter_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_out_d_ready = fragmenter_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_in_a_ready = widget_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_valid = widget_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_opcode = widget_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_size = widget_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_source = widget_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_in_d_bits_data = widget_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_data = buffer_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_a_ready = auto_mem_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_valid = auto_mem_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_opcode = auto_mem_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_size = auto_mem_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_source = auto_mem_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign fragmenter_auto_out_d_bits_data = auto_mem_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_clock = clock;
+  assign buffer_reset = reset;
+  assign buffer_auto_in_a_valid = widget_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_opcode = widget_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_param = widget_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_size = widget_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_source = widget_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_address = widget_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_mask = widget_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_data = widget_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_d_ready = widget_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_a_ready = fragmenter_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = fragmenter_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_size = fragmenter_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = fragmenter_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = fragmenter_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign widget_clock = clock;
+  assign widget_reset = reset;
+  assign widget_auto_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_data = auto_tl_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_out_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_source = buffer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+endmodule
+module MemoryBus(
+  input         auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_ready,
+  output        auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_param,
+  output        auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_size,
+  output [10:0] auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_source,
+  output [30:0] auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_address,
+  output        auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_mask,
+  output [7:0]  auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_ready,
+  input         auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_opcode,
+  input         auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_size,
+  input  [10:0] auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_source,
+  input  [7:0]  auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_data,
+  input         auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_clock,
+  input         auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_reset,
+  output        auto_bus_xing_in_a_ready,
+  input         auto_bus_xing_in_a_valid,
+  input  [2:0]  auto_bus_xing_in_a_bits_opcode,
+  input  [2:0]  auto_bus_xing_in_a_bits_param,
+  input  [2:0]  auto_bus_xing_in_a_bits_size,
+  input  [3:0]  auto_bus_xing_in_a_bits_source,
+  input  [30:0] auto_bus_xing_in_a_bits_address,
+  input  [3:0]  auto_bus_xing_in_a_bits_mask,
+  input  [31:0] auto_bus_xing_in_a_bits_data,
+  input         auto_bus_xing_in_d_ready,
+  output        auto_bus_xing_in_d_valid,
+  output [2:0]  auto_bus_xing_in_d_bits_opcode,
+  output [2:0]  auto_bus_xing_in_d_bits_size,
+  output [3:0]  auto_bus_xing_in_d_bits_source,
+  output [31:0] auto_bus_xing_in_d_bits_data
+);
+  wire  subsystem_mbus_clock_groups_auto_in_member_subsystem_mbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_mbus_clock_groups_auto_in_member_subsystem_mbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_mbus_clock_groups_auto_out_member_subsystem_mbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_mbus_clock_groups_auto_out_member_subsystem_mbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  clockGroup_auto_in_member_subsystem_mbus_0_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_in_member_subsystem_mbus_0_reset; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_reset; // @[BusWrapper.scala 41:38]
+  wire  fixedClockNode_auto_in_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_in_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_reset; // @[ClockGroup.scala 106:107]
+  wire  subsystem_mbus_xbar_auto_in_a_ready; // @[MemoryBus.scala 42:32]
+  wire  subsystem_mbus_xbar_auto_in_a_valid; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_in_a_bits_opcode; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_in_a_bits_param; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_in_a_bits_size; // @[MemoryBus.scala 42:32]
+  wire [3:0] subsystem_mbus_xbar_auto_in_a_bits_source; // @[MemoryBus.scala 42:32]
+  wire [30:0] subsystem_mbus_xbar_auto_in_a_bits_address; // @[MemoryBus.scala 42:32]
+  wire [3:0] subsystem_mbus_xbar_auto_in_a_bits_mask; // @[MemoryBus.scala 42:32]
+  wire [31:0] subsystem_mbus_xbar_auto_in_a_bits_data; // @[MemoryBus.scala 42:32]
+  wire  subsystem_mbus_xbar_auto_in_d_ready; // @[MemoryBus.scala 42:32]
+  wire  subsystem_mbus_xbar_auto_in_d_valid; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_in_d_bits_opcode; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_in_d_bits_size; // @[MemoryBus.scala 42:32]
+  wire [3:0] subsystem_mbus_xbar_auto_in_d_bits_source; // @[MemoryBus.scala 42:32]
+  wire [31:0] subsystem_mbus_xbar_auto_in_d_bits_data; // @[MemoryBus.scala 42:32]
+  wire  subsystem_mbus_xbar_auto_out_a_ready; // @[MemoryBus.scala 42:32]
+  wire  subsystem_mbus_xbar_auto_out_a_valid; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_out_a_bits_opcode; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_out_a_bits_param; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_out_a_bits_size; // @[MemoryBus.scala 42:32]
+  wire [3:0] subsystem_mbus_xbar_auto_out_a_bits_source; // @[MemoryBus.scala 42:32]
+  wire [30:0] subsystem_mbus_xbar_auto_out_a_bits_address; // @[MemoryBus.scala 42:32]
+  wire [3:0] subsystem_mbus_xbar_auto_out_a_bits_mask; // @[MemoryBus.scala 42:32]
+  wire [31:0] subsystem_mbus_xbar_auto_out_a_bits_data; // @[MemoryBus.scala 42:32]
+  wire  subsystem_mbus_xbar_auto_out_d_ready; // @[MemoryBus.scala 42:32]
+  wire  subsystem_mbus_xbar_auto_out_d_valid; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_out_d_bits_opcode; // @[MemoryBus.scala 42:32]
+  wire [2:0] subsystem_mbus_xbar_auto_out_d_bits_size; // @[MemoryBus.scala 42:32]
+  wire [3:0] subsystem_mbus_xbar_auto_out_d_bits_source; // @[MemoryBus.scala 42:32]
+  wire [31:0] subsystem_mbus_xbar_auto_out_d_bits_data; // @[MemoryBus.scala 42:32]
+  wire  fixer_clock; // @[FIFOFixer.scala 144:27]
+  wire  fixer_reset; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_a_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_a_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_a_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_a_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_a_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_a_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [30:0] fixer_auto_in_a_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_a_bits_mask; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_in_a_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_d_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_d_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_d_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_d_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_d_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_in_d_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_a_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_a_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_a_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_a_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_a_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_a_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [30:0] fixer_auto_out_a_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_a_bits_mask; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_out_a_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_d_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_d_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_d_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_d_bits_size; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_d_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_out_d_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  picker_clock; // @[ProbePicker.scala 65:28]
+  wire  picker_reset; // @[ProbePicker.scala 65:28]
+  wire  picker_auto_in_a_ready; // @[ProbePicker.scala 65:28]
+  wire  picker_auto_in_a_valid; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_in_a_bits_opcode; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_in_a_bits_param; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_in_a_bits_size; // @[ProbePicker.scala 65:28]
+  wire [3:0] picker_auto_in_a_bits_source; // @[ProbePicker.scala 65:28]
+  wire [30:0] picker_auto_in_a_bits_address; // @[ProbePicker.scala 65:28]
+  wire [3:0] picker_auto_in_a_bits_mask; // @[ProbePicker.scala 65:28]
+  wire [31:0] picker_auto_in_a_bits_data; // @[ProbePicker.scala 65:28]
+  wire  picker_auto_in_d_ready; // @[ProbePicker.scala 65:28]
+  wire  picker_auto_in_d_valid; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_in_d_bits_opcode; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_in_d_bits_size; // @[ProbePicker.scala 65:28]
+  wire [3:0] picker_auto_in_d_bits_source; // @[ProbePicker.scala 65:28]
+  wire [31:0] picker_auto_in_d_bits_data; // @[ProbePicker.scala 65:28]
+  wire  picker_auto_out_a_ready; // @[ProbePicker.scala 65:28]
+  wire  picker_auto_out_a_valid; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_out_a_bits_opcode; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_out_a_bits_param; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_out_a_bits_size; // @[ProbePicker.scala 65:28]
+  wire [3:0] picker_auto_out_a_bits_source; // @[ProbePicker.scala 65:28]
+  wire [30:0] picker_auto_out_a_bits_address; // @[ProbePicker.scala 65:28]
+  wire [3:0] picker_auto_out_a_bits_mask; // @[ProbePicker.scala 65:28]
+  wire [31:0] picker_auto_out_a_bits_data; // @[ProbePicker.scala 65:28]
+  wire  picker_auto_out_d_ready; // @[ProbePicker.scala 65:28]
+  wire  picker_auto_out_d_valid; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_out_d_bits_opcode; // @[ProbePicker.scala 65:28]
+  wire [2:0] picker_auto_out_d_bits_size; // @[ProbePicker.scala 65:28]
+  wire [3:0] picker_auto_out_d_bits_source; // @[ProbePicker.scala 65:28]
+  wire [31:0] picker_auto_out_d_bits_data; // @[ProbePicker.scala 65:28]
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  coupler_to_device_named_qspi_ram_0_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [10:0] coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [10:0] coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_ram_0_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  ClockGroupAggregator_4 subsystem_mbus_clock_groups ( // @[BusWrapper.scala 40:48]
+    .auto_in_member_subsystem_mbus_0_clock(subsystem_mbus_clock_groups_auto_in_member_subsystem_mbus_0_clock),
+    .auto_in_member_subsystem_mbus_0_reset(subsystem_mbus_clock_groups_auto_in_member_subsystem_mbus_0_reset),
+    .auto_out_member_subsystem_mbus_0_clock(subsystem_mbus_clock_groups_auto_out_member_subsystem_mbus_0_clock),
+    .auto_out_member_subsystem_mbus_0_reset(subsystem_mbus_clock_groups_auto_out_member_subsystem_mbus_0_reset)
+  );
+  ClockGroup_4 clockGroup ( // @[BusWrapper.scala 41:38]
+    .auto_in_member_subsystem_mbus_0_clock(clockGroup_auto_in_member_subsystem_mbus_0_clock),
+    .auto_in_member_subsystem_mbus_0_reset(clockGroup_auto_in_member_subsystem_mbus_0_reset),
+    .auto_out_clock(clockGroup_auto_out_clock),
+    .auto_out_reset(clockGroup_auto_out_reset)
+  );
+  FixedClockBroadcast_2 fixedClockNode ( // @[ClockGroup.scala 106:107]
+    .auto_in_clock(fixedClockNode_auto_in_clock),
+    .auto_in_reset(fixedClockNode_auto_in_reset),
+    .auto_out_clock(fixedClockNode_auto_out_clock),
+    .auto_out_reset(fixedClockNode_auto_out_reset)
+  );
+  TLXbar_6 subsystem_mbus_xbar ( // @[MemoryBus.scala 42:32]
+    .auto_in_a_ready(subsystem_mbus_xbar_auto_in_a_ready),
+    .auto_in_a_valid(subsystem_mbus_xbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(subsystem_mbus_xbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(subsystem_mbus_xbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(subsystem_mbus_xbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(subsystem_mbus_xbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(subsystem_mbus_xbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(subsystem_mbus_xbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(subsystem_mbus_xbar_auto_in_a_bits_data),
+    .auto_in_d_ready(subsystem_mbus_xbar_auto_in_d_ready),
+    .auto_in_d_valid(subsystem_mbus_xbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(subsystem_mbus_xbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(subsystem_mbus_xbar_auto_in_d_bits_size),
+    .auto_in_d_bits_source(subsystem_mbus_xbar_auto_in_d_bits_source),
+    .auto_in_d_bits_data(subsystem_mbus_xbar_auto_in_d_bits_data),
+    .auto_out_a_ready(subsystem_mbus_xbar_auto_out_a_ready),
+    .auto_out_a_valid(subsystem_mbus_xbar_auto_out_a_valid),
+    .auto_out_a_bits_opcode(subsystem_mbus_xbar_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(subsystem_mbus_xbar_auto_out_a_bits_param),
+    .auto_out_a_bits_size(subsystem_mbus_xbar_auto_out_a_bits_size),
+    .auto_out_a_bits_source(subsystem_mbus_xbar_auto_out_a_bits_source),
+    .auto_out_a_bits_address(subsystem_mbus_xbar_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(subsystem_mbus_xbar_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(subsystem_mbus_xbar_auto_out_a_bits_data),
+    .auto_out_d_ready(subsystem_mbus_xbar_auto_out_d_ready),
+    .auto_out_d_valid(subsystem_mbus_xbar_auto_out_d_valid),
+    .auto_out_d_bits_opcode(subsystem_mbus_xbar_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(subsystem_mbus_xbar_auto_out_d_bits_size),
+    .auto_out_d_bits_source(subsystem_mbus_xbar_auto_out_d_bits_source),
+    .auto_out_d_bits_data(subsystem_mbus_xbar_auto_out_d_bits_data)
+  );
+  TLFIFOFixer_3 fixer ( // @[FIFOFixer.scala 144:27]
+    .clock(fixer_clock),
+    .reset(fixer_reset),
+    .auto_in_a_ready(fixer_auto_in_a_ready),
+    .auto_in_a_valid(fixer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fixer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fixer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fixer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fixer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fixer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fixer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fixer_auto_in_a_bits_data),
+    .auto_in_d_ready(fixer_auto_in_d_ready),
+    .auto_in_d_valid(fixer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fixer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fixer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fixer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fixer_auto_in_d_bits_data),
+    .auto_out_a_ready(fixer_auto_out_a_ready),
+    .auto_out_a_valid(fixer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fixer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fixer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fixer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fixer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fixer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fixer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fixer_auto_out_a_bits_data),
+    .auto_out_d_ready(fixer_auto_out_d_ready),
+    .auto_out_d_valid(fixer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fixer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fixer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fixer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fixer_auto_out_d_bits_data)
+  );
+  ProbePicker picker ( // @[ProbePicker.scala 65:28]
+    .clock(picker_clock),
+    .reset(picker_reset),
+    .auto_in_a_ready(picker_auto_in_a_ready),
+    .auto_in_a_valid(picker_auto_in_a_valid),
+    .auto_in_a_bits_opcode(picker_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(picker_auto_in_a_bits_param),
+    .auto_in_a_bits_size(picker_auto_in_a_bits_size),
+    .auto_in_a_bits_source(picker_auto_in_a_bits_source),
+    .auto_in_a_bits_address(picker_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(picker_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(picker_auto_in_a_bits_data),
+    .auto_in_d_ready(picker_auto_in_d_ready),
+    .auto_in_d_valid(picker_auto_in_d_valid),
+    .auto_in_d_bits_opcode(picker_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(picker_auto_in_d_bits_size),
+    .auto_in_d_bits_source(picker_auto_in_d_bits_source),
+    .auto_in_d_bits_data(picker_auto_in_d_bits_data),
+    .auto_out_a_ready(picker_auto_out_a_ready),
+    .auto_out_a_valid(picker_auto_out_a_valid),
+    .auto_out_a_bits_opcode(picker_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(picker_auto_out_a_bits_param),
+    .auto_out_a_bits_size(picker_auto_out_a_bits_size),
+    .auto_out_a_bits_source(picker_auto_out_a_bits_source),
+    .auto_out_a_bits_address(picker_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(picker_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(picker_auto_out_a_bits_data),
+    .auto_out_d_ready(picker_auto_out_d_ready),
+    .auto_out_d_valid(picker_auto_out_d_valid),
+    .auto_out_d_bits_opcode(picker_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(picker_auto_out_d_bits_size),
+    .auto_out_d_bits_source(picker_auto_out_d_bits_source),
+    .auto_out_d_bits_data(picker_auto_out_d_bits_data)
+  );
+  TLBuffer_7 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  TLInterconnectCoupler_26 coupler_to_device_named_qspi_ram_0 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_qspi_ram_0_clock),
+    .reset(coupler_to_device_named_qspi_ram_0_reset),
+    .auto_mem_xing_out_a_ready(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_ready),
+    .auto_mem_xing_out_a_valid(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_valid),
+    .auto_mem_xing_out_a_bits_opcode(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_opcode),
+    .auto_mem_xing_out_a_bits_param(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_param),
+    .auto_mem_xing_out_a_bits_size(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_size),
+    .auto_mem_xing_out_a_bits_source(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_source),
+    .auto_mem_xing_out_a_bits_address(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_address),
+    .auto_mem_xing_out_a_bits_mask(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_mask),
+    .auto_mem_xing_out_a_bits_data(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_data),
+    .auto_mem_xing_out_a_bits_corrupt(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_corrupt),
+    .auto_mem_xing_out_d_ready(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_ready),
+    .auto_mem_xing_out_d_valid(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_valid),
+    .auto_mem_xing_out_d_bits_opcode(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_opcode),
+    .auto_mem_xing_out_d_bits_size(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_size),
+    .auto_mem_xing_out_d_bits_source(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_source),
+    .auto_mem_xing_out_d_bits_data(coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_data),
+    .auto_tl_in_d_ready(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_data)
+  );
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_valid =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_opcode =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_param =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_size =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_source =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_address =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_mask =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_data =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_corrupt =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_ready =
+    coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_bus_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign subsystem_mbus_clock_groups_auto_in_member_subsystem_mbus_0_clock =
+    auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_mbus_clock_groups_auto_in_member_subsystem_mbus_0_reset =
+    auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_reset; // @[LazyModule.scala 309:16]
+  assign clockGroup_auto_in_member_subsystem_mbus_0_clock =
+    subsystem_mbus_clock_groups_auto_out_member_subsystem_mbus_0_clock; // @[LazyModule.scala 298:16]
+  assign clockGroup_auto_in_member_subsystem_mbus_0_reset =
+    subsystem_mbus_clock_groups_auto_out_member_subsystem_mbus_0_reset; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_clock = clockGroup_auto_out_clock; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_reset = clockGroup_auto_out_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_xbar_auto_in_a_valid = fixer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_in_a_bits_opcode = fixer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_in_a_bits_param = fixer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_in_a_bits_size = fixer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_in_a_bits_source = fixer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_in_a_bits_address = fixer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_in_a_bits_mask = fixer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_in_a_bits_data = fixer_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_in_d_ready = fixer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_xbar_auto_out_a_ready = picker_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_xbar_auto_out_d_valid = picker_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_xbar_auto_out_d_bits_opcode = picker_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_xbar_auto_out_d_bits_size = picker_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_xbar_auto_out_d_bits_source = picker_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_xbar_auto_out_d_bits_data = picker_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign fixer_clock = fixedClockNode_auto_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fixer_reset = fixedClockNode_auto_out_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fixer_auto_in_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_a_bits_data = buffer_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_a_ready = subsystem_mbus_xbar_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_valid = subsystem_mbus_xbar_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_opcode = subsystem_mbus_xbar_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_size = subsystem_mbus_xbar_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_source = subsystem_mbus_xbar_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_d_bits_data = subsystem_mbus_xbar_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign picker_clock = fixedClockNode_auto_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign picker_reset = fixedClockNode_auto_out_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign picker_auto_in_a_valid = subsystem_mbus_xbar_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign picker_auto_in_a_bits_opcode = subsystem_mbus_xbar_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign picker_auto_in_a_bits_param = subsystem_mbus_xbar_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign picker_auto_in_a_bits_size = subsystem_mbus_xbar_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign picker_auto_in_a_bits_source = subsystem_mbus_xbar_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign picker_auto_in_a_bits_address = subsystem_mbus_xbar_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign picker_auto_in_a_bits_mask = subsystem_mbus_xbar_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign picker_auto_in_a_bits_data = subsystem_mbus_xbar_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign picker_auto_in_d_ready = subsystem_mbus_xbar_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign picker_auto_out_a_ready = coupler_to_device_named_qspi_ram_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign picker_auto_out_d_valid = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign picker_auto_out_d_bits_opcode = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign picker_auto_out_d_bits_size = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign picker_auto_out_d_bits_source = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign picker_auto_out_d_bits_data = coupler_to_device_named_qspi_ram_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_valid = auto_bus_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_bus_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_bus_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_bus_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_bus_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_bus_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_bus_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_bus_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_bus_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = fixer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = fixer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = fixer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_size = fixer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = fixer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = fixer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_ram_0_clock = fixedClockNode_auto_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_ram_0_reset = fixedClockNode_auto_out_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_a_ready =
+    auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_valid =
+    auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_size =
+    auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_source =
+    auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_mem_xing_out_d_bits_data =
+    auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_valid = picker_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_opcode = picker_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_param = picker_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_size = picker_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_source = picker_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_address = picker_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_mask = picker_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_a_bits_data = picker_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_ram_0_auto_tl_in_d_ready = picker_auto_out_d_ready; // @[LazyModule.scala 298:16]
+endmodule
+module ClockGroupAggregator_5(
+  input   auto_in_member_subsystem_l2_1_clock,
+  input   auto_in_member_subsystem_l2_1_reset,
+  input   auto_in_member_subsystem_l2_0_clock,
+  input   auto_in_member_subsystem_l2_0_reset,
+  output  auto_out_1_member_subsystem_mbus_0_clock,
+  output  auto_out_1_member_subsystem_mbus_0_reset,
+  output  auto_out_0_member_subsystem_l2_0_clock,
+  output  auto_out_0_member_subsystem_l2_0_reset
+);
+  assign auto_out_1_member_subsystem_mbus_0_clock = auto_in_member_subsystem_l2_1_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_member_subsystem_mbus_0_reset = auto_in_member_subsystem_l2_1_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_member_subsystem_l2_0_clock = auto_in_member_subsystem_l2_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_member_subsystem_l2_0_reset = auto_in_member_subsystem_l2_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockGroup_5(
+  input   auto_in_member_subsystem_l2_0_clock,
+  input   auto_in_member_subsystem_l2_0_reset,
+  output  auto_out_clock,
+  output  auto_out_reset
+);
+  assign auto_out_clock = auto_in_member_subsystem_l2_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_reset = auto_in_member_subsystem_l2_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_41(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_b_ready,
+  input         io_in_b_valid,
+  input  [1:0]  io_in_b_bits_param,
+  input  [30:0] io_in_b_bits_address,
+  input         io_in_c_ready,
+  input         io_in_c_valid,
+  input  [2:0]  io_in_c_bits_opcode,
+  input  [2:0]  io_in_c_bits_param,
+  input  [2:0]  io_in_c_bits_size,
+  input  [1:0]  io_in_c_bits_source,
+  input  [30:0] io_in_c_bits_address,
+  input         io_in_c_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [2:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input  [1:0]  io_in_d_bits_sink,
+  input         io_in_e_valid,
+  input  [1:0]  io_in_e_bits_sink
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_86 = {{25'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_86; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_45 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire [30:0] _T_48 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_51 = $signed(_T_49) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_53 = _T_45 & _T_52; // @[Parameters.scala 670:56]
+  wire  _T_55 = source_ok & _T_53; // @[Monitor.scala 82:72]
+  wire  _T_62 = 3'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_63 = _source_ok_T & _T_62; // @[Mux.scala 27:73]
+  wire  _T_79 = _T_63 & _T_52; // @[Monitor.scala 83:78]
+  wire  _T_93 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_97 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_98 = _T_97 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_102 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_106 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_170 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_183 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_217 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_221 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_229 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_269 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_302 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_303 = io_in_a_bits_mask & _T_302; // @[Monitor.scala 127:31]
+  wire  _T_304 = _T_303 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_308 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_337 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_345 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_374 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_382 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_411 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_423 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_427 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_431 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_435 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_447 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_458 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_462 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_475 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_504 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_521 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_539 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire [30:0] _address_ok_T = io_in_b_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_1 = {1'b0,$signed(_address_ok_T)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_3 = $signed(_address_ok_T_1) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_4 = $signed(_address_ok_T_3) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _is_aligned_T_1 = io_in_b_bits_address & 31'h3f; // @[Edges.scala 20:16]
+  wire  is_aligned_1 = _is_aligned_T_1 == 31'h0; // @[Edges.scala 20:24]
+  wire  _T_623 = io_in_b_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _source_ok_T_8 = io_in_c_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_c_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_10 = io_in_c_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_2 = _source_ok_T_8 | _source_ok_T_9 | _source_ok_T_10; // @[Parameters.scala 1125:46]
+  wire [12:0] _is_aligned_mask_T_7 = 13'h3f << io_in_c_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask_2 = ~_is_aligned_mask_T_7[5:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_87 = {{25'd0}, is_aligned_mask_2}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T_2 = io_in_c_bits_address & _GEN_87; // @[Edges.scala 20:16]
+  wire  is_aligned_2 = _is_aligned_T_2 == 31'h0; // @[Edges.scala 20:24]
+  wire [30:0] _address_ok_T_5 = io_in_c_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_6 = {1'b0,$signed(_address_ok_T_5)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_8 = $signed(_address_ok_T_6) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_9 = $signed(_address_ok_T_8) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_872 = io_in_c_bits_opcode == 3'h4; // @[Monitor.scala 242:25]
+  wire  _T_879 = io_in_c_bits_size >= 3'h2; // @[Monitor.scala 245:30]
+  wire  _T_886 = io_in_c_bits_param <= 3'h5; // @[Bundles.scala 120:29]
+  wire  _T_890 = ~io_in_c_bits_corrupt; // @[Monitor.scala 248:18]
+  wire  _T_894 = io_in_c_bits_opcode == 3'h5; // @[Monitor.scala 251:25]
+  wire  _T_912 = io_in_c_bits_opcode == 3'h6; // @[Monitor.scala 259:25]
+  wire  _T_924 = io_in_c_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_932 = _T_924 & _address_ok_T_9; // @[Parameters.scala 670:56]
+  wire  _T_934 = source_ok_2 & _T_932; // @[Monitor.scala 260:78]
+  wire  _T_941 = 3'h6 == io_in_c_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_942 = _source_ok_T_8 & _T_941; // @[Mux.scala 27:73]
+  wire  _T_958 = _T_942 & _address_ok_T_9; // @[Monitor.scala 261:78]
+  wire  _T_980 = io_in_c_bits_opcode == 3'h7; // @[Monitor.scala 269:25]
+  wire  _T_1044 = io_in_c_bits_opcode == 3'h0; // @[Monitor.scala 278:25]
+  wire  _T_1054 = io_in_c_bits_param == 3'h0; // @[Monitor.scala 282:31]
+  wire  _T_1062 = io_in_c_bits_opcode == 3'h1; // @[Monitor.scala 286:25]
+  wire  _T_1076 = io_in_c_bits_opcode == 3'h2; // @[Monitor.scala 293:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1098 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1099 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1103 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1107 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1111 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1115 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg [1:0] sink; // @[Monitor.scala 539:22]
+  wire  _T_1122 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1123 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1127 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1131 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1135 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1139 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  b_first_done = io_in_b_ready & io_in_b_valid; // @[Decoupled.scala 50:35]
+  reg [3:0] b_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] b_first_counter1 = b_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  b_first = b_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [1:0] param_2; // @[Monitor.scala 408:22]
+  reg [30:0] address_1; // @[Monitor.scala 411:22]
+  wire  _T_1150 = io_in_b_valid & ~b_first; // @[Monitor.scala 412:19]
+  wire  _T_1155 = io_in_b_bits_param == param_2; // @[Monitor.scala 414:32]
+  wire  _T_1167 = io_in_b_bits_address == address_1; // @[Monitor.scala 417:32]
+  wire  _c_first_T = io_in_c_ready & io_in_c_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] c_first_beats1_decode = is_aligned_mask_2[5:2]; // @[Edges.scala 219:59]
+  wire  c_first_beats1_opdata = io_in_c_bits_opcode[0]; // @[Edges.scala 101:36]
+  reg [3:0] c_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] c_first_counter1 = c_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  c_first = c_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_3; // @[Monitor.scala 512:22]
+  reg [2:0] param_3; // @[Monitor.scala 513:22]
+  reg [2:0] size_3; // @[Monitor.scala 514:22]
+  reg [1:0] source_3; // @[Monitor.scala 515:22]
+  reg [30:0] address_2; // @[Monitor.scala 516:22]
+  wire  _T_1174 = io_in_c_valid & ~c_first; // @[Monitor.scala 517:19]
+  wire  _T_1175 = io_in_c_bits_opcode == opcode_3; // @[Monitor.scala 518:32]
+  wire  _T_1179 = io_in_c_bits_param == param_3; // @[Monitor.scala 519:32]
+  wire  _T_1183 = io_in_c_bits_size == size_3; // @[Monitor.scala 520:32]
+  wire  _T_1187 = io_in_c_bits_source == source_3; // @[Monitor.scala 521:32]
+  wire  _T_1191 = io_in_c_bits_address == address_2; // @[Monitor.scala 522:32]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [11:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_88 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_88}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_89 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_89 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_92 = {{4'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_92 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1197 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_27 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1200 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_94 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_94}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [34:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [34:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_1202 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1204 = ~_T_1202[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_28 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_31 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [34:0] _GEN_32 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1208 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1210 = ~_T_427; // @[Monitor.scala 671:74]
+  wire  _T_1211 = io_in_d_valid & d_first_1 & ~_T_427; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_33 = io_in_d_valid & d_first_1 & ~_T_427 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [3:0] _GEN_34 = _d_first_T & d_first_1 & _T_1210 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_35 = _d_first_T & d_first_1 & _T_1210 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_1197 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1221 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1223 = _T_1221[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_39 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_40 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_39; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_41 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_40; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_42 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_41; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_43 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_42; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_44 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_43; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_51 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_42; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_52 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_51; // @[Monitor.scala 686:{39,39}]
+  wire  _T_1228 = io_in_d_bits_opcode == _GEN_52; // @[Monitor.scala 686:39]
+  wire  _T_1229 = io_in_d_bits_opcode == _GEN_44 | _T_1228; // @[Monitor.scala 685:77]
+  wire  _T_1233 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_55 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_56 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_55; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_57 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_56; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_58 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_57; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_59 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_58; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_60 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_59; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_67 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_58; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_68 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_67; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1240 = io_in_d_bits_opcode == _GEN_68; // @[Monitor.scala 690:38]
+  wire  _T_1241 = io_in_d_bits_opcode == _GEN_60 | _T_1240; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_98 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1245 = _GEN_98 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1255 = _T_1208 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1210; // @[Monitor.scala 694:116]
+  wire  _T_1256 = ~io_in_d_ready; // @[Monitor.scala 695:15]
+  wire  _T_1257 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_27[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_33[2:0];
+  wire  _T_1264 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_28[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_34[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_31[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_35[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [11:0] a_sizes_set = _GEN_32[11:0];
+  wire [11:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [11:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1273 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [11:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] c_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] c_first_counter1_1 = c_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  c_first_1 = c_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [11:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_103 = {{4'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_103 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1283 = io_in_c_bits_opcode[2] & io_in_c_bits_opcode[1]; // @[Edges.scala 67:40]
+  wire  _T_1284 = io_in_c_valid & c_first_1 & _T_1283; // @[Monitor.scala 756:37]
+  wire [3:0] _c_set_wo_ready_T = 4'h1 << io_in_c_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_72 = io_in_c_valid & c_first_1 & _T_1283 ? _c_set_wo_ready_T : 4'h0; // @[Monitor.scala 756:71 757:22]
+  wire  _T_1290 = _c_first_T & c_first_1 & _T_1283; // @[Monitor.scala 760:38]
+  wire [3:0] _c_sizes_set_interm_T = {io_in_c_bits_size, 1'h0}; // @[Monitor.scala 763:51]
+  wire [3:0] _c_sizes_set_interm_T_1 = _c_sizes_set_interm_T | 4'h1; // @[Monitor.scala 763:59]
+  wire [3:0] _GEN_105 = {io_in_c_bits_source, 2'h0}; // @[Monitor.scala 764:79]
+  wire [4:0] _c_opcodes_set_T = {{1'd0}, _GEN_105}; // @[Monitor.scala 764:79]
+  wire [3:0] c_sizes_set_interm = _c_first_T & c_first_1 & _T_1283 ? _c_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 760:72 763:28]
+  wire [34:0] _GEN_4 = {{31'd0}, c_sizes_set_interm}; // @[Monitor.scala 765:52]
+  wire [34:0] _c_sizes_set_T_1 = _GEN_4 << _c_opcodes_set_T; // @[Monitor.scala 765:52]
+  wire [2:0] _T_1291 = inflight_1 >> io_in_c_bits_source; // @[Monitor.scala 766:26]
+  wire  _T_1293 = ~_T_1291[0]; // @[Monitor.scala 766:17]
+  wire [3:0] _GEN_73 = _c_first_T & c_first_1 & _T_1283 ? _c_set_wo_ready_T : 4'h0; // @[Monitor.scala 760:72 761:28]
+  wire [34:0] _GEN_77 = _c_first_T & c_first_1 & _T_1283 ? _c_sizes_set_T_1 : 35'h0; // @[Monitor.scala 760:72 765:28]
+  wire  _T_1297 = io_in_d_valid & d_first_2; // @[Monitor.scala 779:26]
+  wire  _T_1299 = io_in_d_valid & d_first_2 & _T_427; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_78 = io_in_d_valid & d_first_2 & _T_427 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 779:89 780:22]
+  wire [3:0] _GEN_79 = _d_first_T & d_first_2 & _T_427 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_80 = _d_first_T & d_first_2 & _T_427 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 785:21]
+  wire  _same_cycle_resp_T_8 = io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:113]
+  wire  same_cycle_resp_1 = _T_1284 & io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:88]
+  wire [2:0] _T_1307 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire  _T_1309 = _T_1307[0] | same_cycle_resp_1; // @[Monitor.scala 791:49]
+  wire  _T_1313 = io_in_d_bits_size == io_in_c_bits_size; // @[Monitor.scala 793:36]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_1317 = _GEN_98 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire  _T_1326 = _T_1297 & c_first_1 & io_in_c_valid & _same_cycle_resp_T_8 & _T_427; // @[Monitor.scala 799:116]
+  wire  _T_1328 = _T_1256 | io_in_c_ready; // @[Monitor.scala 800:32]
+  wire [2:0] c_set_wo_ready = _GEN_72[2:0];
+  wire  _T_1332 = |c_set_wo_ready; // @[Monitor.scala 804:28]
+  wire [2:0] d_clr_wo_ready_1 = _GEN_78[2:0];
+  wire  _T_1333 = c_set_wo_ready != d_clr_wo_ready_1; // @[Monitor.scala 805:31]
+  wire [2:0] c_set = _GEN_73[2:0];
+  wire [2:0] _inflight_T_3 = inflight_1 | c_set; // @[Monitor.scala 809:35]
+  wire [2:0] d_clr_1 = _GEN_79[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = _inflight_T_3 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [11:0] d_opcodes_clr_1 = _GEN_80[11:0];
+  wire [11:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [11:0] c_sizes_set = _GEN_77[11:0];
+  wire [11:0] _inflight_sizes_T_3 = inflight_sizes_1 | c_sizes_set; // @[Monitor.scala 811:41]
+  wire [11:0] _inflight_sizes_T_5 = _inflight_sizes_T_3 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1342 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  reg [3:0] inflight_2; // @[Monitor.scala 823:27]
+  reg [3:0] d_first_counter_3; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_3 = d_first_counter_3 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_3 = d_first_counter_3 == 4'h0; // @[Edges.scala 230:25]
+  wire  _T_1354 = io_in_d_bits_opcode[2] & ~io_in_d_bits_opcode[1]; // @[Edges.scala 70:40]
+  wire  _T_1355 = _d_first_T & d_first_3 & _T_1354; // @[Monitor.scala 829:38]
+  wire [3:0] _d_set_T = 4'h1 << io_in_d_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_1356 = inflight_2 >> io_in_d_bits_sink; // @[Monitor.scala 831:23]
+  wire  _T_1358 = ~_T_1356[0]; // @[Monitor.scala 831:14]
+  wire [3:0] d_set = _d_first_T & d_first_3 & _T_1354 ? _d_set_T : 4'h0; // @[Monitor.scala 829:72 830:13]
+  wire [3:0] _e_clr_T = 4'h1 << io_in_e_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_1365 = d_set | inflight_2; // @[Monitor.scala 837:24]
+  wire [3:0] _T_1366 = _T_1365 >> io_in_e_bits_sink; // @[Monitor.scala 837:35]
+  wire [3:0] e_clr = io_in_e_valid ? _e_clr_T : 4'h0; // @[Monitor.scala 835:73 836:13]
+  wire [3:0] _inflight_T_6 = inflight_2 | d_set; // @[Monitor.scala 842:27]
+  wire [3:0] _inflight_T_7 = ~e_clr; // @[Monitor.scala 842:38]
+  wire [3:0] _inflight_T_8 = _inflight_T_6 & _inflight_T_7; // @[Monitor.scala 842:36]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      b_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (b_first_done) begin // @[Edges.scala 234:17]
+      if (b_first) begin // @[Edges.scala 235:21]
+        b_first_counter <= 4'h0;
+      end else begin
+        b_first_counter <= b_first_counter1;
+      end
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      param_2 <= io_in_b_bits_param; // @[Monitor.scala 421:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      address_1 <= io_in_b_bits_address; // @[Monitor.scala 424:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter <= c_first_beats1_decode;
+        end else begin
+          c_first_counter <= 4'h0;
+        end
+      end else begin
+        c_first_counter <= c_first_counter1;
+      end
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      opcode_3 <= io_in_c_bits_opcode; // @[Monitor.scala 525:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      param_3 <= io_in_c_bits_param; // @[Monitor.scala 526:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      size_3 <= io_in_c_bits_size; // @[Monitor.scala 527:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      source_3 <= io_in_c_bits_source; // @[Monitor.scala 528:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      address_2 <= io_in_c_bits_address; // @[Monitor.scala 529:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 12'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 12'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first_1) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter_1 <= c_first_beats1_decode;
+        end else begin
+          c_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        c_first_counter_1 <= c_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_c_first_T | _d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    if (reset) begin // @[Monitor.scala 823:27]
+      inflight_2 <= 4'h0; // @[Monitor.scala 823:27]
+    end else begin
+      inflight_2 <= _inflight_T_8; // @[Monitor.scala 842:14]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_3 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_3) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_3 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_3 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_3 <= d_first_counter1_3;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_55 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_55) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_79 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_79) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_93 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_93) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_98 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_98) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_102 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_55 & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~_T_55) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_79 & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~_T_79) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_93 & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~_T_93) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_170 & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~_T_170) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_98 & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~_T_98) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_102 & (io_in_a_valid & _T_106 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_106 & ~reset & ~_T_102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_183 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_183 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_53 & (io_in_a_valid & _T_183 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_183 & ~reset & ~_T_53) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_183 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_183 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_183 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_183 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_217 & (io_in_a_valid & _T_183 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_183 & ~reset & ~_T_217) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_221 & (io_in_a_valid & _T_183 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_183 & ~reset & ~_T_221) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_102 & (io_in_a_valid & _T_183 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_183 & ~reset & ~_T_102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_55 & (io_in_a_valid & _T_229 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_229 & ~reset & ~_T_55) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_229 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_229 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_229 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_229 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_217 & (io_in_a_valid & _T_229 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_229 & ~reset & ~_T_217) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_221 & (io_in_a_valid & _T_229 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_229 & ~reset & ~_T_221) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_269 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_269 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_269 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_269 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_269 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_269 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_217 & (io_in_a_valid & _T_269 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_269 & ~reset & ~_T_217) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_304 & (io_in_a_valid & _T_269 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_269 & ~reset & ~_T_304) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_308 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_308 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_308 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_308 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_308 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_308 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_337 & (io_in_a_valid & _T_308 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_308 & ~reset & ~_T_337) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_221 & (io_in_a_valid & _T_308 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_308 & ~reset & ~_T_221) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_374 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_374) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_221 & (io_in_a_valid & _T_345 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_345 & ~reset & ~_T_221) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_382 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_382 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_382 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_382 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_382 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_382 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_411 & (io_in_a_valid & _T_382 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_382 & ~reset & ~_T_411) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_221 & (io_in_a_valid & _T_382 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_382 & ~reset & ~_T_221) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_102 & (io_in_a_valid & _T_382 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_382 & ~reset & ~_T_102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_423 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_423) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_427 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_427 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_431 & (io_in_d_valid & _T_427 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_427 & _T_2 & ~_T_431) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_435 & (io_in_d_valid & _T_427 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_427 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_447 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_447 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_431 & (io_in_d_valid & _T_447 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_447 & _T_2 & ~_T_431) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_458 & (io_in_d_valid & _T_447 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_447 & _T_2 & ~_T_458) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_462 & (io_in_d_valid & _T_447 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_447 & _T_2 & ~_T_462) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_475 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_475 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_431 & (io_in_d_valid & _T_475 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_475 & _T_2 & ~_T_431) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_458 & (io_in_d_valid & _T_475 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_475 & _T_2 & ~_T_458) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_462 & (io_in_d_valid & _T_475 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_475 & _T_2 & ~_T_462) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_504 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_504 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_435 & (io_in_d_valid & _T_504 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_504 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_521 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_521 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_435 & (io_in_d_valid & _T_521 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_521 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_539 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_539 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_435 & (io_in_d_valid & _T_539 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_539 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_address_ok_T_4 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~_address_ok_T_4) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Probe type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_address_ok_T_4 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~_address_ok_T_4) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries unmanaged address (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_1 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~is_aligned_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_623 & (io_in_b_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2 & ~_T_623) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries invalid cap param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_address_ok_T_9 & (io_in_c_valid & _T_872 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_872 & ~reset & ~_address_ok_T_9) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries unmanaged address (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_872 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_872 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_879 & (io_in_c_valid & _T_872 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_872 & ~reset & ~_T_879) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_872 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_872 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_886 & (io_in_c_valid & _T_872 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_872 & ~reset & ~_T_886) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid report param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_890 & (io_in_c_valid & _T_872 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_872 & ~reset & ~_T_890) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck is corrupt (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_address_ok_T_9 & (io_in_c_valid & _T_894 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_894 & ~reset & ~_address_ok_T_9) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries unmanaged address (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_894 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_894 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_879 & (io_in_c_valid & _T_894 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_894 & ~reset & ~_T_879) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_894 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_894 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_886 & (io_in_c_valid & _T_894 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_894 & ~reset & ~_T_886) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid report param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_934 & (io_in_c_valid & _T_912 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_912 & ~reset & ~_T_934) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release type unsupported by manager (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_958 & (io_in_c_valid & _T_912 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_912 & ~reset & ~_T_958) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_912 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_912 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_879 & (io_in_c_valid & _T_912 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_912 & ~reset & ~_T_879) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_912 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_912 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_886 & (io_in_c_valid & _T_912 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_912 & ~reset & ~_T_886) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid report param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_890 & (io_in_c_valid & _T_912 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_912 & ~reset & ~_T_890) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release is corrupt (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_934 & (io_in_c_valid & _T_980 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_980 & ~reset & ~_T_934) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries ReleaseData type unsupported by manager (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_958 & (io_in_c_valid & _T_980 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_980 & ~reset & ~_T_958) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_980 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_980 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_879 & (io_in_c_valid & _T_980 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_980 & ~reset & ~_T_879) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData smaller than a beat (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_980 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_980 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_886 & (io_in_c_valid & _T_980 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_980 & ~reset & ~_T_886) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid report param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_address_ok_T_9 & (io_in_c_valid & _T_1044 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1044 & ~reset & ~_address_ok_T_9) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries unmanaged address (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_1044 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1044 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_1044 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1044 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_c_valid & _T_1044 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1044 & ~reset & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_890 & (io_in_c_valid & _T_1044 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1044 & ~reset & ~_T_890) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck is corrupt (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_address_ok_T_9 & (io_in_c_valid & _T_1062 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1062 & ~reset & ~_address_ok_T_9) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries unmanaged address (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_1062 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1062 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_1062 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1062 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_c_valid & _T_1062 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1062 & ~reset & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_address_ok_T_9 & (io_in_c_valid & _T_1076 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1076 & ~reset & ~_address_ok_T_9) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries unmanaged address (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_1076 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1076 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_1076 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1076 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck address not aligned to size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_c_valid & _T_1076 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1076 & ~reset & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid param (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_890 & (io_in_c_valid & _T_1076 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_1076 & ~reset & ~_T_890) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck is corrupt (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1099 & (_T_1098 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1098 & ~reset & ~_T_1099) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1103 & (_T_1098 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1098 & ~reset & ~_T_1103) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1107 & (_T_1098 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1098 & ~reset & ~_T_1107) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1111 & (_T_1098 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1098 & ~reset & ~_T_1111) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1115 & (_T_1098 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1098 & ~reset & ~_T_1115) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1123 & (_T_1122 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1122 & _T_2 & ~_T_1123) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1127 & (_T_1122 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1122 & _T_2 & ~_T_1127) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1131 & (_T_1122 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1122 & _T_2 & ~_T_1131) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1135 & (_T_1122 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1122 & _T_2 & ~_T_1135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1139 & (_T_1122 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1122 & _T_2 & ~_T_1139) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1155 & (_T_1150 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1150 & ~reset & ~_T_1155) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel param changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1167 & (_T_1150 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1150 & ~reset & ~_T_1167) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel addresss changed with multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1175 & (_T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1174 & ~reset & ~_T_1175) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel opcode changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1179 & (_T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1174 & ~reset & ~_T_1179) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel param changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1183 & (_T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1174 & ~reset & ~_T_1183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel size changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1187 & (_T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1174 & ~reset & ~_T_1187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel source changed within multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1191 & (_T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1174 & ~reset & ~_T_1191) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel address changed with multibeat operation (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1204 & (_T_1200 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1200 & ~reset & ~_T_1204) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1223 & (_T_1211 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1211 & _T_2 & ~_T_1223) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1229 & (_T_1211 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1211 & same_cycle_resp & _T_2 & ~_T_1229) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1233 & (_T_1211 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1211 & same_cycle_resp & _T_2 & ~_T_1233) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1241 & (_T_1211 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1211 & ~same_cycle_resp & _T_2 & ~_T_1241) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1245 & (_T_1211 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1211 & ~same_cycle_resp & _T_2 & ~_T_1245) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1257 & (_T_1255 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1255 & _T_2 & ~_T_1257) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1264 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_1264) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1293 & (_T_1290 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1290 & ~reset & ~_T_1293) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel re-used a source ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1309 & (_T_1299 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1299 & _T_2 & ~_T_1309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1313 & (_T_1299 & same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1299 & same_cycle_resp_1 & _T_2 & ~_T_1313) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1317 & (_T_1299 & ~same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1299 & ~same_cycle_resp_1 & _T_2 & ~_T_1317) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1328 & (_T_1326 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1326 & _T_2 & ~_T_1328) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1333 & (_T_1332 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1332 & _T_2 & ~_T_1333) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' and 'D' concurrent, despite minlatency 1 (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1342 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1342) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1358 & (_T_1355 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1355 & _T_2 & ~_T_1358) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel re-used a sink ID (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1366[0] & (io_in_e_valid & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_e_valid & ~reset & ~_T_1366[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'E' channel acknowledged for nothing inflight (connected at BankedL2Params.scala:60:27)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[1:0];
+  _RAND_12 = {1{`RANDOM}};
+  b_first_counter = _RAND_12[3:0];
+  _RAND_13 = {1{`RANDOM}};
+  param_2 = _RAND_13[1:0];
+  _RAND_14 = {1{`RANDOM}};
+  address_1 = _RAND_14[30:0];
+  _RAND_15 = {1{`RANDOM}};
+  c_first_counter = _RAND_15[3:0];
+  _RAND_16 = {1{`RANDOM}};
+  opcode_3 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  param_3 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  size_3 = _RAND_18[2:0];
+  _RAND_19 = {1{`RANDOM}};
+  source_3 = _RAND_19[1:0];
+  _RAND_20 = {1{`RANDOM}};
+  address_2 = _RAND_20[30:0];
+  _RAND_21 = {1{`RANDOM}};
+  inflight = _RAND_21[2:0];
+  _RAND_22 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_22[11:0];
+  _RAND_23 = {1{`RANDOM}};
+  inflight_sizes = _RAND_23[11:0];
+  _RAND_24 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_24[3:0];
+  _RAND_25 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_25[3:0];
+  _RAND_26 = {1{`RANDOM}};
+  watchdog = _RAND_26[31:0];
+  _RAND_27 = {1{`RANDOM}};
+  inflight_1 = _RAND_27[2:0];
+  _RAND_28 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_28[11:0];
+  _RAND_29 = {1{`RANDOM}};
+  c_first_counter_1 = _RAND_29[3:0];
+  _RAND_30 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_30[3:0];
+  _RAND_31 = {1{`RANDOM}};
+  watchdog_1 = _RAND_31[31:0];
+  _RAND_32 = {1{`RANDOM}};
+  inflight_2 = _RAND_32[3:0];
+  _RAND_33 = {1{`RANDOM}};
+  d_first_counter_3 = _RAND_33[3:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module BroadcastFilter(
+  output        io_request_ready,
+  input         io_request_valid,
+  input  [1:0]  io_request_bits_mshr,
+  input  [30:0] io_request_bits_address,
+  input         io_request_bits_allocOH,
+  input         io_request_bits_needT,
+  input         io_response_ready,
+  output        io_response_valid,
+  output [1:0]  io_response_bits_mshr,
+  output [30:0] io_response_bits_address,
+  output        io_response_bits_allocOH,
+  output        io_response_bits_needT
+);
+  assign io_request_ready = io_response_ready; // @[Broadcast.scala 362:20]
+  assign io_response_valid = io_request_valid; // @[Broadcast.scala 363:21]
+  assign io_response_bits_mshr = io_request_bits_mshr; // @[Broadcast.scala 365:28]
+  assign io_response_bits_address = io_request_bits_address; // @[Broadcast.scala 366:28]
+  assign io_response_bits_allocOH = io_request_bits_allocOH; // @[Broadcast.scala 368:28]
+  assign io_response_bits_needT = io_request_bits_needT; // @[Broadcast.scala 367:28]
+endmodule
+module Queue_11(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [3:0]  io_enq_bits_mask,
+  input  [31:0] io_enq_bits_data,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [3:0]  io_deq_bits_mask,
+  output [31:0] io_deq_bits_data
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  reg [3:0] ram_mask [0:15]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:15]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] value; // @[Counter.scala 62:40]
+  reg [3:0] value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _value_T_1 = value + 4'h1; // @[Counter.scala 78:24]
+  wire [3:0] _value_T_3 = value_1 + 4'h1; // @[Counter.scala 78:24]
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 4'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= _value_T_1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 4'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= _value_T_3; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 16; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 16; initvar = initvar+1)
+    ram_data[initvar] = _RAND_1[31:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_2 = {1{`RANDOM}};
+  value = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  value_1 = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  maybe_full = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBroadcastTracker(
+  input         clock,
+  input         reset,
+  input         io_in_a_first,
+  output        io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input  [31:0] io_in_a_bits_data,
+  input         io_out_a_ready,
+  output        io_out_a_valid,
+  output [2:0]  io_out_a_bits_opcode,
+  output [2:0]  io_out_a_bits_param,
+  output [2:0]  io_out_a_bits_size,
+  output [3:0]  io_out_a_bits_source,
+  output [30:0] io_out_a_bits_address,
+  output [3:0]  io_out_a_bits_mask,
+  output [31:0] io_out_a_bits_data,
+  input         io_probe_valid,
+  input         io_probe_bits_count,
+  input         io_probenack,
+  input         io_probedack,
+  input         io_probesack,
+  input         io_d_last,
+  input         io_e_last,
+  output [1:0]  io_source,
+  output [24:0] io_line,
+  output        io_idle,
+  output        io_need_d
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+`endif // RANDOMIZE_REG_INIT
+  wire  o_data_clock; // @[Decoupled.scala 361:21]
+  wire  o_data_reset; // @[Decoupled.scala 361:21]
+  wire  o_data_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  o_data_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [3:0] o_data_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] o_data_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  o_data_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  o_data_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [3:0] o_data_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] o_data_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  reg  got_e; // @[Broadcast.scala 423:24]
+  reg  sent_d; // @[Broadcast.scala 424:24]
+  reg  shared; // @[Broadcast.scala 425:20]
+  reg [2:0] opcode; // @[Broadcast.scala 426:20]
+  reg [2:0] param; // @[Broadcast.scala 427:20]
+  reg [2:0] size; // @[Broadcast.scala 428:20]
+  reg [1:0] source; // @[Broadcast.scala 429:20]
+  reg [30:0] address; // @[Broadcast.scala 432:24]
+  reg  count; // @[Broadcast.scala 433:20]
+  wire  idle = got_e & sent_d; // @[Broadcast.scala 435:23]
+  wire  _T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire  _T_1 = _T & io_in_a_first; // @[Broadcast.scala 437:24]
+  wire  _T_3 = ~reset; // @[Broadcast.scala 438:12]
+  wire  _GEN_0 = _T & io_in_a_first ? 1'h0 : sent_d; // @[Broadcast.scala 437:42 439:13 424:24]
+  wire  _GEN_1 = _T & io_in_a_first ? 1'h0 : shared; // @[Broadcast.scala 437:42 440:13 425:20]
+  wire  _GEN_2 = _T & io_in_a_first ? io_in_a_bits_opcode != 3'h6 & io_in_a_bits_opcode != 3'h7 : got_e; // @[Broadcast.scala 437:42 441:13 423:24]
+  wire  _GEN_8 = _T & io_in_a_first | count; // @[Broadcast.scala 437:42 449:13 433:20]
+  wire  _GEN_9 = io_probe_valid ? io_probe_bits_count : _GEN_8; // @[Broadcast.scala 453:25 454:13]
+  wire  _GEN_11 = io_d_last | _GEN_0; // @[Broadcast.scala 458:20 460:12]
+  wire  _GEN_12 = io_e_last | _GEN_2; // @[Broadcast.scala 462:20 464:11]
+  wire  _T_13 = io_probenack | io_probedack; // @[Broadcast.scala 467:22]
+  wire [1:0] _count_T_1 = io_probenack & io_probedack ? 2'h2 : 2'h1; // @[Broadcast.scala 469:25]
+  wire [1:0] _GEN_15 = {{1'd0}, count}; // @[Broadcast.scala 469:20]
+  wire [1:0] _count_T_3 = _GEN_15 - _count_T_1; // @[Broadcast.scala 469:20]
+  wire [1:0] _GEN_13 = io_probenack | io_probedack ? _count_T_3 : {{1'd0}, _GEN_9}; // @[Broadcast.scala 467:39 469:11]
+  wire  _io_in_a_ready_T_1 = idle | ~io_in_a_first; // @[Broadcast.scala 485:26]
+  wire  i_data_ready = o_data_io_enq_ready; // @[Broadcast.scala 482:20 Decoupled.scala 365:17]
+  wire  probe_done = ~count; // @[Broadcast.scala 490:26]
+  wire  acquire = opcode == 3'h6 | opcode == 3'h7; // @[Broadcast.scala 491:52]
+  wire [1:0] transform = shared ? 2'h2 : 2'h3; // @[Broadcast.scala 493:22]
+  wire [1:0] _io_out_a_bits_source_T = acquire ? transform : 2'h0; // @[Broadcast.scala 500:35]
+  Queue_11 o_data ( // @[Decoupled.scala 361:21]
+    .clock(o_data_clock),
+    .reset(o_data_reset),
+    .io_enq_ready(o_data_io_enq_ready),
+    .io_enq_valid(o_data_io_enq_valid),
+    .io_enq_bits_mask(o_data_io_enq_bits_mask),
+    .io_enq_bits_data(o_data_io_enq_bits_data),
+    .io_deq_ready(o_data_io_deq_ready),
+    .io_deq_valid(o_data_io_deq_valid),
+    .io_deq_bits_mask(o_data_io_deq_bits_mask),
+    .io_deq_bits_data(o_data_io_deq_bits_data)
+  );
+  assign io_in_a_ready = (idle | ~io_in_a_first) & i_data_ready; // @[Broadcast.scala 485:45]
+  assign io_out_a_valid = o_data_io_deq_valid & probe_done; // @[Broadcast.scala 496:34]
+  assign io_out_a_bits_opcode = acquire ? 3'h4 : opcode; // @[Broadcast.scala 497:31]
+  assign io_out_a_bits_param = acquire ? 3'h0 : param; // @[Broadcast.scala 498:31]
+  assign io_out_a_bits_size = size; // @[Broadcast.scala 499:25]
+  assign io_out_a_bits_source = {_io_out_a_bits_source_T,source}; // @[Cat.scala 31:58]
+  assign io_out_a_bits_address = address; // @[Broadcast.scala 501:25]
+  assign io_out_a_bits_mask = o_data_io_deq_bits_mask; // @[Broadcast.scala 502:25]
+  assign io_out_a_bits_data = o_data_io_deq_bits_data; // @[Broadcast.scala 503:25]
+  assign io_source = source; // @[Broadcast.scala 478:13]
+  assign io_line = address[30:6]; // @[Broadcast.scala 479:22]
+  assign io_idle = got_e & sent_d; // @[Broadcast.scala 435:23]
+  assign io_need_d = ~sent_d; // @[Broadcast.scala 477:16]
+  assign o_data_clock = clock;
+  assign o_data_reset = reset;
+  assign o_data_io_enq_valid = _io_in_a_ready_T_1 & io_in_a_valid; // @[Broadcast.scala 486:44]
+  assign o_data_io_enq_bits_mask = io_in_a_bits_mask; // @[Broadcast.scala 482:20 487:20]
+  assign o_data_io_enq_bits_data = io_in_a_bits_data; // @[Broadcast.scala 482:20 488:20]
+  assign o_data_io_deq_ready = io_out_a_ready & probe_done; // @[Broadcast.scala 495:34]
+  always @(posedge clock) begin
+    got_e <= reset | _GEN_12; // @[Broadcast.scala 423:{24,24}]
+    sent_d <= reset | _GEN_11; // @[Broadcast.scala 424:{24,24}]
+    shared <= io_probesack | _GEN_1; // @[Broadcast.scala 472:23 473:12]
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      opcode <= io_in_a_bits_opcode; // @[Broadcast.scala 442:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      param <= io_in_a_bits_param; // @[Broadcast.scala 443:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      size <= io_in_a_bits_size; // @[Broadcast.scala 444:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      source <= io_in_a_bits_source; // @[Broadcast.scala 445:13]
+    end
+    if (reset) begin // @[Broadcast.scala 432:24]
+      address <= 31'h0; // @[Broadcast.scala 432:24]
+    end else if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      address <= io_in_a_bits_address; // @[Broadcast.scala 448:13]
+    end
+    count <= _GEN_13[0];
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~idle & (_T_1 & ~reset)) begin
+          $fatal; // @[Broadcast.scala 438:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1 & ~reset & ~idle) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:438 assert (idle)\n"); // @[Broadcast.scala 438:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~sent_d) & (io_d_last & _T_3)) begin
+          $fatal; // @[Broadcast.scala 459:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_d_last & _T_3 & ~(~sent_d)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:459 assert (!sent_d)\n"); // @[Broadcast.scala 459:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~got_e) & (io_e_last & _T_3)) begin
+          $fatal; // @[Broadcast.scala 463:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_e_last & _T_3 & ~(~got_e)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:463 assert (!got_e)\n"); // @[Broadcast.scala 463:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(count > 1'h0) & (_T_13 & _T_3)) begin
+          $fatal; // @[Broadcast.scala 468:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_13 & _T_3 & ~(count > 1'h0)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:468 assert (count > 0.U)\n"); // @[Broadcast.scala 468:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  got_e = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sent_d = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  shared = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  opcode = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  param = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  size = _RAND_5[2:0];
+  _RAND_6 = {1{`RANDOM}};
+  source = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  address = _RAND_7[30:0];
+  _RAND_8 = {1{`RANDOM}};
+  count = _RAND_8[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBroadcastTracker_1(
+  input         clock,
+  input         reset,
+  input         io_in_a_first,
+  output        io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input  [31:0] io_in_a_bits_data,
+  input         io_out_a_ready,
+  output        io_out_a_valid,
+  output [2:0]  io_out_a_bits_opcode,
+  output [2:0]  io_out_a_bits_param,
+  output [2:0]  io_out_a_bits_size,
+  output [3:0]  io_out_a_bits_source,
+  output [30:0] io_out_a_bits_address,
+  output [3:0]  io_out_a_bits_mask,
+  output [31:0] io_out_a_bits_data,
+  input         io_probe_valid,
+  input         io_probe_bits_count,
+  input         io_probenack,
+  input         io_probedack,
+  input         io_probesack,
+  input         io_d_last,
+  input         io_e_last,
+  output [1:0]  io_source,
+  output [24:0] io_line,
+  output        io_idle,
+  output        io_need_d
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+`endif // RANDOMIZE_REG_INIT
+  wire  o_data_clock; // @[Decoupled.scala 361:21]
+  wire  o_data_reset; // @[Decoupled.scala 361:21]
+  wire  o_data_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  o_data_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [3:0] o_data_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] o_data_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  o_data_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  o_data_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [3:0] o_data_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] o_data_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  reg  got_e; // @[Broadcast.scala 423:24]
+  reg  sent_d; // @[Broadcast.scala 424:24]
+  reg  shared; // @[Broadcast.scala 425:20]
+  reg [2:0] opcode; // @[Broadcast.scala 426:20]
+  reg [2:0] param; // @[Broadcast.scala 427:20]
+  reg [2:0] size; // @[Broadcast.scala 428:20]
+  reg [1:0] source; // @[Broadcast.scala 429:20]
+  reg [30:0] address; // @[Broadcast.scala 432:24]
+  reg  count; // @[Broadcast.scala 433:20]
+  wire  idle = got_e & sent_d; // @[Broadcast.scala 435:23]
+  wire  _T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire  _T_1 = _T & io_in_a_first; // @[Broadcast.scala 437:24]
+  wire  _T_3 = ~reset; // @[Broadcast.scala 438:12]
+  wire  _GEN_0 = _T & io_in_a_first ? 1'h0 : sent_d; // @[Broadcast.scala 437:42 439:13 424:24]
+  wire  _GEN_1 = _T & io_in_a_first ? 1'h0 : shared; // @[Broadcast.scala 437:42 440:13 425:20]
+  wire  _GEN_2 = _T & io_in_a_first ? io_in_a_bits_opcode != 3'h6 & io_in_a_bits_opcode != 3'h7 : got_e; // @[Broadcast.scala 437:42 441:13 423:24]
+  wire  _GEN_8 = _T & io_in_a_first | count; // @[Broadcast.scala 437:42 449:13 433:20]
+  wire  _GEN_9 = io_probe_valid ? io_probe_bits_count : _GEN_8; // @[Broadcast.scala 453:25 454:13]
+  wire  _GEN_11 = io_d_last | _GEN_0; // @[Broadcast.scala 458:20 460:12]
+  wire  _GEN_12 = io_e_last | _GEN_2; // @[Broadcast.scala 462:20 464:11]
+  wire  _T_13 = io_probenack | io_probedack; // @[Broadcast.scala 467:22]
+  wire [1:0] _count_T_1 = io_probenack & io_probedack ? 2'h2 : 2'h1; // @[Broadcast.scala 469:25]
+  wire [1:0] _GEN_15 = {{1'd0}, count}; // @[Broadcast.scala 469:20]
+  wire [1:0] _count_T_3 = _GEN_15 - _count_T_1; // @[Broadcast.scala 469:20]
+  wire [1:0] _GEN_13 = io_probenack | io_probedack ? _count_T_3 : {{1'd0}, _GEN_9}; // @[Broadcast.scala 467:39 469:11]
+  wire  _io_in_a_ready_T_1 = idle | ~io_in_a_first; // @[Broadcast.scala 485:26]
+  wire  i_data_ready = o_data_io_enq_ready; // @[Broadcast.scala 482:20 Decoupled.scala 365:17]
+  wire  probe_done = ~count; // @[Broadcast.scala 490:26]
+  wire  acquire = opcode == 3'h6 | opcode == 3'h7; // @[Broadcast.scala 491:52]
+  wire [1:0] transform = shared ? 2'h2 : 2'h3; // @[Broadcast.scala 493:22]
+  wire [1:0] _io_out_a_bits_source_T = acquire ? transform : 2'h0; // @[Broadcast.scala 500:35]
+  Queue_11 o_data ( // @[Decoupled.scala 361:21]
+    .clock(o_data_clock),
+    .reset(o_data_reset),
+    .io_enq_ready(o_data_io_enq_ready),
+    .io_enq_valid(o_data_io_enq_valid),
+    .io_enq_bits_mask(o_data_io_enq_bits_mask),
+    .io_enq_bits_data(o_data_io_enq_bits_data),
+    .io_deq_ready(o_data_io_deq_ready),
+    .io_deq_valid(o_data_io_deq_valid),
+    .io_deq_bits_mask(o_data_io_deq_bits_mask),
+    .io_deq_bits_data(o_data_io_deq_bits_data)
+  );
+  assign io_in_a_ready = (idle | ~io_in_a_first) & i_data_ready; // @[Broadcast.scala 485:45]
+  assign io_out_a_valid = o_data_io_deq_valid & probe_done; // @[Broadcast.scala 496:34]
+  assign io_out_a_bits_opcode = acquire ? 3'h4 : opcode; // @[Broadcast.scala 497:31]
+  assign io_out_a_bits_param = acquire ? 3'h0 : param; // @[Broadcast.scala 498:31]
+  assign io_out_a_bits_size = size; // @[Broadcast.scala 499:25]
+  assign io_out_a_bits_source = {_io_out_a_bits_source_T,source}; // @[Cat.scala 31:58]
+  assign io_out_a_bits_address = address; // @[Broadcast.scala 501:25]
+  assign io_out_a_bits_mask = o_data_io_deq_bits_mask; // @[Broadcast.scala 502:25]
+  assign io_out_a_bits_data = o_data_io_deq_bits_data; // @[Broadcast.scala 503:25]
+  assign io_source = source; // @[Broadcast.scala 478:13]
+  assign io_line = address[30:6]; // @[Broadcast.scala 479:22]
+  assign io_idle = got_e & sent_d; // @[Broadcast.scala 435:23]
+  assign io_need_d = ~sent_d; // @[Broadcast.scala 477:16]
+  assign o_data_clock = clock;
+  assign o_data_reset = reset;
+  assign o_data_io_enq_valid = _io_in_a_ready_T_1 & io_in_a_valid; // @[Broadcast.scala 486:44]
+  assign o_data_io_enq_bits_mask = io_in_a_bits_mask; // @[Broadcast.scala 482:20 487:20]
+  assign o_data_io_enq_bits_data = io_in_a_bits_data; // @[Broadcast.scala 482:20 488:20]
+  assign o_data_io_deq_ready = io_out_a_ready & probe_done; // @[Broadcast.scala 495:34]
+  always @(posedge clock) begin
+    got_e <= reset | _GEN_12; // @[Broadcast.scala 423:{24,24}]
+    sent_d <= reset | _GEN_11; // @[Broadcast.scala 424:{24,24}]
+    shared <= io_probesack | _GEN_1; // @[Broadcast.scala 472:23 473:12]
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      opcode <= io_in_a_bits_opcode; // @[Broadcast.scala 442:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      param <= io_in_a_bits_param; // @[Broadcast.scala 443:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      size <= io_in_a_bits_size; // @[Broadcast.scala 444:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      source <= io_in_a_bits_source; // @[Broadcast.scala 445:13]
+    end
+    if (reset) begin // @[Broadcast.scala 432:24]
+      address <= 31'h40; // @[Broadcast.scala 432:24]
+    end else if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      address <= io_in_a_bits_address; // @[Broadcast.scala 448:13]
+    end
+    count <= _GEN_13[0];
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~idle & (_T_1 & ~reset)) begin
+          $fatal; // @[Broadcast.scala 438:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1 & ~reset & ~idle) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:438 assert (idle)\n"); // @[Broadcast.scala 438:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~sent_d) & (io_d_last & _T_3)) begin
+          $fatal; // @[Broadcast.scala 459:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_d_last & _T_3 & ~(~sent_d)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:459 assert (!sent_d)\n"); // @[Broadcast.scala 459:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~got_e) & (io_e_last & _T_3)) begin
+          $fatal; // @[Broadcast.scala 463:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_e_last & _T_3 & ~(~got_e)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:463 assert (!got_e)\n"); // @[Broadcast.scala 463:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(count > 1'h0) & (_T_13 & _T_3)) begin
+          $fatal; // @[Broadcast.scala 468:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_13 & _T_3 & ~(count > 1'h0)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:468 assert (count > 0.U)\n"); // @[Broadcast.scala 468:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  got_e = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sent_d = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  shared = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  opcode = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  param = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  size = _RAND_5[2:0];
+  _RAND_6 = {1{`RANDOM}};
+  source = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  address = _RAND_7[30:0];
+  _RAND_8 = {1{`RANDOM}};
+  count = _RAND_8[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBroadcastTracker_2(
+  input         clock,
+  input         reset,
+  input         io_in_a_first,
+  output        io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input  [31:0] io_in_a_bits_data,
+  input         io_out_a_ready,
+  output        io_out_a_valid,
+  output [2:0]  io_out_a_bits_opcode,
+  output [2:0]  io_out_a_bits_param,
+  output [2:0]  io_out_a_bits_size,
+  output [3:0]  io_out_a_bits_source,
+  output [30:0] io_out_a_bits_address,
+  output [3:0]  io_out_a_bits_mask,
+  output [31:0] io_out_a_bits_data,
+  input         io_probe_valid,
+  input         io_probe_bits_count,
+  input         io_probenack,
+  input         io_probedack,
+  input         io_probesack,
+  input         io_d_last,
+  input         io_e_last,
+  output [1:0]  io_source,
+  output [24:0] io_line,
+  output        io_idle,
+  output        io_need_d
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+`endif // RANDOMIZE_REG_INIT
+  wire  o_data_clock; // @[Decoupled.scala 361:21]
+  wire  o_data_reset; // @[Decoupled.scala 361:21]
+  wire  o_data_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  o_data_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [3:0] o_data_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] o_data_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  o_data_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  o_data_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [3:0] o_data_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] o_data_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  reg  got_e; // @[Broadcast.scala 423:24]
+  reg  sent_d; // @[Broadcast.scala 424:24]
+  reg  shared; // @[Broadcast.scala 425:20]
+  reg [2:0] opcode; // @[Broadcast.scala 426:20]
+  reg [2:0] param; // @[Broadcast.scala 427:20]
+  reg [2:0] size; // @[Broadcast.scala 428:20]
+  reg [1:0] source; // @[Broadcast.scala 429:20]
+  reg [30:0] address; // @[Broadcast.scala 432:24]
+  reg  count; // @[Broadcast.scala 433:20]
+  wire  idle = got_e & sent_d; // @[Broadcast.scala 435:23]
+  wire  _T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire  _T_1 = _T & io_in_a_first; // @[Broadcast.scala 437:24]
+  wire  _T_3 = ~reset; // @[Broadcast.scala 438:12]
+  wire  _GEN_0 = _T & io_in_a_first ? 1'h0 : sent_d; // @[Broadcast.scala 437:42 439:13 424:24]
+  wire  _GEN_1 = _T & io_in_a_first ? 1'h0 : shared; // @[Broadcast.scala 437:42 440:13 425:20]
+  wire  _GEN_2 = _T & io_in_a_first ? io_in_a_bits_opcode != 3'h6 & io_in_a_bits_opcode != 3'h7 : got_e; // @[Broadcast.scala 437:42 441:13 423:24]
+  wire  _GEN_8 = _T & io_in_a_first | count; // @[Broadcast.scala 437:42 449:13 433:20]
+  wire  _GEN_9 = io_probe_valid ? io_probe_bits_count : _GEN_8; // @[Broadcast.scala 453:25 454:13]
+  wire  _GEN_11 = io_d_last | _GEN_0; // @[Broadcast.scala 458:20 460:12]
+  wire  _GEN_12 = io_e_last | _GEN_2; // @[Broadcast.scala 462:20 464:11]
+  wire  _T_13 = io_probenack | io_probedack; // @[Broadcast.scala 467:22]
+  wire [1:0] _count_T_1 = io_probenack & io_probedack ? 2'h2 : 2'h1; // @[Broadcast.scala 469:25]
+  wire [1:0] _GEN_15 = {{1'd0}, count}; // @[Broadcast.scala 469:20]
+  wire [1:0] _count_T_3 = _GEN_15 - _count_T_1; // @[Broadcast.scala 469:20]
+  wire [1:0] _GEN_13 = io_probenack | io_probedack ? _count_T_3 : {{1'd0}, _GEN_9}; // @[Broadcast.scala 467:39 469:11]
+  wire  _io_in_a_ready_T_1 = idle | ~io_in_a_first; // @[Broadcast.scala 485:26]
+  wire  i_data_ready = o_data_io_enq_ready; // @[Broadcast.scala 482:20 Decoupled.scala 365:17]
+  wire  probe_done = ~count; // @[Broadcast.scala 490:26]
+  wire  acquire = opcode == 3'h6 | opcode == 3'h7; // @[Broadcast.scala 491:52]
+  wire [1:0] transform = shared ? 2'h2 : 2'h3; // @[Broadcast.scala 493:22]
+  wire [1:0] _io_out_a_bits_source_T = acquire ? transform : 2'h0; // @[Broadcast.scala 500:35]
+  Queue_11 o_data ( // @[Decoupled.scala 361:21]
+    .clock(o_data_clock),
+    .reset(o_data_reset),
+    .io_enq_ready(o_data_io_enq_ready),
+    .io_enq_valid(o_data_io_enq_valid),
+    .io_enq_bits_mask(o_data_io_enq_bits_mask),
+    .io_enq_bits_data(o_data_io_enq_bits_data),
+    .io_deq_ready(o_data_io_deq_ready),
+    .io_deq_valid(o_data_io_deq_valid),
+    .io_deq_bits_mask(o_data_io_deq_bits_mask),
+    .io_deq_bits_data(o_data_io_deq_bits_data)
+  );
+  assign io_in_a_ready = (idle | ~io_in_a_first) & i_data_ready; // @[Broadcast.scala 485:45]
+  assign io_out_a_valid = o_data_io_deq_valid & probe_done; // @[Broadcast.scala 496:34]
+  assign io_out_a_bits_opcode = acquire ? 3'h4 : opcode; // @[Broadcast.scala 497:31]
+  assign io_out_a_bits_param = acquire ? 3'h0 : param; // @[Broadcast.scala 498:31]
+  assign io_out_a_bits_size = size; // @[Broadcast.scala 499:25]
+  assign io_out_a_bits_source = {_io_out_a_bits_source_T,source}; // @[Cat.scala 31:58]
+  assign io_out_a_bits_address = address; // @[Broadcast.scala 501:25]
+  assign io_out_a_bits_mask = o_data_io_deq_bits_mask; // @[Broadcast.scala 502:25]
+  assign io_out_a_bits_data = o_data_io_deq_bits_data; // @[Broadcast.scala 503:25]
+  assign io_source = source; // @[Broadcast.scala 478:13]
+  assign io_line = address[30:6]; // @[Broadcast.scala 479:22]
+  assign io_idle = got_e & sent_d; // @[Broadcast.scala 435:23]
+  assign io_need_d = ~sent_d; // @[Broadcast.scala 477:16]
+  assign o_data_clock = clock;
+  assign o_data_reset = reset;
+  assign o_data_io_enq_valid = _io_in_a_ready_T_1 & io_in_a_valid; // @[Broadcast.scala 486:44]
+  assign o_data_io_enq_bits_mask = io_in_a_bits_mask; // @[Broadcast.scala 482:20 487:20]
+  assign o_data_io_enq_bits_data = io_in_a_bits_data; // @[Broadcast.scala 482:20 488:20]
+  assign o_data_io_deq_ready = io_out_a_ready & probe_done; // @[Broadcast.scala 495:34]
+  always @(posedge clock) begin
+    got_e <= reset | _GEN_12; // @[Broadcast.scala 423:{24,24}]
+    sent_d <= reset | _GEN_11; // @[Broadcast.scala 424:{24,24}]
+    shared <= io_probesack | _GEN_1; // @[Broadcast.scala 472:23 473:12]
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      opcode <= io_in_a_bits_opcode; // @[Broadcast.scala 442:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      param <= io_in_a_bits_param; // @[Broadcast.scala 443:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      size <= io_in_a_bits_size; // @[Broadcast.scala 444:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      source <= io_in_a_bits_source; // @[Broadcast.scala 445:13]
+    end
+    if (reset) begin // @[Broadcast.scala 432:24]
+      address <= 31'h80; // @[Broadcast.scala 432:24]
+    end else if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      address <= io_in_a_bits_address; // @[Broadcast.scala 448:13]
+    end
+    count <= _GEN_13[0];
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~idle & (_T_1 & ~reset)) begin
+          $fatal; // @[Broadcast.scala 438:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1 & ~reset & ~idle) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:438 assert (idle)\n"); // @[Broadcast.scala 438:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~sent_d) & (io_d_last & _T_3)) begin
+          $fatal; // @[Broadcast.scala 459:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_d_last & _T_3 & ~(~sent_d)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:459 assert (!sent_d)\n"); // @[Broadcast.scala 459:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~got_e) & (io_e_last & _T_3)) begin
+          $fatal; // @[Broadcast.scala 463:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_e_last & _T_3 & ~(~got_e)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:463 assert (!got_e)\n"); // @[Broadcast.scala 463:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(count > 1'h0) & (_T_13 & _T_3)) begin
+          $fatal; // @[Broadcast.scala 468:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_13 & _T_3 & ~(count > 1'h0)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:468 assert (count > 0.U)\n"); // @[Broadcast.scala 468:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  got_e = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sent_d = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  shared = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  opcode = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  param = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  size = _RAND_5[2:0];
+  _RAND_6 = {1{`RANDOM}};
+  source = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  address = _RAND_7[30:0];
+  _RAND_8 = {1{`RANDOM}};
+  count = _RAND_8[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBroadcastTracker_3(
+  input         clock,
+  input         reset,
+  input         io_in_a_first,
+  output        io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input  [31:0] io_in_a_bits_data,
+  input         io_out_a_ready,
+  output        io_out_a_valid,
+  output [2:0]  io_out_a_bits_opcode,
+  output [2:0]  io_out_a_bits_param,
+  output [2:0]  io_out_a_bits_size,
+  output [3:0]  io_out_a_bits_source,
+  output [30:0] io_out_a_bits_address,
+  output [3:0]  io_out_a_bits_mask,
+  output [31:0] io_out_a_bits_data,
+  input         io_probe_valid,
+  input         io_probe_bits_count,
+  input         io_probenack,
+  input         io_probedack,
+  input         io_probesack,
+  input         io_d_last,
+  input         io_e_last,
+  output [1:0]  io_source,
+  output [24:0] io_line,
+  output        io_idle,
+  output        io_need_d
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+`endif // RANDOMIZE_REG_INIT
+  wire  o_data_clock; // @[Decoupled.scala 361:21]
+  wire  o_data_reset; // @[Decoupled.scala 361:21]
+  wire  o_data_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  o_data_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [3:0] o_data_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] o_data_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  o_data_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  o_data_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [3:0] o_data_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] o_data_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  reg  got_e; // @[Broadcast.scala 423:24]
+  reg  sent_d; // @[Broadcast.scala 424:24]
+  reg  shared; // @[Broadcast.scala 425:20]
+  reg [2:0] opcode; // @[Broadcast.scala 426:20]
+  reg [2:0] param; // @[Broadcast.scala 427:20]
+  reg [2:0] size; // @[Broadcast.scala 428:20]
+  reg [1:0] source; // @[Broadcast.scala 429:20]
+  reg [30:0] address; // @[Broadcast.scala 432:24]
+  reg  count; // @[Broadcast.scala 433:20]
+  wire  idle = got_e & sent_d; // @[Broadcast.scala 435:23]
+  wire  _T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire  _T_1 = _T & io_in_a_first; // @[Broadcast.scala 437:24]
+  wire  _T_3 = ~reset; // @[Broadcast.scala 438:12]
+  wire  _GEN_0 = _T & io_in_a_first ? 1'h0 : sent_d; // @[Broadcast.scala 437:42 439:13 424:24]
+  wire  _GEN_1 = _T & io_in_a_first ? 1'h0 : shared; // @[Broadcast.scala 437:42 440:13 425:20]
+  wire  _GEN_2 = _T & io_in_a_first ? io_in_a_bits_opcode != 3'h6 & io_in_a_bits_opcode != 3'h7 : got_e; // @[Broadcast.scala 437:42 441:13 423:24]
+  wire  _GEN_8 = _T & io_in_a_first | count; // @[Broadcast.scala 437:42 449:13 433:20]
+  wire  _GEN_9 = io_probe_valid ? io_probe_bits_count : _GEN_8; // @[Broadcast.scala 453:25 454:13]
+  wire  _GEN_11 = io_d_last | _GEN_0; // @[Broadcast.scala 458:20 460:12]
+  wire  _GEN_12 = io_e_last | _GEN_2; // @[Broadcast.scala 462:20 464:11]
+  wire  _T_13 = io_probenack | io_probedack; // @[Broadcast.scala 467:22]
+  wire [1:0] _count_T_1 = io_probenack & io_probedack ? 2'h2 : 2'h1; // @[Broadcast.scala 469:25]
+  wire [1:0] _GEN_15 = {{1'd0}, count}; // @[Broadcast.scala 469:20]
+  wire [1:0] _count_T_3 = _GEN_15 - _count_T_1; // @[Broadcast.scala 469:20]
+  wire [1:0] _GEN_13 = io_probenack | io_probedack ? _count_T_3 : {{1'd0}, _GEN_9}; // @[Broadcast.scala 467:39 469:11]
+  wire  _io_in_a_ready_T_1 = idle | ~io_in_a_first; // @[Broadcast.scala 485:26]
+  wire  i_data_ready = o_data_io_enq_ready; // @[Broadcast.scala 482:20 Decoupled.scala 365:17]
+  wire  probe_done = ~count; // @[Broadcast.scala 490:26]
+  wire  acquire = opcode == 3'h6 | opcode == 3'h7; // @[Broadcast.scala 491:52]
+  wire [1:0] transform = shared ? 2'h2 : 2'h3; // @[Broadcast.scala 493:22]
+  wire [1:0] _io_out_a_bits_source_T = acquire ? transform : 2'h0; // @[Broadcast.scala 500:35]
+  Queue_11 o_data ( // @[Decoupled.scala 361:21]
+    .clock(o_data_clock),
+    .reset(o_data_reset),
+    .io_enq_ready(o_data_io_enq_ready),
+    .io_enq_valid(o_data_io_enq_valid),
+    .io_enq_bits_mask(o_data_io_enq_bits_mask),
+    .io_enq_bits_data(o_data_io_enq_bits_data),
+    .io_deq_ready(o_data_io_deq_ready),
+    .io_deq_valid(o_data_io_deq_valid),
+    .io_deq_bits_mask(o_data_io_deq_bits_mask),
+    .io_deq_bits_data(o_data_io_deq_bits_data)
+  );
+  assign io_in_a_ready = (idle | ~io_in_a_first) & i_data_ready; // @[Broadcast.scala 485:45]
+  assign io_out_a_valid = o_data_io_deq_valid & probe_done; // @[Broadcast.scala 496:34]
+  assign io_out_a_bits_opcode = acquire ? 3'h4 : opcode; // @[Broadcast.scala 497:31]
+  assign io_out_a_bits_param = acquire ? 3'h0 : param; // @[Broadcast.scala 498:31]
+  assign io_out_a_bits_size = size; // @[Broadcast.scala 499:25]
+  assign io_out_a_bits_source = {_io_out_a_bits_source_T,source}; // @[Cat.scala 31:58]
+  assign io_out_a_bits_address = address; // @[Broadcast.scala 501:25]
+  assign io_out_a_bits_mask = o_data_io_deq_bits_mask; // @[Broadcast.scala 502:25]
+  assign io_out_a_bits_data = o_data_io_deq_bits_data; // @[Broadcast.scala 503:25]
+  assign io_source = source; // @[Broadcast.scala 478:13]
+  assign io_line = address[30:6]; // @[Broadcast.scala 479:22]
+  assign io_idle = got_e & sent_d; // @[Broadcast.scala 435:23]
+  assign io_need_d = ~sent_d; // @[Broadcast.scala 477:16]
+  assign o_data_clock = clock;
+  assign o_data_reset = reset;
+  assign o_data_io_enq_valid = _io_in_a_ready_T_1 & io_in_a_valid; // @[Broadcast.scala 486:44]
+  assign o_data_io_enq_bits_mask = io_in_a_bits_mask; // @[Broadcast.scala 482:20 487:20]
+  assign o_data_io_enq_bits_data = io_in_a_bits_data; // @[Broadcast.scala 482:20 488:20]
+  assign o_data_io_deq_ready = io_out_a_ready & probe_done; // @[Broadcast.scala 495:34]
+  always @(posedge clock) begin
+    got_e <= reset | _GEN_12; // @[Broadcast.scala 423:{24,24}]
+    sent_d <= reset | _GEN_11; // @[Broadcast.scala 424:{24,24}]
+    shared <= io_probesack | _GEN_1; // @[Broadcast.scala 472:23 473:12]
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      opcode <= io_in_a_bits_opcode; // @[Broadcast.scala 442:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      param <= io_in_a_bits_param; // @[Broadcast.scala 443:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      size <= io_in_a_bits_size; // @[Broadcast.scala 444:13]
+    end
+    if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      source <= io_in_a_bits_source; // @[Broadcast.scala 445:13]
+    end
+    if (reset) begin // @[Broadcast.scala 432:24]
+      address <= 31'hc0; // @[Broadcast.scala 432:24]
+    end else if (_T & io_in_a_first) begin // @[Broadcast.scala 437:42]
+      address <= io_in_a_bits_address; // @[Broadcast.scala 448:13]
+    end
+    count <= _GEN_13[0];
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~idle & (_T_1 & ~reset)) begin
+          $fatal; // @[Broadcast.scala 438:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1 & ~reset & ~idle) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:438 assert (idle)\n"); // @[Broadcast.scala 438:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~sent_d) & (io_d_last & _T_3)) begin
+          $fatal; // @[Broadcast.scala 459:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_d_last & _T_3 & ~(~sent_d)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:459 assert (!sent_d)\n"); // @[Broadcast.scala 459:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~got_e) & (io_e_last & _T_3)) begin
+          $fatal; // @[Broadcast.scala 463:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_e_last & _T_3 & ~(~got_e)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:463 assert (!got_e)\n"); // @[Broadcast.scala 463:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(count > 1'h0) & (_T_13 & _T_3)) begin
+          $fatal; // @[Broadcast.scala 468:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_13 & _T_3 & ~(count > 1'h0)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Broadcast.scala:468 assert (count > 0.U)\n"); // @[Broadcast.scala 468:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  got_e = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sent_d = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  shared = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  opcode = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  param = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  size = _RAND_5[2:0];
+  _RAND_6 = {1{`RANDOM}};
+  source = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  address = _RAND_7[30:0];
+  _RAND_8 = {1{`RANDOM}};
+  count = _RAND_8[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBroadcast(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_b_ready,
+  output        auto_in_b_valid,
+  output [1:0]  auto_in_b_bits_param,
+  output [30:0] auto_in_b_bits_address,
+  output        auto_in_c_ready,
+  input         auto_in_c_valid,
+  input  [2:0]  auto_in_c_bits_opcode,
+  input  [2:0]  auto_in_c_bits_param,
+  input  [2:0]  auto_in_c_bits_size,
+  input  [1:0]  auto_in_c_bits_source,
+  input  [30:0] auto_in_c_bits_address,
+  input  [31:0] auto_in_c_bits_data,
+  input         auto_in_c_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [1:0]  auto_in_d_bits_sink,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_in_e_valid,
+  input  [1:0]  auto_in_e_bits_sink,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_b_bits_param; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_b_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_c_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_c_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_e_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_e_bits_sink; // @[Nodes.scala 24:25]
+  wire  BroadcastFilter_io_request_ready; // @[Broadcast.scala 99:26]
+  wire  BroadcastFilter_io_request_valid; // @[Broadcast.scala 99:26]
+  wire [1:0] BroadcastFilter_io_request_bits_mshr; // @[Broadcast.scala 99:26]
+  wire [30:0] BroadcastFilter_io_request_bits_address; // @[Broadcast.scala 99:26]
+  wire  BroadcastFilter_io_request_bits_allocOH; // @[Broadcast.scala 99:26]
+  wire  BroadcastFilter_io_request_bits_needT; // @[Broadcast.scala 99:26]
+  wire  BroadcastFilter_io_response_ready; // @[Broadcast.scala 99:26]
+  wire  BroadcastFilter_io_response_valid; // @[Broadcast.scala 99:26]
+  wire [1:0] BroadcastFilter_io_response_bits_mshr; // @[Broadcast.scala 99:26]
+  wire [30:0] BroadcastFilter_io_response_bits_address; // @[Broadcast.scala 99:26]
+  wire  BroadcastFilter_io_response_bits_allocOH; // @[Broadcast.scala 99:26]
+  wire  BroadcastFilter_io_response_bits_needT; // @[Broadcast.scala 99:26]
+  wire  TLBroadcastTracker_clock; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_reset; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_in_a_first; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_in_a_ready; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_in_a_valid; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_io_in_a_bits_opcode; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_io_in_a_bits_param; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_io_in_a_bits_size; // @[Broadcast.scala 107:15]
+  wire [1:0] TLBroadcastTracker_io_in_a_bits_source; // @[Broadcast.scala 107:15]
+  wire [30:0] TLBroadcastTracker_io_in_a_bits_address; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_io_in_a_bits_mask; // @[Broadcast.scala 107:15]
+  wire [31:0] TLBroadcastTracker_io_in_a_bits_data; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_out_a_ready; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_out_a_valid; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_io_out_a_bits_opcode; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_io_out_a_bits_param; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_io_out_a_bits_size; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_io_out_a_bits_source; // @[Broadcast.scala 107:15]
+  wire [30:0] TLBroadcastTracker_io_out_a_bits_address; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_io_out_a_bits_mask; // @[Broadcast.scala 107:15]
+  wire [31:0] TLBroadcastTracker_io_out_a_bits_data; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_probe_valid; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_probe_bits_count; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_probenack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_probedack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_probesack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_d_last; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_e_last; // @[Broadcast.scala 107:15]
+  wire [1:0] TLBroadcastTracker_io_source; // @[Broadcast.scala 107:15]
+  wire [24:0] TLBroadcastTracker_io_line; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_idle; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_io_need_d; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_clock; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_reset; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_in_a_first; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_in_a_ready; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_in_a_valid; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_1_io_in_a_bits_opcode; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_1_io_in_a_bits_param; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_1_io_in_a_bits_size; // @[Broadcast.scala 107:15]
+  wire [1:0] TLBroadcastTracker_1_io_in_a_bits_source; // @[Broadcast.scala 107:15]
+  wire [30:0] TLBroadcastTracker_1_io_in_a_bits_address; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_1_io_in_a_bits_mask; // @[Broadcast.scala 107:15]
+  wire [31:0] TLBroadcastTracker_1_io_in_a_bits_data; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_out_a_ready; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_out_a_valid; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_1_io_out_a_bits_opcode; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_1_io_out_a_bits_param; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_1_io_out_a_bits_size; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_1_io_out_a_bits_source; // @[Broadcast.scala 107:15]
+  wire [30:0] TLBroadcastTracker_1_io_out_a_bits_address; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_1_io_out_a_bits_mask; // @[Broadcast.scala 107:15]
+  wire [31:0] TLBroadcastTracker_1_io_out_a_bits_data; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_probe_valid; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_probe_bits_count; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_probenack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_probedack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_probesack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_d_last; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_e_last; // @[Broadcast.scala 107:15]
+  wire [1:0] TLBroadcastTracker_1_io_source; // @[Broadcast.scala 107:15]
+  wire [24:0] TLBroadcastTracker_1_io_line; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_idle; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_1_io_need_d; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_clock; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_reset; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_in_a_first; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_in_a_ready; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_in_a_valid; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_2_io_in_a_bits_opcode; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_2_io_in_a_bits_param; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_2_io_in_a_bits_size; // @[Broadcast.scala 107:15]
+  wire [1:0] TLBroadcastTracker_2_io_in_a_bits_source; // @[Broadcast.scala 107:15]
+  wire [30:0] TLBroadcastTracker_2_io_in_a_bits_address; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_2_io_in_a_bits_mask; // @[Broadcast.scala 107:15]
+  wire [31:0] TLBroadcastTracker_2_io_in_a_bits_data; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_out_a_ready; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_out_a_valid; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_2_io_out_a_bits_opcode; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_2_io_out_a_bits_param; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_2_io_out_a_bits_size; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_2_io_out_a_bits_source; // @[Broadcast.scala 107:15]
+  wire [30:0] TLBroadcastTracker_2_io_out_a_bits_address; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_2_io_out_a_bits_mask; // @[Broadcast.scala 107:15]
+  wire [31:0] TLBroadcastTracker_2_io_out_a_bits_data; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_probe_valid; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_probe_bits_count; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_probenack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_probedack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_probesack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_d_last; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_e_last; // @[Broadcast.scala 107:15]
+  wire [1:0] TLBroadcastTracker_2_io_source; // @[Broadcast.scala 107:15]
+  wire [24:0] TLBroadcastTracker_2_io_line; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_idle; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_2_io_need_d; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_clock; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_reset; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_in_a_first; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_in_a_ready; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_in_a_valid; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_3_io_in_a_bits_opcode; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_3_io_in_a_bits_param; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_3_io_in_a_bits_size; // @[Broadcast.scala 107:15]
+  wire [1:0] TLBroadcastTracker_3_io_in_a_bits_source; // @[Broadcast.scala 107:15]
+  wire [30:0] TLBroadcastTracker_3_io_in_a_bits_address; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_3_io_in_a_bits_mask; // @[Broadcast.scala 107:15]
+  wire [31:0] TLBroadcastTracker_3_io_in_a_bits_data; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_out_a_ready; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_out_a_valid; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_3_io_out_a_bits_opcode; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_3_io_out_a_bits_param; // @[Broadcast.scala 107:15]
+  wire [2:0] TLBroadcastTracker_3_io_out_a_bits_size; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_3_io_out_a_bits_source; // @[Broadcast.scala 107:15]
+  wire [30:0] TLBroadcastTracker_3_io_out_a_bits_address; // @[Broadcast.scala 107:15]
+  wire [3:0] TLBroadcastTracker_3_io_out_a_bits_mask; // @[Broadcast.scala 107:15]
+  wire [31:0] TLBroadcastTracker_3_io_out_a_bits_data; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_probe_valid; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_probe_bits_count; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_probenack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_probedack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_probesack; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_d_last; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_e_last; // @[Broadcast.scala 107:15]
+  wire [1:0] TLBroadcastTracker_3_io_source; // @[Broadcast.scala 107:15]
+  wire [24:0] TLBroadcastTracker_3_io_line; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_idle; // @[Broadcast.scala 107:15]
+  wire  TLBroadcastTracker_3_io_need_d; // @[Broadcast.scala 107:15]
+  wire [3:0] _T = 4'h1 << auto_in_e_bits_sink; // @[OneHot.scala 57:35]
+  wire  _T_14 = auto_out_d_bits_source[3:2] == 2'h1; // @[Broadcast.scala 119:27]
+  wire  opdata = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 4'h0; // @[Arbiter.scala 88:28]
+  wire  _T_56 = opdata | ~auto_out_d_bits_source[3]; // @[Broadcast.scala 140:34]
+  reg [3:0] counter; // @[Edges.scala 228:27]
+  wire [2:0] _T_38 = opdata ? 3'h5 : 3'h6; // @[Broadcast.scala 132:36]
+  wire [2:0] out_1_bits_opcode = auto_out_d_bits_source[3] ? _T_38 : auto_out_d_bits_opcode; // @[Broadcast.scala 130:21 131:24 132:30]
+  wire  beats1_opdata = out_1_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [12:0] _beats1_decode_T_1 = 13'h3f << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beats1_decode_T_3 = ~_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] beats1_decode = _beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire [3:0] beats1 = beats1_opdata ? beats1_decode : 4'h0; // @[Edges.scala 220:14]
+  wire  last = counter == 4'h1 | beats1 == 4'h0; // @[Edges.scala 231:37]
+  wire  _T_35 = ~_T_14; // @[Broadcast.scala 129:51]
+  wire  out_1_earlyValid = auto_out_d_valid & ~_T_14; // @[Broadcast.scala 129:48]
+  wire  _T_113 = auto_in_c_bits_opcode == 3'h6; // @[Broadcast.scala 161:45]
+  wire  out_earlyValid = auto_in_c_valid & _T_113; // @[Broadcast.scala 192:79]
+  wire [1:0] _readys_T = {out_1_earlyValid,out_earlyValid}; // @[Cat.scala 31:58]
+  wire [2:0] _readys_T_1 = {_readys_T, 1'h0}; // @[package.scala 244:48]
+  wire [1:0] _readys_T_3 = _readys_T | _readys_T_1[1:0]; // @[package.scala 244:43]
+  wire [2:0] _readys_T_5 = {_readys_T_3, 1'h0}; // @[Arbiter.scala 16:78]
+  wire [1:0] _readys_T_7 = ~_readys_T_5[1:0]; // @[Arbiter.scala 16:61]
+  wire  readys__1 = _readys_T_7[1]; // @[Arbiter.scala 95:86]
+  reg  state__1; // @[Arbiter.scala 116:26]
+  wire  allowed__1 = idle ? readys__1 : state__1; // @[Arbiter.scala 121:24]
+  wire  out_1_ready = auto_in_d_ready & allowed__1; // @[Arbiter.scala 123:31]
+  wire  _T_15 = out_1_ready & out_1_earlyValid; // @[Decoupled.scala 50:35]
+  wire [3:0] counter1 = counter - 4'h1; // @[Edges.scala 229:28]
+  wire  first = counter == 4'h0; // @[Edges.scala 230:25]
+  wire [1:0] out_1_bits_source = auto_out_d_bits_source[1:0]; // @[Broadcast.scala 121:26 130:21]
+  wire  _T_17 = TLBroadcastTracker_io_need_d & TLBroadcastTracker_io_source == out_1_bits_source; // @[Broadcast.scala 123:62]
+  wire  _T_19 = TLBroadcastTracker_1_io_need_d & TLBroadcastTracker_1_io_source == out_1_bits_source; // @[Broadcast.scala 123:62]
+  wire  _T_21 = TLBroadcastTracker_2_io_need_d & TLBroadcastTracker_2_io_source == out_1_bits_source; // @[Broadcast.scala 123:62]
+  wire  _T_23 = TLBroadcastTracker_3_io_need_d & TLBroadcastTracker_3_io_source == out_1_bits_source; // @[Broadcast.scala 123:62]
+  wire [3:0] _T_24 = {_T_23,_T_21,_T_19,_T_17}; // @[Broadcast.scala 123:102]
+  reg [3:0] r; // @[Reg.scala 16:16]
+  wire [3:0] _GEN_1 = first ? _T_24 : r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  _T_32 = ~reset; // @[Broadcast.scala 125:14]
+  wire  bundleOut_0_d_ready = out_1_ready | _T_14; // @[Broadcast.scala 128:50]
+  wire [1:0] _T_40 = auto_out_d_bits_source[2] ? 2'h0 : 2'h1; // @[Broadcast.scala 133:51]
+  wire [1:0] _T_41 = opdata ? _T_40 : 2'h0; // @[Broadcast.scala 133:36]
+  wire [1:0] out_1_bits_param = auto_out_d_bits_source[3] ? _T_41 : 2'h0; // @[Broadcast.scala 130:21 131:24 133:30]
+  wire [1:0] hi_1 = _GEN_1[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] lo_1 = _GEN_1[1:0]; // @[OneHot.scala 31:18]
+  wire  _T_42 = |hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _T_43 = hi_1 | lo_1; // @[OneHot.scala 32:28]
+  wire [1:0] out_1_bits_sink = {_T_42,_T_43[1]}; // @[Cat.scala 31:58]
+  wire  _T_65 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire  _T_110 = auto_in_c_bits_opcode == 3'h4; // @[Broadcast.scala 158:45]
+  wire  _T_111 = auto_in_c_bits_opcode == 3'h5; // @[Broadcast.scala 159:45]
+  wire  _T_112 = auto_in_c_bits_opcode == 3'h7; // @[Broadcast.scala 160:45]
+  wire  _T_115 = TLBroadcastTracker_io_line == auto_in_c_bits_address[30:6]; // @[Broadcast.scala 162:55]
+  wire  _T_117 = TLBroadcastTracker_1_io_line == auto_in_c_bits_address[30:6]; // @[Broadcast.scala 162:55]
+  wire  _T_119 = TLBroadcastTracker_2_io_line == auto_in_c_bits_address[30:6]; // @[Broadcast.scala 162:55]
+  wire  _T_121 = TLBroadcastTracker_3_io_line == auto_in_c_bits_address[30:6]; // @[Broadcast.scala 162:55]
+  wire [1:0] _T_122 = _T_115 ? TLBroadcastTracker_io_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_123 = _T_117 ? TLBroadcastTracker_1_io_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_124 = _T_119 ? TLBroadcastTracker_2_io_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_125 = _T_121 ? TLBroadcastTracker_3_io_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_126 = _T_122 | _T_123; // @[Mux.scala 27:73]
+  wire [1:0] _T_127 = _T_126 | _T_124; // @[Mux.scala 27:73]
+  wire [1:0] _T_128 = _T_127 | _T_125; // @[Mux.scala 27:73]
+  wire  readys__0 = _readys_T_7[0]; // @[Arbiter.scala 95:86]
+  reg  state__0; // @[Arbiter.scala 116:26]
+  wire  allowed__0 = idle ? readys__0 : state__0; // @[Arbiter.scala 121:24]
+  wire  out_ready = auto_in_d_ready & allowed__0; // @[Arbiter.scala 123:31]
+  reg [3:0] beatsLeft_1; // @[Arbiter.scala 87:30]
+  wire  idle_1 = beatsLeft_1 == 4'h0; // @[Arbiter.scala 88:28]
+  wire  out_7_earlyValid = TLBroadcastTracker_3_io_out_a_valid; // @[ReadyValidCancel.scala 68:19 69:20]
+  wire  out_6_earlyValid = TLBroadcastTracker_2_io_out_a_valid; // @[ReadyValidCancel.scala 68:19 69:20]
+  wire  out_5_earlyValid = TLBroadcastTracker_1_io_out_a_valid; // @[ReadyValidCancel.scala 68:19 69:20]
+  wire  out_4_earlyValid = TLBroadcastTracker_io_out_a_valid; // @[ReadyValidCancel.scala 68:19 69:20]
+  wire  out_3_earlyValid = auto_in_c_valid & (_T_111 | _T_112); // @[Broadcast.scala 197:35]
+  wire [4:0] _readys_T_10 = {out_7_earlyValid,out_6_earlyValid,out_5_earlyValid,out_4_earlyValid,out_3_earlyValid}; // @[Cat.scala 31:58]
+  wire [5:0] _readys_T_11 = {_readys_T_10, 1'h0}; // @[package.scala 244:48]
+  wire [4:0] _readys_T_13 = _readys_T_10 | _readys_T_11[4:0]; // @[package.scala 244:43]
+  wire [6:0] _readys_T_14 = {_readys_T_13, 2'h0}; // @[package.scala 244:48]
+  wire [4:0] _readys_T_16 = _readys_T_13 | _readys_T_14[4:0]; // @[package.scala 244:43]
+  wire [8:0] _readys_T_17 = {_readys_T_16, 4'h0}; // @[package.scala 244:48]
+  wire [4:0] _readys_T_19 = _readys_T_16 | _readys_T_17[4:0]; // @[package.scala 244:43]
+  wire [5:0] _readys_T_21 = {_readys_T_19, 1'h0}; // @[Arbiter.scala 16:78]
+  wire [4:0] _readys_T_23 = ~_readys_T_21[4:0]; // @[Arbiter.scala 16:61]
+  wire  readys_1_0 = _readys_T_23[0]; // @[Arbiter.scala 95:86]
+  reg  state_1_0; // @[Arbiter.scala 116:26]
+  wire  allowed_1_0 = idle_1 ? readys_1_0 : state_1_0; // @[Arbiter.scala 121:24]
+  wire  out_3_ready = auto_out_a_ready & allowed_1_0; // @[Arbiter.scala 123:31]
+  wire  _bundleIn_0_c_ready_T = _T_113 ? out_ready : out_3_ready; // @[Broadcast.scala 184:38]
+  wire  bundleIn_0_c_ready = _T_110 | _bundleIn_0_c_ready_T; // @[Broadcast.scala 184:32]
+  wire  _T_135 = bundleIn_0_c_ready & auto_in_c_valid; // @[Decoupled.scala 50:35]
+  wire  _T_136 = _T_110 | _T_111; // @[Broadcast.scala 170:52]
+  wire  _T_149 = auto_in_c_bits_param == 3'h4; // @[Broadcast.scala 178:27]
+  wire  _T_150 = auto_in_c_bits_param == 3'h0 | _T_149; // @[Broadcast.scala 177:50]
+  wire [12:0] _beats1_decode_T_5 = 13'h3f << auto_in_c_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beats1_decode_T_7 = ~_beats1_decode_T_5[5:0]; // @[package.scala 234:46]
+  wire [3:0] beats1_decode_1 = _beats1_decode_T_7[5:2]; // @[Edges.scala 219:59]
+  wire [1:0] _T_197 = _T_112 ? 2'h2 : 2'h1; // @[Broadcast.scala 195:25]
+  wire [1:0] _T_198 = _T_112 ? auto_in_c_bits_source : _T_128; // @[Broadcast.scala 196:25]
+  wire [3:0] a_source = {_T_197,_T_198}; // @[Cat.scala 31:58]
+  wire  a_mask_sizeOH_shiftAmount = auto_in_c_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _a_mask_sizeOH_T_1 = 2'h1 << a_mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] a_mask_sizeOH = _a_mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _a_mask_T = auto_in_c_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  a_mask_size = a_mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  a_mask_bit = auto_in_c_bits_address[1]; // @[Misc.scala 209:26]
+  wire  a_mask_nbit = ~a_mask_bit; // @[Misc.scala 210:20]
+  wire  a_mask_acc = _a_mask_T | a_mask_size & a_mask_nbit; // @[Misc.scala 214:29]
+  wire  a_mask_acc_1 = _a_mask_T | a_mask_size & a_mask_bit; // @[Misc.scala 214:29]
+  wire  a_mask_size_1 = a_mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  a_mask_bit_1 = auto_in_c_bits_address[0]; // @[Misc.scala 209:26]
+  wire  a_mask_nbit_1 = ~a_mask_bit_1; // @[Misc.scala 210:20]
+  wire  a_mask_eq_2 = a_mask_nbit & a_mask_nbit_1; // @[Misc.scala 213:27]
+  wire  a_mask_acc_2 = a_mask_acc | a_mask_size_1 & a_mask_eq_2; // @[Misc.scala 214:29]
+  wire  a_mask_eq_3 = a_mask_nbit & a_mask_bit_1; // @[Misc.scala 213:27]
+  wire  a_mask_acc_3 = a_mask_acc | a_mask_size_1 & a_mask_eq_3; // @[Misc.scala 214:29]
+  wire  a_mask_eq_4 = a_mask_bit & a_mask_nbit_1; // @[Misc.scala 213:27]
+  wire  a_mask_acc_4 = a_mask_acc_1 | a_mask_size_1 & a_mask_eq_4; // @[Misc.scala 214:29]
+  wire  a_mask_eq_5 = a_mask_bit & a_mask_bit_1; // @[Misc.scala 213:27]
+  wire  a_mask_acc_5 = a_mask_acc_1 | a_mask_size_1 & a_mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] a_mask = {a_mask_acc_5,a_mask_acc_4,a_mask_acc_3,a_mask_acc_2}; // @[Cat.scala 31:58]
+  wire  latch = idle & auto_in_d_ready; // @[Arbiter.scala 89:24]
+  wire  earlyWinner__0 = readys__0 & out_earlyValid; // @[Arbiter.scala 97:79]
+  wire  earlyWinner__1 = readys__1 & out_1_earlyValid; // @[Arbiter.scala 97:79]
+  wire  _prefixOR_T = earlyWinner__0 | earlyWinner__1; // @[Arbiter.scala 104:53]
+  wire  _T_217 = out_earlyValid | out_1_earlyValid; // @[Arbiter.scala 107:36]
+  wire  _T_218 = ~(out_earlyValid | out_1_earlyValid); // @[Arbiter.scala 107:15]
+  wire  muxStateEarly__0 = idle ? earlyWinner__0 : state__0; // @[Arbiter.scala 117:30]
+  wire  muxStateEarly__1 = idle ? earlyWinner__1 : state__1; // @[Arbiter.scala 117:30]
+  wire  _sink_ACancel_earlyValid_T_3 = state__0 & out_earlyValid | state__1 & out_1_earlyValid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_earlyValid = idle ? _T_217 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_in_d_ready & sink_ACancel_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [3:0] _GEN_14 = {{3'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [3:0] _beatsLeft_T_4 = beatsLeft - _GEN_14; // @[Arbiter.scala 113:52]
+  wire [1:0] _T_243 = muxStateEarly__0 ? auto_in_c_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_244 = muxStateEarly__1 ? out_1_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_246 = muxStateEarly__0 ? auto_in_c_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_247 = muxStateEarly__1 ? auto_out_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_252 = muxStateEarly__0 ? 3'h6 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_253 = muxStateEarly__1 ? out_1_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [12:0] _decode_T_13 = 13'h3f << TLBroadcastTracker_io_out_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] _decode_T_15 = ~_decode_T_13[5:0]; // @[package.scala 234:46]
+  wire [3:0] decode_3 = _decode_T_15[5:2]; // @[Edges.scala 219:59]
+  wire  opdata_4 = ~TLBroadcastTracker_io_out_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [3:0] _T_256 = opdata_4 ? decode_3 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _decode_T_17 = 13'h3f << TLBroadcastTracker_1_io_out_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] _decode_T_19 = ~_decode_T_17[5:0]; // @[package.scala 234:46]
+  wire [3:0] decode_4 = _decode_T_19[5:2]; // @[Edges.scala 219:59]
+  wire  opdata_5 = ~TLBroadcastTracker_1_io_out_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [3:0] _T_257 = opdata_5 ? decode_4 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _decode_T_21 = 13'h3f << TLBroadcastTracker_2_io_out_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] _decode_T_23 = ~_decode_T_21[5:0]; // @[package.scala 234:46]
+  wire [3:0] decode_5 = _decode_T_23[5:2]; // @[Edges.scala 219:59]
+  wire  opdata_6 = ~TLBroadcastTracker_2_io_out_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [3:0] _T_258 = opdata_6 ? decode_5 : 4'h0; // @[Edges.scala 220:14]
+  wire [12:0] _decode_T_25 = 13'h3f << TLBroadcastTracker_3_io_out_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] _decode_T_27 = ~_decode_T_25[5:0]; // @[package.scala 234:46]
+  wire [3:0] decode_6 = _decode_T_27[5:2]; // @[Edges.scala 219:59]
+  wire  opdata_7 = ~TLBroadcastTracker_3_io_out_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [3:0] _T_259 = opdata_7 ? decode_6 : 4'h0; // @[Edges.scala 220:14]
+  wire  latch_1 = idle_1 & auto_out_a_ready; // @[Arbiter.scala 89:24]
+  wire  readys_1_1 = _readys_T_23[1]; // @[Arbiter.scala 95:86]
+  wire  readys_1_2 = _readys_T_23[2]; // @[Arbiter.scala 95:86]
+  wire  readys_1_3 = _readys_T_23[3]; // @[Arbiter.scala 95:86]
+  wire  readys_1_4 = _readys_T_23[4]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_1_0 = readys_1_0 & out_3_earlyValid; // @[Arbiter.scala 97:79]
+  wire  earlyWinner_1_1 = readys_1_1 & out_4_earlyValid; // @[Arbiter.scala 97:79]
+  wire  earlyWinner_1_2 = readys_1_2 & out_5_earlyValid; // @[Arbiter.scala 97:79]
+  wire  earlyWinner_1_3 = readys_1_3 & out_6_earlyValid; // @[Arbiter.scala 97:79]
+  wire  earlyWinner_1_4 = readys_1_4 & out_7_earlyValid; // @[Arbiter.scala 97:79]
+  wire  prefixOR_2 = earlyWinner_1_0 | earlyWinner_1_1; // @[Arbiter.scala 104:53]
+  wire  prefixOR_3 = prefixOR_2 | earlyWinner_1_2; // @[Arbiter.scala 104:53]
+  wire  prefixOR_4 = prefixOR_3 | earlyWinner_1_3; // @[Arbiter.scala 104:53]
+  wire  _prefixOR_T_1 = prefixOR_4 | earlyWinner_1_4; // @[Arbiter.scala 104:53]
+  wire  _T_285 = out_3_earlyValid | out_4_earlyValid | out_5_earlyValid | out_6_earlyValid | out_7_earlyValid; // @[Arbiter.scala 107:36]
+  wire  _T_286 = ~(out_3_earlyValid | out_4_earlyValid | out_5_earlyValid | out_6_earlyValid | out_7_earlyValid); // @[Arbiter.scala 107:15]
+  wire [3:0] maskedBeats_0_1 = earlyWinner_1_0 ? beats1_decode_1 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_1_1 = earlyWinner_1_1 ? _T_256 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_2 = earlyWinner_1_2 ? _T_257 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_3 = earlyWinner_1_3 ? _T_258 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] maskedBeats_4 = earlyWinner_1_4 ? _T_259 : 4'h0; // @[Arbiter.scala 111:73]
+  wire [3:0] _initBeats_T = maskedBeats_0_1 | maskedBeats_1_1; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_1 = _initBeats_T | maskedBeats_2; // @[Arbiter.scala 112:44]
+  wire [3:0] _initBeats_T_2 = _initBeats_T_1 | maskedBeats_3; // @[Arbiter.scala 112:44]
+  wire [3:0] initBeats_1 = _initBeats_T_2 | maskedBeats_4; // @[Arbiter.scala 112:44]
+  wire  muxStateEarly_1_0 = idle_1 ? earlyWinner_1_0 : state_1_0; // @[Arbiter.scala 117:30]
+  reg  state_1_1; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1_1 = idle_1 ? earlyWinner_1_1 : state_1_1; // @[Arbiter.scala 117:30]
+  reg  state_1_2; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1_2 = idle_1 ? earlyWinner_1_2 : state_1_2; // @[Arbiter.scala 117:30]
+  reg  state_1_3; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1_3 = idle_1 ? earlyWinner_1_3 : state_1_3; // @[Arbiter.scala 117:30]
+  reg  state_1_4; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1_4 = idle_1 ? earlyWinner_1_4 : state_1_4; // @[Arbiter.scala 117:30]
+  wire  _sink_ACancel_earlyValid_T_17 = state_1_0 & out_3_earlyValid | state_1_1 & out_4_earlyValid | state_1_2 &
+    out_5_earlyValid | state_1_3 & out_6_earlyValid | state_1_4 & out_7_earlyValid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_1_earlyValid = idle_1 ? _T_285 : _sink_ACancel_earlyValid_T_17; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_8 = auto_out_a_ready & sink_ACancel_1_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [3:0] _GEN_15 = {{3'd0}, _beatsLeft_T_8}; // @[Arbiter.scala 113:52]
+  wire [3:0] _beatsLeft_T_10 = beatsLeft_1 - _GEN_15; // @[Arbiter.scala 113:52]
+  wire  allowed_1_1 = idle_1 ? readys_1_1 : state_1_1; // @[Arbiter.scala 121:24]
+  wire  allowed_1_2 = idle_1 ? readys_1_2 : state_1_2; // @[Arbiter.scala 121:24]
+  wire  allowed_1_3 = idle_1 ? readys_1_3 : state_1_3; // @[Arbiter.scala 121:24]
+  wire  allowed_1_4 = idle_1 ? readys_1_4 : state_1_4; // @[Arbiter.scala 121:24]
+  wire [31:0] _T_317 = muxStateEarly_1_0 ? auto_in_c_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] out_4_bits_data = TLBroadcastTracker_io_out_a_bits_data; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [31:0] _T_318 = muxStateEarly_1_1 ? out_4_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] out_5_bits_data = TLBroadcastTracker_1_io_out_a_bits_data; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [31:0] _T_319 = muxStateEarly_1_2 ? out_5_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] out_6_bits_data = TLBroadcastTracker_2_io_out_a_bits_data; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [31:0] _T_320 = muxStateEarly_1_3 ? out_6_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] out_7_bits_data = TLBroadcastTracker_3_io_out_a_bits_data; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [31:0] _T_321 = muxStateEarly_1_4 ? out_7_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_322 = _T_317 | _T_318; // @[Mux.scala 27:73]
+  wire [31:0] _T_323 = _T_322 | _T_319; // @[Mux.scala 27:73]
+  wire [31:0] _T_324 = _T_323 | _T_320; // @[Mux.scala 27:73]
+  wire [3:0] _T_326 = muxStateEarly_1_0 ? a_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] out_4_bits_mask = TLBroadcastTracker_io_out_a_bits_mask; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [3:0] _T_327 = muxStateEarly_1_1 ? out_4_bits_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] out_5_bits_mask = TLBroadcastTracker_1_io_out_a_bits_mask; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [3:0] _T_328 = muxStateEarly_1_2 ? out_5_bits_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] out_6_bits_mask = TLBroadcastTracker_2_io_out_a_bits_mask; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [3:0] _T_329 = muxStateEarly_1_3 ? out_6_bits_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] out_7_bits_mask = TLBroadcastTracker_3_io_out_a_bits_mask; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [3:0] _T_330 = muxStateEarly_1_4 ? out_7_bits_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_331 = _T_326 | _T_327; // @[Mux.scala 27:73]
+  wire [3:0] _T_332 = _T_331 | _T_328; // @[Mux.scala 27:73]
+  wire [3:0] _T_333 = _T_332 | _T_329; // @[Mux.scala 27:73]
+  wire [30:0] _T_335 = muxStateEarly_1_0 ? auto_in_c_bits_address : 31'h0; // @[Mux.scala 27:73]
+  wire [30:0] out_4_bits_address = TLBroadcastTracker_io_out_a_bits_address; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [30:0] _T_336 = muxStateEarly_1_1 ? out_4_bits_address : 31'h0; // @[Mux.scala 27:73]
+  wire [30:0] out_5_bits_address = TLBroadcastTracker_1_io_out_a_bits_address; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [30:0] _T_337 = muxStateEarly_1_2 ? out_5_bits_address : 31'h0; // @[Mux.scala 27:73]
+  wire [30:0] out_6_bits_address = TLBroadcastTracker_2_io_out_a_bits_address; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [30:0] _T_338 = muxStateEarly_1_3 ? out_6_bits_address : 31'h0; // @[Mux.scala 27:73]
+  wire [30:0] out_7_bits_address = TLBroadcastTracker_3_io_out_a_bits_address; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [30:0] _T_339 = muxStateEarly_1_4 ? out_7_bits_address : 31'h0; // @[Mux.scala 27:73]
+  wire [30:0] _T_340 = _T_335 | _T_336; // @[Mux.scala 27:73]
+  wire [30:0] _T_341 = _T_340 | _T_337; // @[Mux.scala 27:73]
+  wire [30:0] _T_342 = _T_341 | _T_338; // @[Mux.scala 27:73]
+  wire [3:0] _T_344 = muxStateEarly_1_0 ? a_source : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] out_4_bits_source = TLBroadcastTracker_io_out_a_bits_source; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [3:0] _T_345 = muxStateEarly_1_1 ? out_4_bits_source : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] out_5_bits_source = TLBroadcastTracker_1_io_out_a_bits_source; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [3:0] _T_346 = muxStateEarly_1_2 ? out_5_bits_source : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] out_6_bits_source = TLBroadcastTracker_2_io_out_a_bits_source; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [3:0] _T_347 = muxStateEarly_1_3 ? out_6_bits_source : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] out_7_bits_source = TLBroadcastTracker_3_io_out_a_bits_source; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [3:0] _T_348 = muxStateEarly_1_4 ? out_7_bits_source : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_349 = _T_344 | _T_345; // @[Mux.scala 27:73]
+  wire [3:0] _T_350 = _T_349 | _T_346; // @[Mux.scala 27:73]
+  wire [3:0] _T_351 = _T_350 | _T_347; // @[Mux.scala 27:73]
+  wire [2:0] _T_353 = muxStateEarly_1_0 ? auto_in_c_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_4_bits_size = TLBroadcastTracker_io_out_a_bits_size; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_354 = muxStateEarly_1_1 ? out_4_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_5_bits_size = TLBroadcastTracker_1_io_out_a_bits_size; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_355 = muxStateEarly_1_2 ? out_5_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_6_bits_size = TLBroadcastTracker_2_io_out_a_bits_size; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_356 = muxStateEarly_1_3 ? out_6_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_7_bits_size = TLBroadcastTracker_3_io_out_a_bits_size; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_357 = muxStateEarly_1_4 ? out_7_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_358 = _T_353 | _T_354; // @[Mux.scala 27:73]
+  wire [2:0] _T_359 = _T_358 | _T_355; // @[Mux.scala 27:73]
+  wire [2:0] _T_360 = _T_359 | _T_356; // @[Mux.scala 27:73]
+  wire [2:0] out_4_bits_param = TLBroadcastTracker_io_out_a_bits_param; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_363 = muxStateEarly_1_1 ? out_4_bits_param : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_5_bits_param = TLBroadcastTracker_1_io_out_a_bits_param; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_364 = muxStateEarly_1_2 ? out_5_bits_param : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_6_bits_param = TLBroadcastTracker_2_io_out_a_bits_param; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_365 = muxStateEarly_1_3 ? out_6_bits_param : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_7_bits_param = TLBroadcastTracker_3_io_out_a_bits_param; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_366 = muxStateEarly_1_4 ? out_7_bits_param : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_368 = _T_363 | _T_364; // @[Mux.scala 27:73]
+  wire [2:0] _T_369 = _T_368 | _T_365; // @[Mux.scala 27:73]
+  wire [2:0] out_4_bits_opcode = TLBroadcastTracker_io_out_a_bits_opcode; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_372 = muxStateEarly_1_1 ? out_4_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_5_bits_opcode = TLBroadcastTracker_1_io_out_a_bits_opcode; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_373 = muxStateEarly_1_2 ? out_5_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_6_bits_opcode = TLBroadcastTracker_2_io_out_a_bits_opcode; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_374 = muxStateEarly_1_3 ? out_6_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] out_7_bits_opcode = TLBroadcastTracker_3_io_out_a_bits_opcode; // @[ReadyValidCancel.scala 68:19 71:14]
+  wire [2:0] _T_375 = muxStateEarly_1_4 ? out_7_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_377 = _T_372 | _T_373; // @[Mux.scala 27:73]
+  wire [2:0] _T_378 = _T_377 | _T_374; // @[Mux.scala 27:73]
+  reg  REG; // @[Broadcast.scala 215:31]
+  reg [24:0] REG_1; // @[Broadcast.scala 216:27]
+  reg [1:0] REG_2; // @[Broadcast.scala 217:28]
+  wire [1:0] _T_381 = {REG, 1'h0}; // @[Broadcast.scala 218:58]
+  wire [1:0] _T_382 = ~_T_381; // @[Broadcast.scala 218:37]
+  wire [1:0] _GEN_16 = {{1'd0}, REG}; // @[Broadcast.scala 218:35]
+  wire [1:0] _T_383 = _GEN_16 & _T_382; // @[Broadcast.scala 218:35]
+  wire  bundleIn_0_b_valid = |REG; // @[Broadcast.scala 219:38]
+  wire  _T_386 = auto_in_b_ready & bundleIn_0_b_valid; // @[Decoupled.scala 50:35]
+  wire [1:0] _T_387 = ~_T_383; // @[Broadcast.scala 227:55]
+  wire [1:0] _T_388 = _GEN_16 & _T_387; // @[Broadcast.scala 227:53]
+  wire [1:0] _GEN_5 = _T_386 ? _T_388 : {{1'd0}, REG}; // @[Broadcast.scala 227:26 215:31 227:39]
+  reg [3:0] counter_2; // @[Edges.scala 228:27]
+  wire  first_2 = counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire  _bundleIn_0_a_ready_T_1 = ~first_2 | BroadcastFilter_io_request_ready; // @[Broadcast.scala 243:31]
+  wire [3:0] _T_401 = {TLBroadcastTracker_3_io_line == auto_in_a_bits_address[30:6],TLBroadcastTracker_2_io_line ==
+    auto_in_a_bits_address[30:6],TLBroadcastTracker_1_io_line == auto_in_a_bits_address[30:6],TLBroadcastTracker_io_line
+     == auto_in_a_bits_address[30:6]}; // @[Broadcast.scala 236:100]
+  wire  _T_402 = |_T_401; // @[Broadcast.scala 237:43]
+  wire  _WIRE_30_3 = TLBroadcastTracker_3_io_idle; // @[Broadcast.scala 234:{33,33}]
+  wire  _WIRE_30_2 = TLBroadcastTracker_2_io_idle; // @[Broadcast.scala 234:{33,33}]
+  wire  _WIRE_30_1 = TLBroadcastTracker_1_io_idle; // @[Broadcast.scala 234:{33,33}]
+  wire  _WIRE_30_0 = TLBroadcastTracker_io_idle; // @[Broadcast.scala 234:{33,33}]
+  wire [3:0] _T_391 = {_WIRE_30_3,_WIRE_30_2,_WIRE_30_1,_WIRE_30_0}; // @[Broadcast.scala 234:64]
+  wire [4:0] _T_403 = {_T_391, 1'h0}; // @[package.scala 244:48]
+  wire [3:0] _T_405 = _T_391 | _T_403[3:0]; // @[package.scala 244:43]
+  wire [5:0] _T_406 = {_T_405, 2'h0}; // @[package.scala 244:48]
+  wire [3:0] _T_408 = _T_405 | _T_406[3:0]; // @[package.scala 244:43]
+  wire [4:0] _T_410 = {_T_408, 1'h0}; // @[Broadcast.scala 238:64]
+  wire [4:0] _T_411 = ~_T_410; // @[Broadcast.scala 238:41]
+  wire [4:0] _GEN_18 = {{1'd0}, _T_391}; // @[Broadcast.scala 238:39]
+  wire [4:0] _T_412 = _GEN_18 & _T_411; // @[Broadcast.scala 238:39]
+  wire [4:0] _T_413 = _T_402 ? {{1'd0}, _T_401} : _T_412; // @[Broadcast.scala 239:30]
+  wire  _WIRE_32_3 = TLBroadcastTracker_3_io_in_a_ready; // @[Broadcast.scala 240:{34,34}]
+  wire  _WIRE_32_2 = TLBroadcastTracker_2_io_in_a_ready; // @[Broadcast.scala 240:{34,34}]
+  wire  _WIRE_32_1 = TLBroadcastTracker_1_io_in_a_ready; // @[Broadcast.scala 240:{34,34}]
+  wire  _WIRE_32_0 = TLBroadcastTracker_io_in_a_ready; // @[Broadcast.scala 240:{34,34}]
+  wire [3:0] _T_414 = {_WIRE_32_3,_WIRE_32_2,_WIRE_32_1,_WIRE_32_0}; // @[Broadcast.scala 240:63]
+  wire [4:0] _GEN_19 = {{1'd0}, _T_414}; // @[Broadcast.scala 241:41]
+  wire [4:0] _T_415 = _T_413 & _GEN_19; // @[Broadcast.scala 241:41]
+  wire  _T_416 = |_T_415; // @[Broadcast.scala 241:61]
+  wire  bundleIn_0_a_ready = (~first_2 | BroadcastFilter_io_request_ready) & _T_416; // @[Broadcast.scala 243:59]
+  wire  _T_390 = bundleIn_0_a_ready & auto_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _beats1_decode_T_9 = 13'h3f << auto_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] _beats1_decode_T_11 = ~_beats1_decode_T_9[5:0]; // @[package.scala 234:46]
+  wire [3:0] beats1_decode_2 = _beats1_decode_T_11[5:2]; // @[Edges.scala 219:59]
+  wire  beats1_opdata_2 = ~auto_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [3:0] counter1_2 = counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire [3:0] lo_5 = _T_413[3:0]; // @[OneHot.scala 31:18]
+  wire  _T_440 = |_T_413[4]; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_20 = {{3'd0}, _T_413[4]}; // @[OneHot.scala 32:28]
+  wire [3:0] _T_441 = _GEN_20 | lo_5; // @[OneHot.scala 32:28]
+  wire [1:0] hi_6 = _T_441[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] lo_6 = _T_441[1:0]; // @[OneHot.scala 31:18]
+  wire  _T_442 = |hi_6; // @[OneHot.scala 32:14]
+  wire [1:0] _T_443 = hi_6 | lo_6; // @[OneHot.scala 32:28]
+  wire [2:0] _T_446 = {_T_440,_T_442,_T_443[1]}; // @[Cat.scala 31:58]
+  wire  acq_needT = 3'h2 == auto_in_a_bits_param | 3'h1 == auto_in_a_bits_param; // @[Mux.scala 81:58]
+  wire  _T_458 = 3'h4 == auto_in_a_bits_opcode ? 1'h0 : 1'h1; // @[Mux.scala 81:58]
+  wire  _T_460 = 3'h5 == auto_in_a_bits_opcode ? 3'h1 == auto_in_a_bits_param : _T_458; // @[Mux.scala 81:58]
+  wire  _T_462 = 3'h6 == auto_in_a_bits_opcode ? acq_needT : _T_460; // @[Mux.scala 81:58]
+  wire  _T_468 = ~BroadcastFilter_io_response_bits_allocOH; // @[Broadcast.scala 257:54]
+  wire  _T_472 = BroadcastFilter_io_response_ready & BroadcastFilter_io_response_valid; // @[Decoupled.scala 50:35]
+  wire [1:0] _GEN_7 = _T_472 ? {{1'd0}, _T_468} : _GEN_5; // @[Broadcast.scala 260:40 261:21]
+  wire [1:0] shiftAmount = BroadcastFilter_io_response_bits_mshr; // @[OneHot.scala 63:49]
+  wire [3:0] _T_477 = 4'h1 << shiftAmount; // @[OneHot.scala 64:12]
+  TLMonitor_41 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_b_ready(monitor_io_in_b_ready),
+    .io_in_b_valid(monitor_io_in_b_valid),
+    .io_in_b_bits_param(monitor_io_in_b_bits_param),
+    .io_in_b_bits_address(monitor_io_in_b_bits_address),
+    .io_in_c_ready(monitor_io_in_c_ready),
+    .io_in_c_valid(monitor_io_in_c_valid),
+    .io_in_c_bits_opcode(monitor_io_in_c_bits_opcode),
+    .io_in_c_bits_param(monitor_io_in_c_bits_param),
+    .io_in_c_bits_size(monitor_io_in_c_bits_size),
+    .io_in_c_bits_source(monitor_io_in_c_bits_source),
+    .io_in_c_bits_address(monitor_io_in_c_bits_address),
+    .io_in_c_bits_corrupt(monitor_io_in_c_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_e_valid(monitor_io_in_e_valid),
+    .io_in_e_bits_sink(monitor_io_in_e_bits_sink)
+  );
+  BroadcastFilter BroadcastFilter ( // @[Broadcast.scala 99:26]
+    .io_request_ready(BroadcastFilter_io_request_ready),
+    .io_request_valid(BroadcastFilter_io_request_valid),
+    .io_request_bits_mshr(BroadcastFilter_io_request_bits_mshr),
+    .io_request_bits_address(BroadcastFilter_io_request_bits_address),
+    .io_request_bits_allocOH(BroadcastFilter_io_request_bits_allocOH),
+    .io_request_bits_needT(BroadcastFilter_io_request_bits_needT),
+    .io_response_ready(BroadcastFilter_io_response_ready),
+    .io_response_valid(BroadcastFilter_io_response_valid),
+    .io_response_bits_mshr(BroadcastFilter_io_response_bits_mshr),
+    .io_response_bits_address(BroadcastFilter_io_response_bits_address),
+    .io_response_bits_allocOH(BroadcastFilter_io_response_bits_allocOH),
+    .io_response_bits_needT(BroadcastFilter_io_response_bits_needT)
+  );
+  TLBroadcastTracker TLBroadcastTracker ( // @[Broadcast.scala 107:15]
+    .clock(TLBroadcastTracker_clock),
+    .reset(TLBroadcastTracker_reset),
+    .io_in_a_first(TLBroadcastTracker_io_in_a_first),
+    .io_in_a_ready(TLBroadcastTracker_io_in_a_ready),
+    .io_in_a_valid(TLBroadcastTracker_io_in_a_valid),
+    .io_in_a_bits_opcode(TLBroadcastTracker_io_in_a_bits_opcode),
+    .io_in_a_bits_param(TLBroadcastTracker_io_in_a_bits_param),
+    .io_in_a_bits_size(TLBroadcastTracker_io_in_a_bits_size),
+    .io_in_a_bits_source(TLBroadcastTracker_io_in_a_bits_source),
+    .io_in_a_bits_address(TLBroadcastTracker_io_in_a_bits_address),
+    .io_in_a_bits_mask(TLBroadcastTracker_io_in_a_bits_mask),
+    .io_in_a_bits_data(TLBroadcastTracker_io_in_a_bits_data),
+    .io_out_a_ready(TLBroadcastTracker_io_out_a_ready),
+    .io_out_a_valid(TLBroadcastTracker_io_out_a_valid),
+    .io_out_a_bits_opcode(TLBroadcastTracker_io_out_a_bits_opcode),
+    .io_out_a_bits_param(TLBroadcastTracker_io_out_a_bits_param),
+    .io_out_a_bits_size(TLBroadcastTracker_io_out_a_bits_size),
+    .io_out_a_bits_source(TLBroadcastTracker_io_out_a_bits_source),
+    .io_out_a_bits_address(TLBroadcastTracker_io_out_a_bits_address),
+    .io_out_a_bits_mask(TLBroadcastTracker_io_out_a_bits_mask),
+    .io_out_a_bits_data(TLBroadcastTracker_io_out_a_bits_data),
+    .io_probe_valid(TLBroadcastTracker_io_probe_valid),
+    .io_probe_bits_count(TLBroadcastTracker_io_probe_bits_count),
+    .io_probenack(TLBroadcastTracker_io_probenack),
+    .io_probedack(TLBroadcastTracker_io_probedack),
+    .io_probesack(TLBroadcastTracker_io_probesack),
+    .io_d_last(TLBroadcastTracker_io_d_last),
+    .io_e_last(TLBroadcastTracker_io_e_last),
+    .io_source(TLBroadcastTracker_io_source),
+    .io_line(TLBroadcastTracker_io_line),
+    .io_idle(TLBroadcastTracker_io_idle),
+    .io_need_d(TLBroadcastTracker_io_need_d)
+  );
+  TLBroadcastTracker_1 TLBroadcastTracker_1 ( // @[Broadcast.scala 107:15]
+    .clock(TLBroadcastTracker_1_clock),
+    .reset(TLBroadcastTracker_1_reset),
+    .io_in_a_first(TLBroadcastTracker_1_io_in_a_first),
+    .io_in_a_ready(TLBroadcastTracker_1_io_in_a_ready),
+    .io_in_a_valid(TLBroadcastTracker_1_io_in_a_valid),
+    .io_in_a_bits_opcode(TLBroadcastTracker_1_io_in_a_bits_opcode),
+    .io_in_a_bits_param(TLBroadcastTracker_1_io_in_a_bits_param),
+    .io_in_a_bits_size(TLBroadcastTracker_1_io_in_a_bits_size),
+    .io_in_a_bits_source(TLBroadcastTracker_1_io_in_a_bits_source),
+    .io_in_a_bits_address(TLBroadcastTracker_1_io_in_a_bits_address),
+    .io_in_a_bits_mask(TLBroadcastTracker_1_io_in_a_bits_mask),
+    .io_in_a_bits_data(TLBroadcastTracker_1_io_in_a_bits_data),
+    .io_out_a_ready(TLBroadcastTracker_1_io_out_a_ready),
+    .io_out_a_valid(TLBroadcastTracker_1_io_out_a_valid),
+    .io_out_a_bits_opcode(TLBroadcastTracker_1_io_out_a_bits_opcode),
+    .io_out_a_bits_param(TLBroadcastTracker_1_io_out_a_bits_param),
+    .io_out_a_bits_size(TLBroadcastTracker_1_io_out_a_bits_size),
+    .io_out_a_bits_source(TLBroadcastTracker_1_io_out_a_bits_source),
+    .io_out_a_bits_address(TLBroadcastTracker_1_io_out_a_bits_address),
+    .io_out_a_bits_mask(TLBroadcastTracker_1_io_out_a_bits_mask),
+    .io_out_a_bits_data(TLBroadcastTracker_1_io_out_a_bits_data),
+    .io_probe_valid(TLBroadcastTracker_1_io_probe_valid),
+    .io_probe_bits_count(TLBroadcastTracker_1_io_probe_bits_count),
+    .io_probenack(TLBroadcastTracker_1_io_probenack),
+    .io_probedack(TLBroadcastTracker_1_io_probedack),
+    .io_probesack(TLBroadcastTracker_1_io_probesack),
+    .io_d_last(TLBroadcastTracker_1_io_d_last),
+    .io_e_last(TLBroadcastTracker_1_io_e_last),
+    .io_source(TLBroadcastTracker_1_io_source),
+    .io_line(TLBroadcastTracker_1_io_line),
+    .io_idle(TLBroadcastTracker_1_io_idle),
+    .io_need_d(TLBroadcastTracker_1_io_need_d)
+  );
+  TLBroadcastTracker_2 TLBroadcastTracker_2 ( // @[Broadcast.scala 107:15]
+    .clock(TLBroadcastTracker_2_clock),
+    .reset(TLBroadcastTracker_2_reset),
+    .io_in_a_first(TLBroadcastTracker_2_io_in_a_first),
+    .io_in_a_ready(TLBroadcastTracker_2_io_in_a_ready),
+    .io_in_a_valid(TLBroadcastTracker_2_io_in_a_valid),
+    .io_in_a_bits_opcode(TLBroadcastTracker_2_io_in_a_bits_opcode),
+    .io_in_a_bits_param(TLBroadcastTracker_2_io_in_a_bits_param),
+    .io_in_a_bits_size(TLBroadcastTracker_2_io_in_a_bits_size),
+    .io_in_a_bits_source(TLBroadcastTracker_2_io_in_a_bits_source),
+    .io_in_a_bits_address(TLBroadcastTracker_2_io_in_a_bits_address),
+    .io_in_a_bits_mask(TLBroadcastTracker_2_io_in_a_bits_mask),
+    .io_in_a_bits_data(TLBroadcastTracker_2_io_in_a_bits_data),
+    .io_out_a_ready(TLBroadcastTracker_2_io_out_a_ready),
+    .io_out_a_valid(TLBroadcastTracker_2_io_out_a_valid),
+    .io_out_a_bits_opcode(TLBroadcastTracker_2_io_out_a_bits_opcode),
+    .io_out_a_bits_param(TLBroadcastTracker_2_io_out_a_bits_param),
+    .io_out_a_bits_size(TLBroadcastTracker_2_io_out_a_bits_size),
+    .io_out_a_bits_source(TLBroadcastTracker_2_io_out_a_bits_source),
+    .io_out_a_bits_address(TLBroadcastTracker_2_io_out_a_bits_address),
+    .io_out_a_bits_mask(TLBroadcastTracker_2_io_out_a_bits_mask),
+    .io_out_a_bits_data(TLBroadcastTracker_2_io_out_a_bits_data),
+    .io_probe_valid(TLBroadcastTracker_2_io_probe_valid),
+    .io_probe_bits_count(TLBroadcastTracker_2_io_probe_bits_count),
+    .io_probenack(TLBroadcastTracker_2_io_probenack),
+    .io_probedack(TLBroadcastTracker_2_io_probedack),
+    .io_probesack(TLBroadcastTracker_2_io_probesack),
+    .io_d_last(TLBroadcastTracker_2_io_d_last),
+    .io_e_last(TLBroadcastTracker_2_io_e_last),
+    .io_source(TLBroadcastTracker_2_io_source),
+    .io_line(TLBroadcastTracker_2_io_line),
+    .io_idle(TLBroadcastTracker_2_io_idle),
+    .io_need_d(TLBroadcastTracker_2_io_need_d)
+  );
+  TLBroadcastTracker_3 TLBroadcastTracker_3 ( // @[Broadcast.scala 107:15]
+    .clock(TLBroadcastTracker_3_clock),
+    .reset(TLBroadcastTracker_3_reset),
+    .io_in_a_first(TLBroadcastTracker_3_io_in_a_first),
+    .io_in_a_ready(TLBroadcastTracker_3_io_in_a_ready),
+    .io_in_a_valid(TLBroadcastTracker_3_io_in_a_valid),
+    .io_in_a_bits_opcode(TLBroadcastTracker_3_io_in_a_bits_opcode),
+    .io_in_a_bits_param(TLBroadcastTracker_3_io_in_a_bits_param),
+    .io_in_a_bits_size(TLBroadcastTracker_3_io_in_a_bits_size),
+    .io_in_a_bits_source(TLBroadcastTracker_3_io_in_a_bits_source),
+    .io_in_a_bits_address(TLBroadcastTracker_3_io_in_a_bits_address),
+    .io_in_a_bits_mask(TLBroadcastTracker_3_io_in_a_bits_mask),
+    .io_in_a_bits_data(TLBroadcastTracker_3_io_in_a_bits_data),
+    .io_out_a_ready(TLBroadcastTracker_3_io_out_a_ready),
+    .io_out_a_valid(TLBroadcastTracker_3_io_out_a_valid),
+    .io_out_a_bits_opcode(TLBroadcastTracker_3_io_out_a_bits_opcode),
+    .io_out_a_bits_param(TLBroadcastTracker_3_io_out_a_bits_param),
+    .io_out_a_bits_size(TLBroadcastTracker_3_io_out_a_bits_size),
+    .io_out_a_bits_source(TLBroadcastTracker_3_io_out_a_bits_source),
+    .io_out_a_bits_address(TLBroadcastTracker_3_io_out_a_bits_address),
+    .io_out_a_bits_mask(TLBroadcastTracker_3_io_out_a_bits_mask),
+    .io_out_a_bits_data(TLBroadcastTracker_3_io_out_a_bits_data),
+    .io_probe_valid(TLBroadcastTracker_3_io_probe_valid),
+    .io_probe_bits_count(TLBroadcastTracker_3_io_probe_bits_count),
+    .io_probenack(TLBroadcastTracker_3_io_probenack),
+    .io_probedack(TLBroadcastTracker_3_io_probedack),
+    .io_probesack(TLBroadcastTracker_3_io_probesack),
+    .io_d_last(TLBroadcastTracker_3_io_d_last),
+    .io_e_last(TLBroadcastTracker_3_io_e_last),
+    .io_source(TLBroadcastTracker_3_io_source),
+    .io_line(TLBroadcastTracker_3_io_line),
+    .io_idle(TLBroadcastTracker_3_io_idle),
+    .io_need_d(TLBroadcastTracker_3_io_need_d)
+  );
+  assign auto_in_a_ready = (~first_2 | BroadcastFilter_io_request_ready) & _T_416; // @[Broadcast.scala 243:59]
+  assign auto_in_b_valid = |REG; // @[Broadcast.scala 219:38]
+  assign auto_in_b_bits_param = REG_2; // @[Edges.scala 600:17 602:15]
+  assign auto_in_b_bits_address = {REG_1, 6'h0}; // @[Broadcast.scala 225:46]
+  assign auto_in_c_ready = _T_110 | _bundleIn_0_c_ready_T; // @[Broadcast.scala 184:32]
+  assign auto_in_d_valid = idle ? _T_217 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_in_d_bits_opcode = _T_252 | _T_253; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_param = muxStateEarly__1 ? out_1_bits_param : 2'h0; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_size = _T_246 | _T_247; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_source = _T_243 | _T_244; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_sink = muxStateEarly__1 ? out_1_bits_sink : 2'h0; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_data = muxStateEarly__1 ? auto_out_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  assign auto_out_a_valid = idle_1 ? _T_285 : _sink_ACancel_earlyValid_T_17; // @[Arbiter.scala 125:29]
+  assign auto_out_a_bits_opcode = _T_378 | _T_375; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_param = _T_369 | _T_366; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_size = _T_360 | _T_357; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_source = _T_351 | _T_348; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_address = _T_342 | _T_339; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_mask = _T_333 | _T_330; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_data = _T_324 | _T_321; // @[Mux.scala 27:73]
+  assign auto_out_d_ready = out_1_ready | _T_14; // @[Broadcast.scala 128:50]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = (~first_2 | BroadcastFilter_io_request_ready) & _T_416; // @[Broadcast.scala 243:59]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_valid = |REG; // @[Broadcast.scala 219:38]
+  assign monitor_io_in_b_bits_param = REG_2; // @[Edges.scala 600:17 602:15]
+  assign monitor_io_in_b_bits_address = {REG_1, 6'h0}; // @[Broadcast.scala 225:46]
+  assign monitor_io_in_c_ready = _T_110 | _bundleIn_0_c_ready_T; // @[Broadcast.scala 184:32]
+  assign monitor_io_in_c_valid = auto_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_source = auto_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_corrupt = auto_in_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = idle ? _T_217 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign monitor_io_in_d_bits_opcode = _T_252 | _T_253; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_param = muxStateEarly__1 ? out_1_bits_param : 2'h0; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_size = _T_246 | _T_247; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_source = _T_243 | _T_244; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_sink = muxStateEarly__1 ? out_1_bits_sink : 2'h0; // @[Mux.scala 27:73]
+  assign monitor_io_in_e_valid = auto_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_e_bits_sink = auto_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign BroadcastFilter_io_request_valid = auto_in_a_valid & first_2 & _T_416; // @[Broadcast.scala 250:56]
+  assign BroadcastFilter_io_request_bits_mshr = _T_446[1:0]; // @[Broadcast.scala 251:38]
+  assign BroadcastFilter_io_request_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign BroadcastFilter_io_request_bits_allocOH = auto_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  assign BroadcastFilter_io_request_bits_needT = 3'h7 == auto_in_a_bits_opcode ? acq_needT : _T_462; // @[Mux.scala 81:58]
+  assign BroadcastFilter_io_response_ready = ~bundleIn_0_b_valid; // @[Broadcast.scala 259:35]
+  assign TLBroadcastTracker_clock = clock;
+  assign TLBroadcastTracker_reset = reset;
+  assign TLBroadcastTracker_io_in_a_first = counter_2 == 4'h0; // @[Edges.scala 230:25]
+  assign TLBroadcastTracker_io_in_a_valid = auto_in_a_valid & _T_413[0] & _bundleIn_0_a_ready_T_1; // @[Broadcast.scala 245:46]
+  assign TLBroadcastTracker_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_io_in_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_io_out_a_ready = auto_out_a_ready & allowed_1_1; // @[Arbiter.scala 123:31]
+  assign TLBroadcastTracker_io_probe_valid = _T_472 & _T_477[0]; // @[Broadcast.scala 272:58]
+  assign TLBroadcastTracker_io_probe_bits_count = ~BroadcastFilter_io_response_bits_allocOH; // @[Broadcast.scala 257:54]
+  assign TLBroadcastTracker_io_probenack = _T_135 & _T_110 & _T_115; // @[Broadcast.scala 175:56]
+  assign TLBroadcastTracker_io_probedack = _GEN_1[0] & _T_65 & _T_14; // @[Broadcast.scala 143:53]
+  assign TLBroadcastTracker_io_probesack = _T_135 & _T_115 & _T_136 & _T_150; // @[Broadcast.scala 176:86]
+  assign TLBroadcastTracker_io_d_last = _GEN_1[0] & _T_15 & _T_56 & last; // @[Broadcast.scala 142:67]
+  assign TLBroadcastTracker_io_e_last = _T[0] & auto_in_e_valid; // @[Broadcast.scala 113:34]
+  assign TLBroadcastTracker_1_clock = clock;
+  assign TLBroadcastTracker_1_reset = reset;
+  assign TLBroadcastTracker_1_io_in_a_first = counter_2 == 4'h0; // @[Edges.scala 230:25]
+  assign TLBroadcastTracker_1_io_in_a_valid = auto_in_a_valid & _T_413[1] & _bundleIn_0_a_ready_T_1; // @[Broadcast.scala 245:46]
+  assign TLBroadcastTracker_1_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_1_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_1_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_1_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_1_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_1_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_1_io_in_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_1_io_out_a_ready = auto_out_a_ready & allowed_1_2; // @[Arbiter.scala 123:31]
+  assign TLBroadcastTracker_1_io_probe_valid = _T_472 & _T_477[1]; // @[Broadcast.scala 272:58]
+  assign TLBroadcastTracker_1_io_probe_bits_count = ~BroadcastFilter_io_response_bits_allocOH; // @[Broadcast.scala 257:54]
+  assign TLBroadcastTracker_1_io_probenack = _T_135 & _T_110 & _T_117; // @[Broadcast.scala 175:56]
+  assign TLBroadcastTracker_1_io_probedack = _GEN_1[1] & _T_65 & _T_14; // @[Broadcast.scala 143:53]
+  assign TLBroadcastTracker_1_io_probesack = _T_135 & _T_117 & _T_136 & _T_150; // @[Broadcast.scala 176:86]
+  assign TLBroadcastTracker_1_io_d_last = _GEN_1[1] & _T_15 & _T_56 & last; // @[Broadcast.scala 142:67]
+  assign TLBroadcastTracker_1_io_e_last = _T[1] & auto_in_e_valid; // @[Broadcast.scala 113:34]
+  assign TLBroadcastTracker_2_clock = clock;
+  assign TLBroadcastTracker_2_reset = reset;
+  assign TLBroadcastTracker_2_io_in_a_first = counter_2 == 4'h0; // @[Edges.scala 230:25]
+  assign TLBroadcastTracker_2_io_in_a_valid = auto_in_a_valid & _T_413[2] & _bundleIn_0_a_ready_T_1; // @[Broadcast.scala 245:46]
+  assign TLBroadcastTracker_2_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_2_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_2_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_2_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_2_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_2_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_2_io_in_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_2_io_out_a_ready = auto_out_a_ready & allowed_1_3; // @[Arbiter.scala 123:31]
+  assign TLBroadcastTracker_2_io_probe_valid = _T_472 & _T_477[2]; // @[Broadcast.scala 272:58]
+  assign TLBroadcastTracker_2_io_probe_bits_count = ~BroadcastFilter_io_response_bits_allocOH; // @[Broadcast.scala 257:54]
+  assign TLBroadcastTracker_2_io_probenack = _T_135 & _T_110 & _T_119; // @[Broadcast.scala 175:56]
+  assign TLBroadcastTracker_2_io_probedack = _GEN_1[2] & _T_65 & _T_14; // @[Broadcast.scala 143:53]
+  assign TLBroadcastTracker_2_io_probesack = _T_135 & _T_119 & _T_136 & _T_150; // @[Broadcast.scala 176:86]
+  assign TLBroadcastTracker_2_io_d_last = _GEN_1[2] & _T_15 & _T_56 & last; // @[Broadcast.scala 142:67]
+  assign TLBroadcastTracker_2_io_e_last = _T[2] & auto_in_e_valid; // @[Broadcast.scala 113:34]
+  assign TLBroadcastTracker_3_clock = clock;
+  assign TLBroadcastTracker_3_reset = reset;
+  assign TLBroadcastTracker_3_io_in_a_first = counter_2 == 4'h0; // @[Edges.scala 230:25]
+  assign TLBroadcastTracker_3_io_in_a_valid = auto_in_a_valid & _T_413[3] & _bundleIn_0_a_ready_T_1; // @[Broadcast.scala 245:46]
+  assign TLBroadcastTracker_3_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_3_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_3_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_3_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_3_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_3_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_3_io_in_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign TLBroadcastTracker_3_io_out_a_ready = auto_out_a_ready & allowed_1_4; // @[Arbiter.scala 123:31]
+  assign TLBroadcastTracker_3_io_probe_valid = _T_472 & _T_477[3]; // @[Broadcast.scala 272:58]
+  assign TLBroadcastTracker_3_io_probe_bits_count = ~BroadcastFilter_io_response_bits_allocOH; // @[Broadcast.scala 257:54]
+  assign TLBroadcastTracker_3_io_probenack = _T_135 & _T_110 & _T_121; // @[Broadcast.scala 175:56]
+  assign TLBroadcastTracker_3_io_probedack = _GEN_1[3] & _T_65 & _T_14; // @[Broadcast.scala 143:53]
+  assign TLBroadcastTracker_3_io_probesack = _T_135 & _T_121 & _T_136 & _T_150; // @[Broadcast.scala 176:86]
+  assign TLBroadcastTracker_3_io_d_last = _GEN_1[3] & _T_15 & _T_56 & last; // @[Broadcast.scala 142:67]
+  assign TLBroadcastTracker_3_io_e_last = _T[3] & auto_in_e_valid; // @[Broadcast.scala 113:34]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 4'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      if (earlyWinner__1) begin // @[Arbiter.scala 111:73]
+        if (beats1_opdata) begin // @[Edges.scala 220:14]
+          beatsLeft <= beats1_decode;
+        end else begin
+          beatsLeft <= 4'h0;
+        end
+      end else begin
+        beatsLeft <= 4'h0;
+      end
+    end else begin
+      beatsLeft <= _beatsLeft_T_4;
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_T_15) begin // @[Edges.scala 234:17]
+      if (first) begin // @[Edges.scala 235:21]
+        if (beats1_opdata) begin // @[Edges.scala 220:14]
+          counter <= beats1_decode;
+        end else begin
+          counter <= 4'h0;
+        end
+      end else begin
+        counter <= counter1;
+      end
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state__1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state__1 <= earlyWinner__1;
+    end
+    if (first) begin // @[Reg.scala 17:18]
+      r <= _T_24; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state__0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state__0 <= earlyWinner__0;
+    end
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft_1 <= 4'h0; // @[Arbiter.scala 87:30]
+    end else if (latch_1) begin // @[Arbiter.scala 113:23]
+      beatsLeft_1 <= initBeats_1;
+    end else begin
+      beatsLeft_1 <= _beatsLeft_T_10;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1_0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle_1) begin // @[Arbiter.scala 117:30]
+      state_1_0 <= earlyWinner_1_0;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle_1) begin // @[Arbiter.scala 117:30]
+      state_1_1 <= earlyWinner_1_1;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1_2 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle_1) begin // @[Arbiter.scala 117:30]
+      state_1_2 <= earlyWinner_1_2;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1_3 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle_1) begin // @[Arbiter.scala 117:30]
+      state_1_3 <= earlyWinner_1_3;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1_4 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle_1) begin // @[Arbiter.scala 117:30]
+      state_1_4 <= earlyWinner_1_4;
+    end
+    if (reset) begin // @[Broadcast.scala 215:31]
+      REG <= 1'h0; // @[Broadcast.scala 215:31]
+    end else begin
+      REG <= _GEN_7[0];
+    end
+    if (_T_472) begin // @[Broadcast.scala 260:40]
+      REG_1 <= BroadcastFilter_io_response_bits_address[30:6]; // @[Broadcast.scala 262:21]
+    end
+    if (_T_472) begin // @[Broadcast.scala 260:40]
+      if (BroadcastFilter_io_response_bits_needT) begin // @[Broadcast.scala 263:27]
+        REG_2 <= 2'h2;
+      end else begin
+        REG_2 <= 2'h1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_T_390) begin // @[Edges.scala 234:17]
+      if (first_2) begin // @[Edges.scala 235:21]
+        if (beats1_opdata_2) begin // @[Edges.scala 220:14]
+          counter_2 <= beats1_decode_2;
+        end else begin
+          counter_2 <= 4'h0;
+        end
+      end else begin
+        counter_2 <= counter1_2;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~auto_out_d_valid | _T_35 | auto_out_d_bits_opcode == 3'h0) & ~reset) begin
+          $fatal; // @[Broadcast.scala 125:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~auto_out_d_valid | _T_35 | auto_out_d_bits_opcode == 3'h0)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Broadcast.scala:125 assert (!out.d.valid || !d_drop || out.d.bits.opcode === TLMessages.AccessAck)\n"
+            ); // @[Broadcast.scala 125:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~out_1_earlyValid | (|_GEN_1 | out_1_bits_opcode == 3'h6)) & _T_32) begin
+          $fatal; // @[Broadcast.scala 137:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_32 & ~(~out_1_earlyValid | (|_GEN_1 | out_1_bits_opcode == 3'h6))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Broadcast.scala:137 assert (!d_normal.valid || (d_trackerOH.orR() || d_normal.bits.opcode === TLMessages.ReleaseAck))\n"
+            ); // @[Broadcast.scala 137:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~earlyWinner__0 | ~earlyWinner__1) & _T_32) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_32 & ~(~earlyWinner__0 | ~earlyWinner__1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(out_earlyValid | out_1_earlyValid) | _prefixOR_T) & _T_32) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_32 & ~(~(out_earlyValid | out_1_earlyValid) | _prefixOR_T)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_218 | _T_217) & _T_32) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_32 & ~(_T_218 | _T_217)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~((~earlyWinner_1_0 | ~earlyWinner_1_1) & (~prefixOR_2 | ~earlyWinner_1_2) & (~prefixOR_3 | ~earlyWinner_1_3
+          ) & (~prefixOR_4 | ~earlyWinner_1_4)) & _T_32) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_32 & ~((~earlyWinner_1_0 | ~earlyWinner_1_1) & (~prefixOR_2 | ~earlyWinner_1_2) & (~prefixOR_3 | ~
+          earlyWinner_1_3) & (~prefixOR_4 | ~earlyWinner_1_4))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(out_3_earlyValid | out_4_earlyValid | out_5_earlyValid | out_6_earlyValid | out_7_earlyValid) |
+          _prefixOR_T_1) & _T_32) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_32 & ~(~(out_3_earlyValid | out_4_earlyValid | out_5_earlyValid | out_6_earlyValid | out_7_earlyValid) |
+          _prefixOR_T_1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_286 | _T_285) & _T_32) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_32 & ~(_T_286 | _T_285)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  beatsLeft = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  counter = _RAND_1[3:0];
+  _RAND_2 = {1{`RANDOM}};
+  state__1 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  r = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  state__0 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  beatsLeft_1 = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  state_1_0 = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  state_1_1 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  state_1_2 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  state_1_3 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  state_1_4 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  REG = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  REG_1 = _RAND_12[24:0];
+  _RAND_13 = {1{`RANDOM}};
+  REG_2 = _RAND_13[1:0];
+  _RAND_14 = {1{`RANDOM}};
+  counter_2 = _RAND_14[3:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLJbar(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_b_ready,
+  output        auto_in_b_valid,
+  output [1:0]  auto_in_b_bits_param,
+  output [30:0] auto_in_b_bits_address,
+  output        auto_in_c_ready,
+  input         auto_in_c_valid,
+  input  [2:0]  auto_in_c_bits_opcode,
+  input  [2:0]  auto_in_c_bits_param,
+  input  [2:0]  auto_in_c_bits_size,
+  input  [1:0]  auto_in_c_bits_source,
+  input  [30:0] auto_in_c_bits_address,
+  input  [31:0] auto_in_c_bits_data,
+  input         auto_in_c_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [1:0]  auto_in_d_bits_sink,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_in_e_valid,
+  input  [1:0]  auto_in_e_bits_sink,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_b_ready,
+  input         auto_out_b_valid,
+  input  [1:0]  auto_out_b_bits_param,
+  input  [30:0] auto_out_b_bits_address,
+  input         auto_out_c_ready,
+  output        auto_out_c_valid,
+  output [2:0]  auto_out_c_bits_opcode,
+  output [2:0]  auto_out_c_bits_param,
+  output [2:0]  auto_out_c_bits_size,
+  output [1:0]  auto_out_c_bits_source,
+  output [30:0] auto_out_c_bits_address,
+  output [31:0] auto_out_c_bits_data,
+  output        auto_out_c_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [1:0]  auto_out_d_bits_sink,
+  input  [31:0] auto_out_d_bits_data,
+  output        auto_out_e_valid,
+  output [1:0]  auto_out_e_bits_sink
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_valid = auto_out_b_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_in_b_bits_param = auto_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_address = auto_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_c_ready = auto_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Xbar.scala 228:69]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Xbar.scala 323:53]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_valid = auto_in_c_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_source = auto_in_c_bits_source; // @[Xbar.scala 259:55]
+  assign auto_out_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_data = auto_in_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_corrupt = auto_in_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_e_valid = auto_in_e_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_e_bits_sink = auto_in_e_bits_sink; // @[Xbar.scala 228:69]
+endmodule
+module TLMonitor_42(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [2:0]  io_in_a_bits_size,
+  input  [3:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [2:0]  io_in_d_bits_size,
+  input  [3:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [63:0] _RAND_11;
+  reg [63:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [63:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [12:0] _is_aligned_mask_T_1 = 13'h3f << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [5:0] is_aligned_mask = ~_is_aligned_mask_T_1[5:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_71 = {{25'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [30:0] _T_33 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_36 = $signed(_T_34) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_270 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_271 = io_in_a_bits_mask & _T_270; // @[Monitor.scala 127:31]
+  wire  _T_272 = _T_271 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_306 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_314 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_344 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_352 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_382 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_394 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_398 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_402 = io_in_d_bits_size >= 3'h2; // @[Monitor.scala 312:27]
+  wire  _T_418 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_446 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] a_first_beats1_decode = is_aligned_mask[5:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1 = a_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [2:0] size; // @[Monitor.scala 386:22]
+  reg [3:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_540 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_541 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_545 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_549 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_553 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_557 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [12:0] _d_first_beats1_decode_T_1 = 13'h3f << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [5:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[5:0]; // @[package.scala 234:46]
+  wire [3:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [3:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1 = d_first_counter - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 4'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [3:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_564 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_565 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_573 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_577 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [15:0] inflight; // @[Monitor.scala 611:27]
+  reg [63:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [63:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [3:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] a_first_counter1_1 = a_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  reg [3:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_1 = d_first_counter_1 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 4'h0; // @[Edges.scala 230:25]
+  wire [5:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [6:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [63:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [63:0] _GEN_73 = {{48'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [63:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[63:1]}; // @[Monitor.scala 634:152]
+  wire [63:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [63:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [63:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[63:1]}; // @[Monitor.scala 638:144]
+  wire  _T_591 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [15:0] _a_set_wo_ready_T = 16'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] a_set_wo_ready = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_594 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [3:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 4'h1; // @[Monitor.scala 655:59]
+  wire [5:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [6:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [130:0] _GEN_1 = {{127'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [130:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 655:28]
+  wire [130:0] _GEN_2 = {{127'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [130:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [15:0] _T_596 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_598 = ~_T_596[0]; // @[Monitor.scala 658:17]
+  wire [15:0] a_set = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 16'h0; // @[Monitor.scala 652:72 653:28]
+  wire [130:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 656:28]
+  wire [130:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 131'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_602 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_604 = ~_T_398; // @[Monitor.scala 671:74]
+  wire  _T_605 = io_in_d_valid & d_first_1 & ~_T_398; // @[Monitor.scala 671:71]
+  wire [15:0] _d_clr_wo_ready_T = 16'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [15:0] d_clr_wo_ready = io_in_d_valid & d_first_1 & ~_T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 671:90 672:22]
+  wire [142:0] _GEN_3 = {{127'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [142:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [15:0] d_clr = _d_first_T & d_first_1 & _T_604 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 675:91 676:21]
+  wire [142:0] _GEN_23 = _d_first_T & d_first_1 & _T_604 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_591 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [15:0] _T_615 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_617 = _T_615[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_622 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_623 = io_in_d_bits_opcode == _GEN_32 | _T_622; // @[Monitor.scala 685:77]
+  wire  _T_627 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_634 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_635 = io_in_d_bits_opcode == _GEN_48 | _T_634; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_639 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_649 = _T_602 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_604; // @[Monitor.scala 694:116]
+  wire  _T_651 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_658 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [15:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [15:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [15:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [63:0] a_opcodes_set = _GEN_19[63:0];
+  wire [63:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [63:0] d_opcodes_clr = _GEN_23[63:0];
+  wire [63:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [63:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [63:0] a_sizes_set = _GEN_20[63:0];
+  wire [63:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [63:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_667 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [15:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [63:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [3:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [3:0] d_first_counter1_2 = d_first_counter_2 - 4'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 4'h0; // @[Edges.scala 230:25]
+  wire [63:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [63:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [63:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[63:1]}; // @[Monitor.scala 747:146]
+  wire  _T_693 = io_in_d_valid & d_first_2 & _T_398; // @[Monitor.scala 779:71]
+  wire [15:0] d_clr_1 = _d_first_T & d_first_2 & _T_398 ? _d_clr_wo_ready_T : 16'h0; // @[Monitor.scala 783:90 784:21]
+  wire [142:0] _GEN_68 = _d_first_T & d_first_2 & _T_398 ? _d_opcodes_clr_T_5 : 143'h0; // @[Monitor.scala 783:90 785:21]
+  wire [15:0] _T_701 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_711 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [15:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [15:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [63:0] d_opcodes_clr_1 = _GEN_68[63:0];
+  wire [63:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [63:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_736 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 4'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 4'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 16'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 64'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 64'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 16'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 64'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 4'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 4'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_272 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_272) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_306 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_306) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_344 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_344) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_382 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_382) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_352 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_352 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_394 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_394) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_398 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_398 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_418 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_418 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_446 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_541 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_541) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_545 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_545) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_549 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_549) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_557 & (_T_540 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_540 & ~reset & ~_T_557) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_565 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_565) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_577 & (_T_564 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_564 & _T_2 & ~_T_577) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_T_594 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_594 & ~reset & ~_T_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_617 & (_T_605 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & _T_2 & ~_T_617) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_623 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_623) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_627 & (_T_605 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & same_cycle_resp & _T_2 & ~_T_627) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_635 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_635) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_639 & (_T_605 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_605 & ~same_cycle_resp & _T_2 & ~_T_639) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_651 & (_T_649 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_649 & _T_2 & ~_T_651) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_658 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_658) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_667 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_667) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_701[0] & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_701[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_711 & (_T_693 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_693 & _T_2 & ~_T_711) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_736 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_736) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BankedL2Params.scala:65:103)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[15:0];
+  _RAND_11 = {2{`RANDOM}};
+  inflight_opcodes = _RAND_11[63:0];
+  _RAND_12 = {2{`RANDOM}};
+  inflight_sizes = _RAND_12[63:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[15:0];
+  _RAND_17 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[63:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[3:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module BankBinder(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  TLMonitor_42 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module TLWidthWidget_7(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [3:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [3:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [3:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [3:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLInterconnectCoupler_27(
+  output        auto_widget_in_a_ready,
+  input         auto_widget_in_a_valid,
+  input  [2:0]  auto_widget_in_a_bits_opcode,
+  input  [2:0]  auto_widget_in_a_bits_param,
+  input  [2:0]  auto_widget_in_a_bits_size,
+  input  [3:0]  auto_widget_in_a_bits_source,
+  input  [30:0] auto_widget_in_a_bits_address,
+  input  [3:0]  auto_widget_in_a_bits_mask,
+  input  [31:0] auto_widget_in_a_bits_data,
+  input         auto_widget_in_d_ready,
+  output        auto_widget_in_d_valid,
+  output [2:0]  auto_widget_in_d_bits_opcode,
+  output [2:0]  auto_widget_in_d_bits_size,
+  output [3:0]  auto_widget_in_d_bits_source,
+  output [31:0] auto_widget_in_d_bits_data,
+  input         auto_bus_xing_out_a_ready,
+  output        auto_bus_xing_out_a_valid,
+  output [2:0]  auto_bus_xing_out_a_bits_opcode,
+  output [2:0]  auto_bus_xing_out_a_bits_param,
+  output [2:0]  auto_bus_xing_out_a_bits_size,
+  output [3:0]  auto_bus_xing_out_a_bits_source,
+  output [30:0] auto_bus_xing_out_a_bits_address,
+  output [3:0]  auto_bus_xing_out_a_bits_mask,
+  output [31:0] auto_bus_xing_out_a_bits_data,
+  output        auto_bus_xing_out_d_ready,
+  input         auto_bus_xing_out_d_valid,
+  input  [2:0]  auto_bus_xing_out_d_bits_opcode,
+  input  [2:0]  auto_bus_xing_out_d_bits_size,
+  input  [3:0]  auto_bus_xing_out_d_bits_source,
+  input  [31:0] auto_bus_xing_out_d_bits_data
+);
+  wire  widget_auto_in_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_in_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_a_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_param; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [30:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_a_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_ready; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_valid; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_opcode; // @[WidthWidget.scala 219:28]
+  wire [2:0] widget_auto_out_d_bits_size; // @[WidthWidget.scala 219:28]
+  wire [3:0] widget_auto_out_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  TLWidthWidget_7 widget ( // @[WidthWidget.scala 219:28]
+    .auto_in_a_ready(widget_auto_in_a_ready),
+    .auto_in_a_valid(widget_auto_in_a_valid),
+    .auto_in_a_bits_opcode(widget_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(widget_auto_in_a_bits_param),
+    .auto_in_a_bits_size(widget_auto_in_a_bits_size),
+    .auto_in_a_bits_source(widget_auto_in_a_bits_source),
+    .auto_in_a_bits_address(widget_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(widget_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(widget_auto_in_a_bits_data),
+    .auto_in_d_ready(widget_auto_in_d_ready),
+    .auto_in_d_valid(widget_auto_in_d_valid),
+    .auto_in_d_bits_opcode(widget_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(widget_auto_in_d_bits_size),
+    .auto_in_d_bits_source(widget_auto_in_d_bits_source),
+    .auto_in_d_bits_data(widget_auto_in_d_bits_data),
+    .auto_out_a_ready(widget_auto_out_a_ready),
+    .auto_out_a_valid(widget_auto_out_a_valid),
+    .auto_out_a_bits_opcode(widget_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(widget_auto_out_a_bits_param),
+    .auto_out_a_bits_size(widget_auto_out_a_bits_size),
+    .auto_out_a_bits_source(widget_auto_out_a_bits_source),
+    .auto_out_a_bits_address(widget_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(widget_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(widget_auto_out_a_bits_data),
+    .auto_out_d_ready(widget_auto_out_d_ready),
+    .auto_out_d_valid(widget_auto_out_d_valid),
+    .auto_out_d_bits_opcode(widget_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(widget_auto_out_d_bits_size),
+    .auto_out_d_bits_source(widget_auto_out_d_bits_source),
+    .auto_out_d_bits_data(widget_auto_out_d_bits_data)
+  );
+  assign auto_widget_in_a_ready = widget_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_valid = widget_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_opcode = widget_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_size = widget_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_source = widget_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_widget_in_d_bits_data = widget_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_bus_xing_out_a_valid = widget_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_opcode = widget_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_param = widget_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_size = widget_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_source = widget_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_address = widget_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_mask = widget_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_data = widget_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_d_ready = widget_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign widget_auto_in_a_valid = auto_widget_in_a_valid; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_opcode = auto_widget_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_param = auto_widget_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_size = auto_widget_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_source = auto_widget_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_address = auto_widget_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_mask = auto_widget_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_data = auto_widget_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign widget_auto_in_d_ready = auto_widget_in_d_ready; // @[LazyModule.scala 309:16]
+  assign widget_auto_out_a_ready = auto_bus_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_valid = auto_bus_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_opcode = auto_bus_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_size = auto_bus_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_source = auto_bus_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_data = auto_bus_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module CoherenceManagerWrapper(
+  input         auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_ready,
+  output        auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_param,
+  output [2:0]  auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_size,
+  output [3:0]  auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_source,
+  output [30:0] auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_address,
+  output [3:0]  auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_mask,
+  output [31:0] auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_data,
+  output        auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_ready,
+  input         auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_opcode,
+  input  [2:0]  auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_size,
+  input  [3:0]  auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_source,
+  input  [31:0] auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_data,
+  output        auto_coherent_jbar_in_a_ready,
+  input         auto_coherent_jbar_in_a_valid,
+  input  [2:0]  auto_coherent_jbar_in_a_bits_opcode,
+  input  [2:0]  auto_coherent_jbar_in_a_bits_param,
+  input  [2:0]  auto_coherent_jbar_in_a_bits_size,
+  input  [1:0]  auto_coherent_jbar_in_a_bits_source,
+  input  [30:0] auto_coherent_jbar_in_a_bits_address,
+  input  [3:0]  auto_coherent_jbar_in_a_bits_mask,
+  input  [31:0] auto_coherent_jbar_in_a_bits_data,
+  input         auto_coherent_jbar_in_a_bits_corrupt,
+  input         auto_coherent_jbar_in_b_ready,
+  output        auto_coherent_jbar_in_b_valid,
+  output [1:0]  auto_coherent_jbar_in_b_bits_param,
+  output [30:0] auto_coherent_jbar_in_b_bits_address,
+  output        auto_coherent_jbar_in_c_ready,
+  input         auto_coherent_jbar_in_c_valid,
+  input  [2:0]  auto_coherent_jbar_in_c_bits_opcode,
+  input  [2:0]  auto_coherent_jbar_in_c_bits_param,
+  input  [2:0]  auto_coherent_jbar_in_c_bits_size,
+  input  [1:0]  auto_coherent_jbar_in_c_bits_source,
+  input  [30:0] auto_coherent_jbar_in_c_bits_address,
+  input  [31:0] auto_coherent_jbar_in_c_bits_data,
+  input         auto_coherent_jbar_in_c_bits_corrupt,
+  input         auto_coherent_jbar_in_d_ready,
+  output        auto_coherent_jbar_in_d_valid,
+  output [2:0]  auto_coherent_jbar_in_d_bits_opcode,
+  output [1:0]  auto_coherent_jbar_in_d_bits_param,
+  output [2:0]  auto_coherent_jbar_in_d_bits_size,
+  output [1:0]  auto_coherent_jbar_in_d_bits_source,
+  output [1:0]  auto_coherent_jbar_in_d_bits_sink,
+  output [31:0] auto_coherent_jbar_in_d_bits_data,
+  input         auto_coherent_jbar_in_e_valid,
+  input  [1:0]  auto_coherent_jbar_in_e_bits_sink,
+  input         auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_clock,
+  input         auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_reset,
+  input         auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_clock,
+  input         auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_reset,
+  output        auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_clock,
+  output        auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_reset
+);
+  wire  subsystem_l2_clock_groups_auto_in_member_subsystem_l2_1_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_l2_clock_groups_auto_in_member_subsystem_l2_1_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_l2_clock_groups_auto_in_member_subsystem_l2_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_l2_clock_groups_auto_in_member_subsystem_l2_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_l2_clock_groups_auto_out_1_member_subsystem_mbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_l2_clock_groups_auto_out_1_member_subsystem_mbus_0_reset; // @[BusWrapper.scala 40:48]
+  wire  subsystem_l2_clock_groups_auto_out_0_member_subsystem_l2_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_l2_clock_groups_auto_out_0_member_subsystem_l2_0_reset; // @[BusWrapper.scala 40:48]
+  wire  clockGroup_auto_in_member_subsystem_l2_0_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_in_member_subsystem_l2_0_reset; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_clock; // @[BusWrapper.scala 41:38]
+  wire  clockGroup_auto_out_reset; // @[BusWrapper.scala 41:38]
+  wire  fixedClockNode_auto_in_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_in_reset; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_clock; // @[ClockGroup.scala 106:107]
+  wire  fixedClockNode_auto_out_reset; // @[ClockGroup.scala 106:107]
+  wire  broadcast_1_clock; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_reset; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_a_ready; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_a_valid; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_in_a_bits_opcode; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_in_a_bits_param; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_in_a_bits_size; // @[BankedL2Params.scala 81:24]
+  wire [1:0] broadcast_1_auto_in_a_bits_source; // @[BankedL2Params.scala 81:24]
+  wire [30:0] broadcast_1_auto_in_a_bits_address; // @[BankedL2Params.scala 81:24]
+  wire [3:0] broadcast_1_auto_in_a_bits_mask; // @[BankedL2Params.scala 81:24]
+  wire [31:0] broadcast_1_auto_in_a_bits_data; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_a_bits_corrupt; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_b_ready; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_b_valid; // @[BankedL2Params.scala 81:24]
+  wire [1:0] broadcast_1_auto_in_b_bits_param; // @[BankedL2Params.scala 81:24]
+  wire [30:0] broadcast_1_auto_in_b_bits_address; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_c_ready; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_c_valid; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_in_c_bits_opcode; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_in_c_bits_param; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_in_c_bits_size; // @[BankedL2Params.scala 81:24]
+  wire [1:0] broadcast_1_auto_in_c_bits_source; // @[BankedL2Params.scala 81:24]
+  wire [30:0] broadcast_1_auto_in_c_bits_address; // @[BankedL2Params.scala 81:24]
+  wire [31:0] broadcast_1_auto_in_c_bits_data; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_c_bits_corrupt; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_d_ready; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_d_valid; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_in_d_bits_opcode; // @[BankedL2Params.scala 81:24]
+  wire [1:0] broadcast_1_auto_in_d_bits_param; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_in_d_bits_size; // @[BankedL2Params.scala 81:24]
+  wire [1:0] broadcast_1_auto_in_d_bits_source; // @[BankedL2Params.scala 81:24]
+  wire [1:0] broadcast_1_auto_in_d_bits_sink; // @[BankedL2Params.scala 81:24]
+  wire [31:0] broadcast_1_auto_in_d_bits_data; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_in_e_valid; // @[BankedL2Params.scala 81:24]
+  wire [1:0] broadcast_1_auto_in_e_bits_sink; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_out_a_ready; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_out_a_valid; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_out_a_bits_opcode; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_out_a_bits_param; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_out_a_bits_size; // @[BankedL2Params.scala 81:24]
+  wire [3:0] broadcast_1_auto_out_a_bits_source; // @[BankedL2Params.scala 81:24]
+  wire [30:0] broadcast_1_auto_out_a_bits_address; // @[BankedL2Params.scala 81:24]
+  wire [3:0] broadcast_1_auto_out_a_bits_mask; // @[BankedL2Params.scala 81:24]
+  wire [31:0] broadcast_1_auto_out_a_bits_data; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_out_d_ready; // @[BankedL2Params.scala 81:24]
+  wire  broadcast_1_auto_out_d_valid; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_out_d_bits_opcode; // @[BankedL2Params.scala 81:24]
+  wire [2:0] broadcast_1_auto_out_d_bits_size; // @[BankedL2Params.scala 81:24]
+  wire [3:0] broadcast_1_auto_out_d_bits_source; // @[BankedL2Params.scala 81:24]
+  wire [31:0] broadcast_1_auto_out_d_bits_data; // @[BankedL2Params.scala 81:24]
+  wire  coherent_jbar_auto_in_a_ready; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_a_valid; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_in_a_bits_opcode; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_in_a_bits_param; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_in_a_bits_size; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_in_a_bits_source; // @[BankedL2Params.scala 58:41]
+  wire [30:0] coherent_jbar_auto_in_a_bits_address; // @[BankedL2Params.scala 58:41]
+  wire [3:0] coherent_jbar_auto_in_a_bits_mask; // @[BankedL2Params.scala 58:41]
+  wire [31:0] coherent_jbar_auto_in_a_bits_data; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_a_bits_corrupt; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_b_ready; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_b_valid; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_in_b_bits_param; // @[BankedL2Params.scala 58:41]
+  wire [30:0] coherent_jbar_auto_in_b_bits_address; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_c_ready; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_c_valid; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_in_c_bits_opcode; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_in_c_bits_param; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_in_c_bits_size; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_in_c_bits_source; // @[BankedL2Params.scala 58:41]
+  wire [30:0] coherent_jbar_auto_in_c_bits_address; // @[BankedL2Params.scala 58:41]
+  wire [31:0] coherent_jbar_auto_in_c_bits_data; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_c_bits_corrupt; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_d_ready; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_d_valid; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_in_d_bits_opcode; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_in_d_bits_param; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_in_d_bits_size; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_in_d_bits_source; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_in_d_bits_sink; // @[BankedL2Params.scala 58:41]
+  wire [31:0] coherent_jbar_auto_in_d_bits_data; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_in_e_valid; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_in_e_bits_sink; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_a_ready; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_a_valid; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_out_a_bits_opcode; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_out_a_bits_param; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_out_a_bits_size; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_out_a_bits_source; // @[BankedL2Params.scala 58:41]
+  wire [30:0] coherent_jbar_auto_out_a_bits_address; // @[BankedL2Params.scala 58:41]
+  wire [3:0] coherent_jbar_auto_out_a_bits_mask; // @[BankedL2Params.scala 58:41]
+  wire [31:0] coherent_jbar_auto_out_a_bits_data; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_a_bits_corrupt; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_b_ready; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_b_valid; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_out_b_bits_param; // @[BankedL2Params.scala 58:41]
+  wire [30:0] coherent_jbar_auto_out_b_bits_address; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_c_ready; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_c_valid; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_out_c_bits_opcode; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_out_c_bits_param; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_out_c_bits_size; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_out_c_bits_source; // @[BankedL2Params.scala 58:41]
+  wire [30:0] coherent_jbar_auto_out_c_bits_address; // @[BankedL2Params.scala 58:41]
+  wire [31:0] coherent_jbar_auto_out_c_bits_data; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_c_bits_corrupt; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_d_ready; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_d_valid; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_out_d_bits_opcode; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_out_d_bits_param; // @[BankedL2Params.scala 58:41]
+  wire [2:0] coherent_jbar_auto_out_d_bits_size; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_out_d_bits_source; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_out_d_bits_sink; // @[BankedL2Params.scala 58:41]
+  wire [31:0] coherent_jbar_auto_out_d_bits_data; // @[BankedL2Params.scala 58:41]
+  wire  coherent_jbar_auto_out_e_valid; // @[BankedL2Params.scala 58:41]
+  wire [1:0] coherent_jbar_auto_out_e_bits_sink; // @[BankedL2Params.scala 58:41]
+  wire  binder_clock; // @[BankBinder.scala 67:28]
+  wire  binder_reset; // @[BankBinder.scala 67:28]
+  wire  binder_auto_in_a_ready; // @[BankBinder.scala 67:28]
+  wire  binder_auto_in_a_valid; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_in_a_bits_opcode; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_in_a_bits_param; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_in_a_bits_size; // @[BankBinder.scala 67:28]
+  wire [3:0] binder_auto_in_a_bits_source; // @[BankBinder.scala 67:28]
+  wire [30:0] binder_auto_in_a_bits_address; // @[BankBinder.scala 67:28]
+  wire [3:0] binder_auto_in_a_bits_mask; // @[BankBinder.scala 67:28]
+  wire [31:0] binder_auto_in_a_bits_data; // @[BankBinder.scala 67:28]
+  wire  binder_auto_in_d_ready; // @[BankBinder.scala 67:28]
+  wire  binder_auto_in_d_valid; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_in_d_bits_opcode; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_in_d_bits_size; // @[BankBinder.scala 67:28]
+  wire [3:0] binder_auto_in_d_bits_source; // @[BankBinder.scala 67:28]
+  wire [31:0] binder_auto_in_d_bits_data; // @[BankBinder.scala 67:28]
+  wire  binder_auto_out_a_ready; // @[BankBinder.scala 67:28]
+  wire  binder_auto_out_a_valid; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_out_a_bits_opcode; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_out_a_bits_param; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_out_a_bits_size; // @[BankBinder.scala 67:28]
+  wire [3:0] binder_auto_out_a_bits_source; // @[BankBinder.scala 67:28]
+  wire [30:0] binder_auto_out_a_bits_address; // @[BankBinder.scala 67:28]
+  wire [3:0] binder_auto_out_a_bits_mask; // @[BankBinder.scala 67:28]
+  wire [31:0] binder_auto_out_a_bits_data; // @[BankBinder.scala 67:28]
+  wire  binder_auto_out_d_ready; // @[BankBinder.scala 67:28]
+  wire  binder_auto_out_d_valid; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_out_d_bits_opcode; // @[BankBinder.scala 67:28]
+  wire [2:0] binder_auto_out_d_bits_size; // @[BankBinder.scala 67:28]
+  wire [3:0] binder_auto_out_d_bits_source; // @[BankBinder.scala 67:28]
+  wire [31:0] binder_auto_out_d_bits_data; // @[BankBinder.scala 67:28]
+  wire  coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [30:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  ClockGroupAggregator_5 subsystem_l2_clock_groups ( // @[BusWrapper.scala 40:48]
+    .auto_in_member_subsystem_l2_1_clock(subsystem_l2_clock_groups_auto_in_member_subsystem_l2_1_clock),
+    .auto_in_member_subsystem_l2_1_reset(subsystem_l2_clock_groups_auto_in_member_subsystem_l2_1_reset),
+    .auto_in_member_subsystem_l2_0_clock(subsystem_l2_clock_groups_auto_in_member_subsystem_l2_0_clock),
+    .auto_in_member_subsystem_l2_0_reset(subsystem_l2_clock_groups_auto_in_member_subsystem_l2_0_reset),
+    .auto_out_1_member_subsystem_mbus_0_clock(subsystem_l2_clock_groups_auto_out_1_member_subsystem_mbus_0_clock),
+    .auto_out_1_member_subsystem_mbus_0_reset(subsystem_l2_clock_groups_auto_out_1_member_subsystem_mbus_0_reset),
+    .auto_out_0_member_subsystem_l2_0_clock(subsystem_l2_clock_groups_auto_out_0_member_subsystem_l2_0_clock),
+    .auto_out_0_member_subsystem_l2_0_reset(subsystem_l2_clock_groups_auto_out_0_member_subsystem_l2_0_reset)
+  );
+  ClockGroup_5 clockGroup ( // @[BusWrapper.scala 41:38]
+    .auto_in_member_subsystem_l2_0_clock(clockGroup_auto_in_member_subsystem_l2_0_clock),
+    .auto_in_member_subsystem_l2_0_reset(clockGroup_auto_in_member_subsystem_l2_0_reset),
+    .auto_out_clock(clockGroup_auto_out_clock),
+    .auto_out_reset(clockGroup_auto_out_reset)
+  );
+  FixedClockBroadcast_2 fixedClockNode ( // @[ClockGroup.scala 106:107]
+    .auto_in_clock(fixedClockNode_auto_in_clock),
+    .auto_in_reset(fixedClockNode_auto_in_reset),
+    .auto_out_clock(fixedClockNode_auto_out_clock),
+    .auto_out_reset(fixedClockNode_auto_out_reset)
+  );
+  TLBroadcast broadcast_1 ( // @[BankedL2Params.scala 81:24]
+    .clock(broadcast_1_clock),
+    .reset(broadcast_1_reset),
+    .auto_in_a_ready(broadcast_1_auto_in_a_ready),
+    .auto_in_a_valid(broadcast_1_auto_in_a_valid),
+    .auto_in_a_bits_opcode(broadcast_1_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(broadcast_1_auto_in_a_bits_param),
+    .auto_in_a_bits_size(broadcast_1_auto_in_a_bits_size),
+    .auto_in_a_bits_source(broadcast_1_auto_in_a_bits_source),
+    .auto_in_a_bits_address(broadcast_1_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(broadcast_1_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(broadcast_1_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(broadcast_1_auto_in_a_bits_corrupt),
+    .auto_in_b_ready(broadcast_1_auto_in_b_ready),
+    .auto_in_b_valid(broadcast_1_auto_in_b_valid),
+    .auto_in_b_bits_param(broadcast_1_auto_in_b_bits_param),
+    .auto_in_b_bits_address(broadcast_1_auto_in_b_bits_address),
+    .auto_in_c_ready(broadcast_1_auto_in_c_ready),
+    .auto_in_c_valid(broadcast_1_auto_in_c_valid),
+    .auto_in_c_bits_opcode(broadcast_1_auto_in_c_bits_opcode),
+    .auto_in_c_bits_param(broadcast_1_auto_in_c_bits_param),
+    .auto_in_c_bits_size(broadcast_1_auto_in_c_bits_size),
+    .auto_in_c_bits_source(broadcast_1_auto_in_c_bits_source),
+    .auto_in_c_bits_address(broadcast_1_auto_in_c_bits_address),
+    .auto_in_c_bits_data(broadcast_1_auto_in_c_bits_data),
+    .auto_in_c_bits_corrupt(broadcast_1_auto_in_c_bits_corrupt),
+    .auto_in_d_ready(broadcast_1_auto_in_d_ready),
+    .auto_in_d_valid(broadcast_1_auto_in_d_valid),
+    .auto_in_d_bits_opcode(broadcast_1_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(broadcast_1_auto_in_d_bits_param),
+    .auto_in_d_bits_size(broadcast_1_auto_in_d_bits_size),
+    .auto_in_d_bits_source(broadcast_1_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(broadcast_1_auto_in_d_bits_sink),
+    .auto_in_d_bits_data(broadcast_1_auto_in_d_bits_data),
+    .auto_in_e_valid(broadcast_1_auto_in_e_valid),
+    .auto_in_e_bits_sink(broadcast_1_auto_in_e_bits_sink),
+    .auto_out_a_ready(broadcast_1_auto_out_a_ready),
+    .auto_out_a_valid(broadcast_1_auto_out_a_valid),
+    .auto_out_a_bits_opcode(broadcast_1_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(broadcast_1_auto_out_a_bits_param),
+    .auto_out_a_bits_size(broadcast_1_auto_out_a_bits_size),
+    .auto_out_a_bits_source(broadcast_1_auto_out_a_bits_source),
+    .auto_out_a_bits_address(broadcast_1_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(broadcast_1_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(broadcast_1_auto_out_a_bits_data),
+    .auto_out_d_ready(broadcast_1_auto_out_d_ready),
+    .auto_out_d_valid(broadcast_1_auto_out_d_valid),
+    .auto_out_d_bits_opcode(broadcast_1_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(broadcast_1_auto_out_d_bits_size),
+    .auto_out_d_bits_source(broadcast_1_auto_out_d_bits_source),
+    .auto_out_d_bits_data(broadcast_1_auto_out_d_bits_data)
+  );
+  TLJbar coherent_jbar ( // @[BankedL2Params.scala 58:41]
+    .auto_in_a_ready(coherent_jbar_auto_in_a_ready),
+    .auto_in_a_valid(coherent_jbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(coherent_jbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(coherent_jbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(coherent_jbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(coherent_jbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(coherent_jbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(coherent_jbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(coherent_jbar_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(coherent_jbar_auto_in_a_bits_corrupt),
+    .auto_in_b_ready(coherent_jbar_auto_in_b_ready),
+    .auto_in_b_valid(coherent_jbar_auto_in_b_valid),
+    .auto_in_b_bits_param(coherent_jbar_auto_in_b_bits_param),
+    .auto_in_b_bits_address(coherent_jbar_auto_in_b_bits_address),
+    .auto_in_c_ready(coherent_jbar_auto_in_c_ready),
+    .auto_in_c_valid(coherent_jbar_auto_in_c_valid),
+    .auto_in_c_bits_opcode(coherent_jbar_auto_in_c_bits_opcode),
+    .auto_in_c_bits_param(coherent_jbar_auto_in_c_bits_param),
+    .auto_in_c_bits_size(coherent_jbar_auto_in_c_bits_size),
+    .auto_in_c_bits_source(coherent_jbar_auto_in_c_bits_source),
+    .auto_in_c_bits_address(coherent_jbar_auto_in_c_bits_address),
+    .auto_in_c_bits_data(coherent_jbar_auto_in_c_bits_data),
+    .auto_in_c_bits_corrupt(coherent_jbar_auto_in_c_bits_corrupt),
+    .auto_in_d_ready(coherent_jbar_auto_in_d_ready),
+    .auto_in_d_valid(coherent_jbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(coherent_jbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(coherent_jbar_auto_in_d_bits_param),
+    .auto_in_d_bits_size(coherent_jbar_auto_in_d_bits_size),
+    .auto_in_d_bits_source(coherent_jbar_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(coherent_jbar_auto_in_d_bits_sink),
+    .auto_in_d_bits_data(coherent_jbar_auto_in_d_bits_data),
+    .auto_in_e_valid(coherent_jbar_auto_in_e_valid),
+    .auto_in_e_bits_sink(coherent_jbar_auto_in_e_bits_sink),
+    .auto_out_a_ready(coherent_jbar_auto_out_a_ready),
+    .auto_out_a_valid(coherent_jbar_auto_out_a_valid),
+    .auto_out_a_bits_opcode(coherent_jbar_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(coherent_jbar_auto_out_a_bits_param),
+    .auto_out_a_bits_size(coherent_jbar_auto_out_a_bits_size),
+    .auto_out_a_bits_source(coherent_jbar_auto_out_a_bits_source),
+    .auto_out_a_bits_address(coherent_jbar_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(coherent_jbar_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(coherent_jbar_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(coherent_jbar_auto_out_a_bits_corrupt),
+    .auto_out_b_ready(coherent_jbar_auto_out_b_ready),
+    .auto_out_b_valid(coherent_jbar_auto_out_b_valid),
+    .auto_out_b_bits_param(coherent_jbar_auto_out_b_bits_param),
+    .auto_out_b_bits_address(coherent_jbar_auto_out_b_bits_address),
+    .auto_out_c_ready(coherent_jbar_auto_out_c_ready),
+    .auto_out_c_valid(coherent_jbar_auto_out_c_valid),
+    .auto_out_c_bits_opcode(coherent_jbar_auto_out_c_bits_opcode),
+    .auto_out_c_bits_param(coherent_jbar_auto_out_c_bits_param),
+    .auto_out_c_bits_size(coherent_jbar_auto_out_c_bits_size),
+    .auto_out_c_bits_source(coherent_jbar_auto_out_c_bits_source),
+    .auto_out_c_bits_address(coherent_jbar_auto_out_c_bits_address),
+    .auto_out_c_bits_data(coherent_jbar_auto_out_c_bits_data),
+    .auto_out_c_bits_corrupt(coherent_jbar_auto_out_c_bits_corrupt),
+    .auto_out_d_ready(coherent_jbar_auto_out_d_ready),
+    .auto_out_d_valid(coherent_jbar_auto_out_d_valid),
+    .auto_out_d_bits_opcode(coherent_jbar_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(coherent_jbar_auto_out_d_bits_param),
+    .auto_out_d_bits_size(coherent_jbar_auto_out_d_bits_size),
+    .auto_out_d_bits_source(coherent_jbar_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(coherent_jbar_auto_out_d_bits_sink),
+    .auto_out_d_bits_data(coherent_jbar_auto_out_d_bits_data),
+    .auto_out_e_valid(coherent_jbar_auto_out_e_valid),
+    .auto_out_e_bits_sink(coherent_jbar_auto_out_e_bits_sink)
+  );
+  BankBinder binder ( // @[BankBinder.scala 67:28]
+    .clock(binder_clock),
+    .reset(binder_reset),
+    .auto_in_a_ready(binder_auto_in_a_ready),
+    .auto_in_a_valid(binder_auto_in_a_valid),
+    .auto_in_a_bits_opcode(binder_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(binder_auto_in_a_bits_param),
+    .auto_in_a_bits_size(binder_auto_in_a_bits_size),
+    .auto_in_a_bits_source(binder_auto_in_a_bits_source),
+    .auto_in_a_bits_address(binder_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(binder_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(binder_auto_in_a_bits_data),
+    .auto_in_d_ready(binder_auto_in_d_ready),
+    .auto_in_d_valid(binder_auto_in_d_valid),
+    .auto_in_d_bits_opcode(binder_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(binder_auto_in_d_bits_size),
+    .auto_in_d_bits_source(binder_auto_in_d_bits_source),
+    .auto_in_d_bits_data(binder_auto_in_d_bits_data),
+    .auto_out_a_ready(binder_auto_out_a_ready),
+    .auto_out_a_valid(binder_auto_out_a_valid),
+    .auto_out_a_bits_opcode(binder_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(binder_auto_out_a_bits_param),
+    .auto_out_a_bits_size(binder_auto_out_a_bits_size),
+    .auto_out_a_bits_source(binder_auto_out_a_bits_source),
+    .auto_out_a_bits_address(binder_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(binder_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(binder_auto_out_a_bits_data),
+    .auto_out_d_ready(binder_auto_out_d_ready),
+    .auto_out_d_valid(binder_auto_out_d_valid),
+    .auto_out_d_bits_opcode(binder_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(binder_auto_out_d_bits_size),
+    .auto_out_d_bits_source(binder_auto_out_d_bits_source),
+    .auto_out_d_bits_data(binder_auto_out_d_bits_data)
+  );
+  TLInterconnectCoupler_27 coupler_to_bus_named_subsystem_mbus ( // @[LazyModule.scala 432:27]
+    .auto_widget_in_a_ready(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_ready),
+    .auto_widget_in_a_valid(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_valid),
+    .auto_widget_in_a_bits_opcode(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_opcode),
+    .auto_widget_in_a_bits_param(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_param),
+    .auto_widget_in_a_bits_size(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_size),
+    .auto_widget_in_a_bits_source(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_source),
+    .auto_widget_in_a_bits_address(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_address),
+    .auto_widget_in_a_bits_mask(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_mask),
+    .auto_widget_in_a_bits_data(coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_data),
+    .auto_widget_in_d_ready(coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_ready),
+    .auto_widget_in_d_valid(coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_valid),
+    .auto_widget_in_d_bits_opcode(coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_opcode),
+    .auto_widget_in_d_bits_size(coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_size),
+    .auto_widget_in_d_bits_source(coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_source),
+    .auto_widget_in_d_bits_data(coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_data),
+    .auto_bus_xing_out_a_ready(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_ready),
+    .auto_bus_xing_out_a_valid(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_valid),
+    .auto_bus_xing_out_a_bits_opcode(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_opcode),
+    .auto_bus_xing_out_a_bits_param(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_param),
+    .auto_bus_xing_out_a_bits_size(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_size),
+    .auto_bus_xing_out_a_bits_source(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_source),
+    .auto_bus_xing_out_a_bits_address(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_address),
+    .auto_bus_xing_out_a_bits_mask(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_mask),
+    .auto_bus_xing_out_a_bits_data(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_data),
+    .auto_bus_xing_out_d_ready(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_ready),
+    .auto_bus_xing_out_d_valid(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_valid),
+    .auto_bus_xing_out_d_bits_opcode(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_opcode),
+    .auto_bus_xing_out_d_bits_size(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_size),
+    .auto_bus_xing_out_d_bits_source(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_source),
+    .auto_bus_xing_out_d_bits_data(coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_data)
+  );
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_valid =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_opcode =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_param =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_size =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_source =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_address =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_mask =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_data =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_ready =
+    coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coherent_jbar_in_a_ready = coherent_jbar_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_b_valid = coherent_jbar_auto_in_b_valid; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_b_bits_param = coherent_jbar_auto_in_b_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_b_bits_address = coherent_jbar_auto_in_b_bits_address; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_c_ready = coherent_jbar_auto_in_c_ready; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_d_valid = coherent_jbar_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_d_bits_opcode = coherent_jbar_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_d_bits_param = coherent_jbar_auto_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_d_bits_size = coherent_jbar_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_d_bits_source = coherent_jbar_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_d_bits_sink = coherent_jbar_auto_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_coherent_jbar_in_d_bits_data = coherent_jbar_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_clock =
+    subsystem_l2_clock_groups_auto_out_1_member_subsystem_mbus_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_reset =
+    subsystem_l2_clock_groups_auto_out_1_member_subsystem_mbus_0_reset; // @[LazyModule.scala 311:12]
+  assign subsystem_l2_clock_groups_auto_in_member_subsystem_l2_1_clock =
+    auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_l2_clock_groups_auto_in_member_subsystem_l2_1_reset =
+    auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_reset; // @[LazyModule.scala 309:16]
+  assign subsystem_l2_clock_groups_auto_in_member_subsystem_l2_0_clock =
+    auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_clock; // @[LazyModule.scala 309:16]
+  assign subsystem_l2_clock_groups_auto_in_member_subsystem_l2_0_reset =
+    auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_reset; // @[LazyModule.scala 309:16]
+  assign clockGroup_auto_in_member_subsystem_l2_0_clock =
+    subsystem_l2_clock_groups_auto_out_0_member_subsystem_l2_0_clock; // @[LazyModule.scala 298:16]
+  assign clockGroup_auto_in_member_subsystem_l2_0_reset =
+    subsystem_l2_clock_groups_auto_out_0_member_subsystem_l2_0_reset; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_clock = clockGroup_auto_out_clock; // @[LazyModule.scala 298:16]
+  assign fixedClockNode_auto_in_reset = clockGroup_auto_out_reset; // @[LazyModule.scala 298:16]
+  assign broadcast_1_clock = fixedClockNode_auto_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign broadcast_1_reset = fixedClockNode_auto_out_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_valid = coherent_jbar_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_bits_opcode = coherent_jbar_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_bits_param = coherent_jbar_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_bits_size = coherent_jbar_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_bits_source = coherent_jbar_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_bits_address = coherent_jbar_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_bits_mask = coherent_jbar_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_bits_data = coherent_jbar_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_a_bits_corrupt = coherent_jbar_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_b_ready = coherent_jbar_auto_out_b_ready; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_c_valid = coherent_jbar_auto_out_c_valid; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_c_bits_opcode = coherent_jbar_auto_out_c_bits_opcode; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_c_bits_param = coherent_jbar_auto_out_c_bits_param; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_c_bits_size = coherent_jbar_auto_out_c_bits_size; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_c_bits_source = coherent_jbar_auto_out_c_bits_source; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_c_bits_address = coherent_jbar_auto_out_c_bits_address; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_c_bits_data = coherent_jbar_auto_out_c_bits_data; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_c_bits_corrupt = coherent_jbar_auto_out_c_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_d_ready = coherent_jbar_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_e_valid = coherent_jbar_auto_out_e_valid; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_in_e_bits_sink = coherent_jbar_auto_out_e_bits_sink; // @[LazyModule.scala 296:16]
+  assign broadcast_1_auto_out_a_ready = binder_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign broadcast_1_auto_out_d_valid = binder_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign broadcast_1_auto_out_d_bits_opcode = binder_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign broadcast_1_auto_out_d_bits_size = binder_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign broadcast_1_auto_out_d_bits_source = binder_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign broadcast_1_auto_out_d_bits_data = binder_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign coherent_jbar_auto_in_a_valid = auto_coherent_jbar_in_a_valid; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_a_bits_opcode = auto_coherent_jbar_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_a_bits_param = auto_coherent_jbar_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_a_bits_size = auto_coherent_jbar_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_a_bits_source = auto_coherent_jbar_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_a_bits_address = auto_coherent_jbar_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_a_bits_mask = auto_coherent_jbar_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_a_bits_data = auto_coherent_jbar_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_a_bits_corrupt = auto_coherent_jbar_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_b_ready = auto_coherent_jbar_in_b_ready; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_c_valid = auto_coherent_jbar_in_c_valid; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_c_bits_opcode = auto_coherent_jbar_in_c_bits_opcode; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_c_bits_param = auto_coherent_jbar_in_c_bits_param; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_c_bits_size = auto_coherent_jbar_in_c_bits_size; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_c_bits_source = auto_coherent_jbar_in_c_bits_source; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_c_bits_address = auto_coherent_jbar_in_c_bits_address; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_c_bits_data = auto_coherent_jbar_in_c_bits_data; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_c_bits_corrupt = auto_coherent_jbar_in_c_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_d_ready = auto_coherent_jbar_in_d_ready; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_e_valid = auto_coherent_jbar_in_e_valid; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_in_e_bits_sink = auto_coherent_jbar_in_e_bits_sink; // @[LazyModule.scala 309:16]
+  assign coherent_jbar_auto_out_a_ready = broadcast_1_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_b_valid = broadcast_1_auto_in_b_valid; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_b_bits_param = broadcast_1_auto_in_b_bits_param; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_b_bits_address = broadcast_1_auto_in_b_bits_address; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_c_ready = broadcast_1_auto_in_c_ready; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_d_valid = broadcast_1_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_d_bits_opcode = broadcast_1_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_d_bits_param = broadcast_1_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_d_bits_size = broadcast_1_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_d_bits_source = broadcast_1_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_d_bits_sink = broadcast_1_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign coherent_jbar_auto_out_d_bits_data = broadcast_1_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign binder_clock = fixedClockNode_auto_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign binder_reset = fixedClockNode_auto_out_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign binder_auto_in_a_valid = broadcast_1_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign binder_auto_in_a_bits_opcode = broadcast_1_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign binder_auto_in_a_bits_param = broadcast_1_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign binder_auto_in_a_bits_size = broadcast_1_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign binder_auto_in_a_bits_source = broadcast_1_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign binder_auto_in_a_bits_address = broadcast_1_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign binder_auto_in_a_bits_mask = broadcast_1_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign binder_auto_in_a_bits_data = broadcast_1_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign binder_auto_in_d_ready = broadcast_1_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign binder_auto_out_a_ready = coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_ready; // @[LazyModule.scala 298:16]
+  assign binder_auto_out_d_valid = coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_valid; // @[LazyModule.scala 298:16]
+  assign binder_auto_out_d_bits_opcode = coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign binder_auto_out_d_bits_size = coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign binder_auto_out_d_bits_source = coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign binder_auto_out_d_bits_data = coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_valid = binder_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_opcode = binder_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_param = binder_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_size = binder_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_source = binder_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_address = binder_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_mask = binder_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_a_bits_data = binder_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_widget_in_d_ready = binder_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_a_ready =
+    auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_valid =
+    auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_opcode =
+    auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_size =
+    auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_source =
+    auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_bus_named_subsystem_mbus_auto_bus_xing_out_d_bits_data =
+    auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_43(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input         io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_b_ready,
+  input         io_in_b_valid,
+  input  [2:0]  io_in_b_bits_opcode,
+  input  [1:0]  io_in_b_bits_param,
+  input  [3:0]  io_in_b_bits_size,
+  input         io_in_b_bits_source,
+  input  [30:0] io_in_b_bits_address,
+  input  [3:0]  io_in_b_bits_mask,
+  input         io_in_b_bits_corrupt,
+  input         io_in_c_ready,
+  input         io_in_c_valid,
+  input  [2:0]  io_in_c_bits_opcode,
+  input  [2:0]  io_in_c_bits_param,
+  input  [3:0]  io_in_c_bits_size,
+  input         io_in_c_bits_source,
+  input  [30:0] io_in_c_bits_address,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input         io_in_d_bits_source,
+  input  [1:0]  io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt,
+  input         io_in_e_ready,
+  input         io_in_e_valid,
+  input  [1:0]  io_in_e_bits_sink
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = ~io_in_a_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | io_in_a_bits_source; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_86 = {{19'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_86; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [31:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_24 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_26 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_31 = _T_26 & source_ok; // @[Parameters.scala 1160:30]
+  wire [31:0] _T_37 = $signed(_T_7) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_38 = $signed(_T_37) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_39 = io_in_a_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_40 = {1'b0,$signed(_T_39)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_42 = $signed(_T_40) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_43 = $signed(_T_42) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_44 = io_in_a_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_45 = {1'b0,$signed(_T_44)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_47 = $signed(_T_45) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_48 = $signed(_T_47) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_49 = io_in_a_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_50 = {1'b0,$signed(_T_49)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_52 = $signed(_T_50) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_53 = $signed(_T_52) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_54 = io_in_a_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_55 = {1'b0,$signed(_T_54)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_57 = $signed(_T_55) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_58 = $signed(_T_57) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_59 = io_in_a_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_60 = {1'b0,$signed(_T_59)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_62 = $signed(_T_60) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_63 = $signed(_T_62) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_64 = io_in_a_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_65 = {1'b0,$signed(_T_64)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_67 = $signed(_T_65) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_68 = $signed(_T_67) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_69 = io_in_a_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_70 = {1'b0,$signed(_T_69)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_72 = $signed(_T_70) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_73 = $signed(_T_72) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_74 = io_in_a_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_75 = {1'b0,$signed(_T_74)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_77 = $signed(_T_75) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_78 = $signed(_T_77) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_79 = io_in_a_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_80 = {1'b0,$signed(_T_79)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_82 = $signed(_T_80) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_83 = $signed(_T_82) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_84 = io_in_a_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_85 = {1'b0,$signed(_T_84)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_87 = $signed(_T_85) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_88 = $signed(_T_87) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_89 = io_in_a_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_90 = {1'b0,$signed(_T_89)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_92 = $signed(_T_90) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_93 = $signed(_T_92) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_94 = io_in_a_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_95 = {1'b0,$signed(_T_94)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_97 = $signed(_T_95) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_98 = $signed(_T_97) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_99 = io_in_a_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_100 = {1'b0,$signed(_T_99)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_102 = $signed(_T_100) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_103 = $signed(_T_102) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_119 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire [30:0] _T_122 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_123 = {1'b0,$signed(_T_122)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_125 = $signed(_T_123) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_126 = $signed(_T_125) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_127 = _T_119 & _T_126; // @[Parameters.scala 670:56]
+  wire  _T_130 = _T_31 & _T_127; // @[Monitor.scala 82:72]
+  wire  _T_136 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_137 = _source_ok_T & _T_136; // @[Mux.scala 27:73]
+  wire  _T_232 = _T_38 | _T_43 | _T_48 | _T_53 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_88 | _T_93 | _T_98
+     | _T_103 | _T_126; // @[Parameters.scala 671:42]
+  wire  _T_233 = _T_26 & _T_232; // @[Parameters.scala 670:56]
+  wire  _T_235 = _T_137 & _T_233; // @[Monitor.scala 83:78]
+  wire  _T_249 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_253 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_254 = _T_253 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_491 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_504 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_525 = _T_26 & _T_43; // @[Parameters.scala 670:56]
+  wire  _T_612 = _T_38 | _T_48 | _T_53 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_88 | _T_93 | _T_98 | _T_103
+     | _T_126; // @[Parameters.scala 671:42]
+  wire  _T_613 = _T_119 & _T_612; // @[Parameters.scala 670:56]
+  wire  _T_615 = _T_525 | _T_613; // @[Parameters.scala 672:30]
+  wire  _T_625 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_629 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_637 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_729 = _T_38 | _T_53 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_88 | _T_93 | _T_98; // @[Parameters.scala 671:42]
+  wire  _T_730 = _T_38 | _T_53 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_88 | _T_93 | _T_98 | _T_126; // @[Parameters.scala 671:42]
+  wire  _T_731 = _T_119 & _T_730; // @[Parameters.scala 670:56]
+  wire  _T_746 = _T_525 | _T_731; // @[Parameters.scala 672:30]
+  wire  _T_748 = _T_31 & _T_746; // @[Monitor.scala 115:71]
+  wire  _T_766 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_854 = _T_119 & _T_729; // @[Parameters.scala 670:56]
+  wire  _T_875 = _T_525 | _T_854; // @[Parameters.scala 672:30]
+  wire  _T_877 = _T_31 & _T_875; // @[Monitor.scala 123:74]
+  wire [3:0] _T_891 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_892 = io_in_a_bits_mask & _T_891; // @[Monitor.scala 127:31]
+  wire  _T_893 = _T_892 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_897 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_907 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_980 = _T_38 | _T_43 | _T_53 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_88 | _T_93 | _T_98; // @[Parameters.scala 671:42]
+  wire  _T_981 = _T_907 & _T_980; // @[Parameters.scala 670:56]
+  wire  _T_1003 = _T_31 & _T_981; // @[Monitor.scala 131:74]
+  wire  _T_1013 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_1021 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1137 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1145 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1251 = _T_31 & _T_525; // @[Monitor.scala 147:68]
+  wire  _T_1261 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1273 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_2 = ~io_in_d_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_2 | io_in_d_bits_source; // @[Parameters.scala 1125:46]
+  wire  _T_1277 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1281 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1285 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1289 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1293 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1297 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1308 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1312 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1325 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1345 = _T_1293 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1354 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1371 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1389 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _T_1406 = io_in_b_bits_opcode <= 3'h6; // @[Bundles.scala 40:24]
+  wire  _T_1410 = ~io_in_b_bits_source; // @[Parameters.scala 46:9]
+  wire [31:0] _T_1413 = {1'b0,$signed(io_in_b_bits_address)}; // @[Parameters.scala 137:49]
+  wire [30:0] _address_ok_T = io_in_b_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_1 = {1'b0,$signed(_address_ok_T)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_3 = $signed(_address_ok_T_1) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_4 = $signed(_address_ok_T_3) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_5 = io_in_b_bits_address ^ 31'h10013000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_6 = {1'b0,$signed(_address_ok_T_5)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_8 = $signed(_address_ok_T_6) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_9 = $signed(_address_ok_T_8) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_10 = io_in_b_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_11 = {1'b0,$signed(_address_ok_T_10)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_13 = $signed(_address_ok_T_11) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_14 = $signed(_address_ok_T_13) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_15 = io_in_b_bits_address ^ 31'h10033000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_16 = {1'b0,$signed(_address_ok_T_15)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_18 = $signed(_address_ok_T_16) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_19 = $signed(_address_ok_T_18) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_20 = io_in_b_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_21 = {1'b0,$signed(_address_ok_T_20)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_23 = $signed(_address_ok_T_21) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_24 = $signed(_address_ok_T_23) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_25 = io_in_b_bits_address ^ 31'h10053000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_26 = {1'b0,$signed(_address_ok_T_25)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_28 = $signed(_address_ok_T_26) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_29 = $signed(_address_ok_T_28) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_30 = io_in_b_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_31 = {1'b0,$signed(_address_ok_T_30)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_33 = $signed(_address_ok_T_31) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_34 = $signed(_address_ok_T_33) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_35 = io_in_b_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_36 = {1'b0,$signed(_address_ok_T_35)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_38 = $signed(_address_ok_T_36) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_39 = $signed(_address_ok_T_38) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_40 = io_in_b_bits_address ^ 31'h10034000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_41 = {1'b0,$signed(_address_ok_T_40)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_43 = $signed(_address_ok_T_41) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_44 = $signed(_address_ok_T_43) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_45 = io_in_b_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_46 = {1'b0,$signed(_address_ok_T_45)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_48 = $signed(_address_ok_T_46) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_49 = $signed(_address_ok_T_48) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_50 = io_in_b_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_51 = {1'b0,$signed(_address_ok_T_50)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_53 = $signed(_address_ok_T_51) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_54 = $signed(_address_ok_T_53) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_55 = io_in_b_bits_address ^ 31'h10015000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_56 = {1'b0,$signed(_address_ok_T_55)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_58 = $signed(_address_ok_T_56) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_59 = $signed(_address_ok_T_58) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_60 = io_in_b_bits_address ^ 31'h10025000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_61 = {1'b0,$signed(_address_ok_T_60)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_63 = $signed(_address_ok_T_61) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_64 = $signed(_address_ok_T_63) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_65 = io_in_b_bits_address ^ 31'h10035000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_66 = {1'b0,$signed(_address_ok_T_65)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_68 = $signed(_address_ok_T_66) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_69 = $signed(_address_ok_T_68) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_70 = io_in_b_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_71 = {1'b0,$signed(_address_ok_T_70)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_73 = $signed(_address_ok_T_71) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_74 = $signed(_address_ok_T_73) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_75 = io_in_b_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_76 = {1'b0,$signed(_address_ok_T_75)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_78 = $signed(_address_ok_T_76) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_79 = $signed(_address_ok_T_78) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_80 = io_in_b_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_81 = {1'b0,$signed(_address_ok_T_80)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_83 = $signed(_address_ok_T_81) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_84 = $signed(_address_ok_T_83) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_85 = io_in_b_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_86 = {1'b0,$signed(_address_ok_T_85)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_88 = $signed(_address_ok_T_86) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_89 = $signed(_address_ok_T_88) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _address_ok_T_93 = $signed(_T_1413) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_94 = $signed(_address_ok_T_93) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_95 = io_in_b_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_96 = {1'b0,$signed(_address_ok_T_95)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_98 = $signed(_address_ok_T_96) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_99 = $signed(_address_ok_T_98) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_100 = io_in_b_bits_address ^ 31'h10000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_101 = {1'b0,$signed(_address_ok_T_100)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_103 = $signed(_address_ok_T_101) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_104 = $signed(_address_ok_T_103) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_105 = io_in_b_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_106 = {1'b0,$signed(_address_ok_T_105)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_108 = $signed(_address_ok_T_106) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_109 = $signed(_address_ok_T_108) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_110 = io_in_b_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_111 = {1'b0,$signed(_address_ok_T_110)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_113 = $signed(_address_ok_T_111) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_114 = $signed(_address_ok_T_113) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  address_ok = _address_ok_T_4 | _address_ok_T_9 | _address_ok_T_14 | _address_ok_T_19 | _address_ok_T_24 |
+    _address_ok_T_29 | _address_ok_T_34 | _address_ok_T_39 | _address_ok_T_44 | _address_ok_T_49 | _address_ok_T_54 |
+    _address_ok_T_59 | _address_ok_T_64 | _address_ok_T_69 | _address_ok_T_74 | _address_ok_T_79 | _address_ok_T_84 |
+    _address_ok_T_89 | _address_ok_T_94 | _address_ok_T_99 | _address_ok_T_104 | _address_ok_T_109 | _address_ok_T_114; // @[Parameters.scala 622:64]
+  wire [26:0] _is_aligned_mask_T_4 = 27'hfff << io_in_b_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask_1 = ~_is_aligned_mask_T_4[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_87 = {{19'd0}, is_aligned_mask_1}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T_1 = io_in_b_bits_address & _GEN_87; // @[Edges.scala 20:16]
+  wire  is_aligned_1 = _is_aligned_T_1 == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount_1 = io_in_b_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_4 = 2'h1 << mask_sizeOH_shiftAmount_1; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH_1 = _mask_sizeOH_T_4 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T_1 = io_in_b_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size_2 = mask_sizeOH_1[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_b_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_acc_6 = _mask_T_1 | mask_size_2 & mask_nbit_2; // @[Misc.scala 214:29]
+  wire  mask_acc_7 = _mask_T_1 | mask_size_2 & mask_bit_2; // @[Misc.scala 214:29]
+  wire  mask_size_3 = mask_sizeOH_1[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_3 = io_in_b_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_3 = ~mask_bit_3; // @[Misc.scala 210:20]
+  wire  mask_eq_8 = mask_nbit_2 & mask_nbit_3; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_6 | mask_size_3 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_nbit_2 & mask_bit_3; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_6 | mask_size_3 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_bit_2 & mask_nbit_3; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_7 | mask_size_3 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_bit_2 & mask_bit_3; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_7 | mask_size_3 & mask_eq_11; // @[Misc.scala 214:29]
+  wire [3:0] mask_1 = {mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8}; // @[Cat.scala 31:58]
+  wire  _T_1430 = io_in_b_bits_opcode == 3'h6; // @[Monitor.scala 167:25]
+  wire  _T_1433 = 4'h6 == io_in_b_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_1434 = _T_1410 & _T_1433; // @[Mux.scala 27:73]
+  wire  _T_1438 = io_in_b_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire [31:0] _T_1444 = $signed(_T_1413) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_1445 = $signed(_T_1444) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1474 = $signed(_address_ok_T_51) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_1475 = $signed(_T_1474) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1479 = $signed(_address_ok_T_31) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_1480 = $signed(_T_1479) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1489 = $signed(_address_ok_T_11) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_1490 = $signed(_T_1489) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1494 = $signed(_address_ok_T_46) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_1495 = $signed(_T_1494) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1504 = $signed(_address_ok_T_21) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_1505 = $signed(_T_1504) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_1529 = _T_1445 | _address_ok_T_4 | _address_ok_T_109 | _address_ok_T_89 | _address_ok_T_99 | _address_ok_T_84
+     | _T_1475 | _T_1480 | _address_ok_T_74 | _T_1490 | _T_1495 | _address_ok_T_79 | _T_1505 | _address_ok_T_39 |
+    _address_ok_T_114; // @[Parameters.scala 671:42]
+  wire  _T_1530 = _T_1438 & _T_1529; // @[Parameters.scala 670:56]
+  wire  _T_1532 = _T_1434 & _T_1530; // @[Monitor.scala 168:75]
+  wire  _T_1538 = ~address_ok; // @[Monitor.scala 49:11]
+  wire  _T_1544 = ~is_aligned_1; // @[Monitor.scala 49:11]
+  wire  _T_1545 = io_in_b_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1549 = io_in_b_bits_mask == mask_1; // @[Monitor.scala 173:27]
+  wire  _T_1552 = ~_T_1549; // @[Monitor.scala 49:11]
+  wire  _T_1553 = ~io_in_b_bits_corrupt; // @[Monitor.scala 174:15]
+  wire  _T_1556 = ~_T_1553; // @[Monitor.scala 49:11]
+  wire  _T_1557 = io_in_b_bits_opcode == 3'h4; // @[Monitor.scala 177:25]
+  wire  _T_1666 = io_in_b_bits_param == 2'h0; // @[Monitor.scala 182:31]
+  wire  _T_1678 = io_in_b_bits_opcode == 3'h0; // @[Monitor.scala 187:25]
+  wire  _T_1795 = io_in_b_bits_opcode == 3'h1; // @[Monitor.scala 196:25]
+  wire [3:0] _T_1908 = ~mask_1; // @[Monitor.scala 202:33]
+  wire [3:0] _T_1909 = io_in_b_bits_mask & _T_1908; // @[Monitor.scala 202:31]
+  wire  _T_1910 = _T_1909 == 4'h0; // @[Monitor.scala 202:40]
+  wire  _T_1914 = io_in_b_bits_opcode == 3'h2; // @[Monitor.scala 205:25]
+  wire  _T_2031 = io_in_b_bits_opcode == 3'h3; // @[Monitor.scala 214:25]
+  wire  _T_2148 = io_in_b_bits_opcode == 3'h5; // @[Monitor.scala 223:25]
+  wire  _source_ok_T_4 = ~io_in_c_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok_2 = _source_ok_T_4 | io_in_c_bits_source; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_7 = 27'hfff << io_in_c_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask_2 = ~_is_aligned_mask_T_7[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_88 = {{19'd0}, is_aligned_mask_2}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T_2 = io_in_c_bits_address & _GEN_88; // @[Edges.scala 20:16]
+  wire  is_aligned_2 = _is_aligned_T_2 == 31'h0; // @[Edges.scala 20:24]
+  wire [30:0] _address_ok_T_136 = io_in_c_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_137 = {1'b0,$signed(_address_ok_T_136)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_139 = $signed(_address_ok_T_137) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_140 = $signed(_address_ok_T_139) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_141 = io_in_c_bits_address ^ 31'h10013000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_142 = {1'b0,$signed(_address_ok_T_141)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_144 = $signed(_address_ok_T_142) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_145 = $signed(_address_ok_T_144) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_146 = io_in_c_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_147 = {1'b0,$signed(_address_ok_T_146)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_149 = $signed(_address_ok_T_147) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_150 = $signed(_address_ok_T_149) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_151 = io_in_c_bits_address ^ 31'h10033000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_152 = {1'b0,$signed(_address_ok_T_151)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_154 = $signed(_address_ok_T_152) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_155 = $signed(_address_ok_T_154) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_156 = io_in_c_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_157 = {1'b0,$signed(_address_ok_T_156)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_159 = $signed(_address_ok_T_157) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_160 = $signed(_address_ok_T_159) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_161 = io_in_c_bits_address ^ 31'h10053000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_162 = {1'b0,$signed(_address_ok_T_161)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_164 = $signed(_address_ok_T_162) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_165 = $signed(_address_ok_T_164) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_166 = io_in_c_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_167 = {1'b0,$signed(_address_ok_T_166)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_169 = $signed(_address_ok_T_167) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_170 = $signed(_address_ok_T_169) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_171 = io_in_c_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_172 = {1'b0,$signed(_address_ok_T_171)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_174 = $signed(_address_ok_T_172) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_175 = $signed(_address_ok_T_174) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_176 = io_in_c_bits_address ^ 31'h10034000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_177 = {1'b0,$signed(_address_ok_T_176)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_179 = $signed(_address_ok_T_177) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_180 = $signed(_address_ok_T_179) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_181 = io_in_c_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_182 = {1'b0,$signed(_address_ok_T_181)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_184 = $signed(_address_ok_T_182) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_185 = $signed(_address_ok_T_184) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_186 = io_in_c_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_187 = {1'b0,$signed(_address_ok_T_186)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_189 = $signed(_address_ok_T_187) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_190 = $signed(_address_ok_T_189) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_191 = io_in_c_bits_address ^ 31'h10015000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_192 = {1'b0,$signed(_address_ok_T_191)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_194 = $signed(_address_ok_T_192) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_195 = $signed(_address_ok_T_194) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_196 = io_in_c_bits_address ^ 31'h10025000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_197 = {1'b0,$signed(_address_ok_T_196)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_199 = $signed(_address_ok_T_197) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_200 = $signed(_address_ok_T_199) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_201 = io_in_c_bits_address ^ 31'h10035000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_202 = {1'b0,$signed(_address_ok_T_201)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_204 = $signed(_address_ok_T_202) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_205 = $signed(_address_ok_T_204) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_206 = io_in_c_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_207 = {1'b0,$signed(_address_ok_T_206)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_209 = $signed(_address_ok_T_207) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_210 = $signed(_address_ok_T_209) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_211 = io_in_c_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_212 = {1'b0,$signed(_address_ok_T_211)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_214 = $signed(_address_ok_T_212) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_215 = $signed(_address_ok_T_214) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_216 = io_in_c_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_217 = {1'b0,$signed(_address_ok_T_216)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_219 = $signed(_address_ok_T_217) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_220 = $signed(_address_ok_T_219) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_221 = io_in_c_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_222 = {1'b0,$signed(_address_ok_T_221)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_224 = $signed(_address_ok_T_222) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_225 = $signed(_address_ok_T_224) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _address_ok_T_227 = {1'b0,$signed(io_in_c_bits_address)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_229 = $signed(_address_ok_T_227) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_230 = $signed(_address_ok_T_229) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_231 = io_in_c_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_232 = {1'b0,$signed(_address_ok_T_231)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_234 = $signed(_address_ok_T_232) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_235 = $signed(_address_ok_T_234) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_236 = io_in_c_bits_address ^ 31'h10000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_237 = {1'b0,$signed(_address_ok_T_236)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_239 = $signed(_address_ok_T_237) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_240 = $signed(_address_ok_T_239) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_241 = io_in_c_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_242 = {1'b0,$signed(_address_ok_T_241)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_244 = $signed(_address_ok_T_242) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_245 = $signed(_address_ok_T_244) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_246 = io_in_c_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_247 = {1'b0,$signed(_address_ok_T_246)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_249 = $signed(_address_ok_T_247) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_250 = $signed(_address_ok_T_249) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  address_ok_1 = _address_ok_T_140 | _address_ok_T_145 | _address_ok_T_150 | _address_ok_T_155 | _address_ok_T_160
+     | _address_ok_T_165 | _address_ok_T_170 | _address_ok_T_175 | _address_ok_T_180 | _address_ok_T_185 |
+    _address_ok_T_190 | _address_ok_T_195 | _address_ok_T_200 | _address_ok_T_205 | _address_ok_T_210 |
+    _address_ok_T_215 | _address_ok_T_220 | _address_ok_T_225 | _address_ok_T_230 | _address_ok_T_235 |
+    _address_ok_T_240 | _address_ok_T_245 | _address_ok_T_250; // @[Parameters.scala 622:64]
+  wire  _T_2289 = io_in_c_bits_opcode == 3'h4; // @[Monitor.scala 242:25]
+  wire  _T_2296 = io_in_c_bits_size >= 4'h2; // @[Monitor.scala 245:30]
+  wire  _T_2303 = io_in_c_bits_param <= 3'h5; // @[Bundles.scala 120:29]
+  wire  _T_2311 = io_in_c_bits_opcode == 3'h5; // @[Monitor.scala 251:25]
+  wire  _T_2329 = io_in_c_bits_opcode == 3'h6; // @[Monitor.scala 259:25]
+  wire  _T_2331 = io_in_c_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_2336 = _T_2331 & source_ok_2; // @[Parameters.scala 1160:30]
+  wire [31:0] _T_2342 = $signed(_address_ok_T_227) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_2343 = $signed(_T_2342) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2372 = $signed(_address_ok_T_187) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_2373 = $signed(_T_2372) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2377 = $signed(_address_ok_T_167) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_2378 = $signed(_T_2377) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2387 = $signed(_address_ok_T_147) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_2388 = $signed(_T_2387) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2392 = $signed(_address_ok_T_182) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_2393 = $signed(_T_2392) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2402 = $signed(_address_ok_T_157) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_2403 = $signed(_T_2402) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_2424 = io_in_c_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_2432 = _T_2424 & _address_ok_T_250; // @[Parameters.scala 670:56]
+  wire  _T_2435 = _T_2336 & _T_2432; // @[Monitor.scala 260:78]
+  wire  _T_2441 = 4'h6 == io_in_c_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_2442 = _source_ok_T_4 & _T_2441; // @[Mux.scala 27:73]
+  wire  _T_2537 = _T_2343 | _address_ok_T_140 | _address_ok_T_245 | _address_ok_T_225 | _address_ok_T_235 |
+    _address_ok_T_220 | _T_2373 | _T_2378 | _address_ok_T_210 | _T_2388 | _T_2393 | _address_ok_T_215 | _T_2403 |
+    _address_ok_T_175 | _address_ok_T_250; // @[Parameters.scala 671:42]
+  wire  _T_2538 = _T_2331 & _T_2537; // @[Parameters.scala 670:56]
+  wire  _T_2540 = _T_2442 & _T_2538; // @[Monitor.scala 261:78]
+  wire  _T_2562 = io_in_c_bits_opcode == 3'h7; // @[Monitor.scala 269:25]
+  wire  _T_2791 = io_in_c_bits_opcode == 3'h0; // @[Monitor.scala 278:25]
+  wire  _T_2801 = io_in_c_bits_param == 3'h0; // @[Monitor.scala 282:31]
+  wire  _T_2809 = io_in_c_bits_opcode == 3'h1; // @[Monitor.scala 286:25]
+  wire  _T_2823 = io_in_c_bits_opcode == 3'h2; // @[Monitor.scala 293:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg  source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_2845 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_2846 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_2850 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_2854 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_2858 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_2862 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg  source_1; // @[Monitor.scala 538:22]
+  reg [1:0] sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_2869 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_2870 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_2874 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_2878 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_2882 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_2886 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_2890 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  wire  b_first_done = io_in_b_ready & io_in_b_valid; // @[Decoupled.scala 50:35]
+  reg [9:0] b_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] b_first_counter1 = b_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  b_first = b_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_2; // @[Monitor.scala 407:22]
+  reg [1:0] param_2; // @[Monitor.scala 408:22]
+  reg [3:0] size_2; // @[Monitor.scala 409:22]
+  reg  source_2; // @[Monitor.scala 410:22]
+  reg [30:0] address_1; // @[Monitor.scala 411:22]
+  wire  _T_2897 = io_in_b_valid & ~b_first; // @[Monitor.scala 412:19]
+  wire  _T_2898 = io_in_b_bits_opcode == opcode_2; // @[Monitor.scala 413:32]
+  wire  _T_2902 = io_in_b_bits_param == param_2; // @[Monitor.scala 414:32]
+  wire  _T_2906 = io_in_b_bits_size == size_2; // @[Monitor.scala 415:32]
+  wire  _T_2910 = io_in_b_bits_source == source_2; // @[Monitor.scala 416:32]
+  wire  _T_2914 = io_in_b_bits_address == address_1; // @[Monitor.scala 417:32]
+  wire  _c_first_T = io_in_c_ready & io_in_c_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] c_first_beats1_decode = is_aligned_mask_2[11:2]; // @[Edges.scala 219:59]
+  wire  c_first_beats1_opdata = io_in_c_bits_opcode[0]; // @[Edges.scala 101:36]
+  reg [9:0] c_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] c_first_counter1 = c_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  c_first = c_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_3; // @[Monitor.scala 512:22]
+  reg [2:0] param_3; // @[Monitor.scala 513:22]
+  reg [3:0] size_3; // @[Monitor.scala 514:22]
+  reg  source_3; // @[Monitor.scala 515:22]
+  reg [30:0] address_2; // @[Monitor.scala 516:22]
+  wire  _T_2921 = io_in_c_valid & ~c_first; // @[Monitor.scala 517:19]
+  wire  _T_2922 = io_in_c_bits_opcode == opcode_3; // @[Monitor.scala 518:32]
+  wire  _T_2926 = io_in_c_bits_param == param_3; // @[Monitor.scala 519:32]
+  wire  _T_2930 = io_in_c_bits_size == size_3; // @[Monitor.scala 520:32]
+  wire  _T_2934 = io_in_c_bits_source == source_3; // @[Monitor.scala 521:32]
+  wire  _T_2938 = io_in_c_bits_address == address_2; // @[Monitor.scala 522:32]
+  reg [1:0] inflight; // @[Monitor.scala 611:27]
+  reg [7:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [15:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [2:0] _GEN_89 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [3:0] _a_opcode_lookup_T = {{1'd0}, _GEN_89}; // @[Monitor.scala 634:69]
+  wire [7:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_90 = {{8'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_90 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [3:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [15:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _a_size_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_2944 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [1:0] _a_set_wo_ready_T = 2'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [1:0] a_set_wo_ready = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_2947 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [2:0] _GEN_93 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3:0] _a_opcodes_set_T = {{1'd0}, _GEN_93}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [18:0] _GEN_1 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [18:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [3:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [19:0] _GEN_2 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [19:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [1:0] _T_2949 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_2951 = ~_T_2949[0]; // @[Monitor.scala 658:17]
+  wire [1:0] a_set = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_31 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_32 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_2955 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_2957 = ~_T_1277; // @[Monitor.scala 671:74]
+  wire  _T_2958 = io_in_d_valid & d_first_1 & ~_T_1277; // @[Monitor.scala 671:71]
+  wire [1:0] _d_clr_wo_ready_T = 2'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1:0] d_clr_wo_ready = io_in_d_valid & d_first_1 & ~_T_1277 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 671:90 672:22]
+  wire [30:0] _GEN_3 = {{15'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [30:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [30:0] _GEN_4 = {{15'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [30:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [1:0] d_clr = _d_first_T & d_first_1 & _T_2957 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_35 = _d_first_T & d_first_1 & _T_2957 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire [30:0] _GEN_36 = _d_first_T & d_first_1 & _T_2957 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_2944 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [1:0] _T_2968 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_2970 = _T_2968[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_39 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_40 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_39; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_41 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_40; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_42 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_41; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_43 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_42; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_44 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_43; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_51 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_42; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_52 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_51; // @[Monitor.scala 686:{39,39}]
+  wire  _T_2975 = io_in_d_bits_opcode == _GEN_52; // @[Monitor.scala 686:39]
+  wire  _T_2976 = io_in_d_bits_opcode == _GEN_44 | _T_2975; // @[Monitor.scala 685:77]
+  wire  _T_2980 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_55 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_56 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_55; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_57 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_56; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_58 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_57; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_59 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_58; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_60 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_59; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_67 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_58; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_68 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_67; // @[Monitor.scala 690:{38,38}]
+  wire  _T_2987 = io_in_d_bits_opcode == _GEN_68; // @[Monitor.scala 690:38]
+  wire  _T_2988 = io_in_d_bits_opcode == _GEN_60 | _T_2987; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_95 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_2992 = _GEN_95 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_3002 = _T_2955 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_2957; // @[Monitor.scala 694:116]
+  wire  _T_3003 = ~io_in_d_ready; // @[Monitor.scala 695:15]
+  wire  _T_3004 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_3011 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [1:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [1:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [1:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [7:0] a_opcodes_set = _GEN_31[7:0];
+  wire [7:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [7:0] d_opcodes_clr = _GEN_35[7:0];
+  wire [7:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [7:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [15:0] a_sizes_set = _GEN_32[15:0];
+  wire [15:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [15:0] d_sizes_clr = _GEN_36[15:0];
+  wire [15:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [15:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_3020 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [1:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [15:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] c_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] c_first_counter1_1 = c_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  c_first_1 = c_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [15:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _a_size_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_3030 = io_in_c_bits_opcode[2] & io_in_c_bits_opcode[1]; // @[Edges.scala 67:40]
+  wire  _T_3031 = io_in_c_valid & c_first_1 & _T_3030; // @[Monitor.scala 756:37]
+  wire [1:0] _c_set_wo_ready_T = 2'h1 << io_in_c_bits_source; // @[OneHot.scala 57:35]
+  wire [1:0] c_set_wo_ready = io_in_c_valid & c_first_1 & _T_3030 ? _c_set_wo_ready_T : 2'h0; // @[Monitor.scala 756:71 757:22]
+  wire  _T_3037 = _c_first_T & c_first_1 & _T_3030; // @[Monitor.scala 760:38]
+  wire [4:0] _c_sizes_set_interm_T = {io_in_c_bits_size, 1'h0}; // @[Monitor.scala 763:51]
+  wire [4:0] _c_sizes_set_interm_T_1 = _c_sizes_set_interm_T | 5'h1; // @[Monitor.scala 763:59]
+  wire [3:0] _c_sizes_set_T = {io_in_c_bits_source, 3'h0}; // @[Monitor.scala 765:77]
+  wire [4:0] c_sizes_set_interm = _c_first_T & c_first_1 & _T_3030 ? _c_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 760:72 763:28]
+  wire [19:0] _GEN_5 = {{15'd0}, c_sizes_set_interm}; // @[Monitor.scala 765:52]
+  wire [19:0] _c_sizes_set_T_1 = _GEN_5 << _c_sizes_set_T; // @[Monitor.scala 765:52]
+  wire [1:0] _T_3038 = inflight_1 >> io_in_c_bits_source; // @[Monitor.scala 766:26]
+  wire  _T_3040 = ~_T_3038[0]; // @[Monitor.scala 766:17]
+  wire [1:0] c_set = _c_first_T & c_first_1 & _T_3030 ? _c_set_wo_ready_T : 2'h0; // @[Monitor.scala 760:72 761:28]
+  wire [19:0] _GEN_77 = _c_first_T & c_first_1 & _T_3030 ? _c_sizes_set_T_1 : 20'h0; // @[Monitor.scala 760:72 765:28]
+  wire  _T_3044 = io_in_d_valid & d_first_2; // @[Monitor.scala 779:26]
+  wire  _T_3046 = io_in_d_valid & d_first_2 & _T_1277; // @[Monitor.scala 779:71]
+  wire [1:0] d_clr_wo_ready_1 = io_in_d_valid & d_first_2 & _T_1277 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 779:89 780:22]
+  wire [1:0] d_clr_1 = _d_first_T & d_first_2 & _T_1277 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 783:90 784:21]
+  wire [30:0] _GEN_81 = _d_first_T & d_first_2 & _T_1277 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 786:21]
+  wire  _same_cycle_resp_T_8 = io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:113]
+  wire  same_cycle_resp_1 = _T_3031 & io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:88]
+  wire [1:0] _T_3054 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire  _T_3056 = _T_3054[0] | same_cycle_resp_1; // @[Monitor.scala 791:49]
+  wire  _T_3060 = io_in_d_bits_size == io_in_c_bits_size; // @[Monitor.scala 793:36]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_3064 = _GEN_95 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire  _T_3073 = _T_3044 & c_first_1 & io_in_c_valid & _same_cycle_resp_T_8 & _T_1277; // @[Monitor.scala 799:116]
+  wire  _T_3075 = _T_3003 | io_in_c_ready; // @[Monitor.scala 800:32]
+  wire  _T_3079 = |c_set_wo_ready; // @[Monitor.scala 804:28]
+  wire  _T_3080 = c_set_wo_ready != d_clr_wo_ready_1; // @[Monitor.scala 805:31]
+  wire [1:0] _inflight_T_3 = inflight_1 | c_set; // @[Monitor.scala 809:35]
+  wire [1:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [1:0] _inflight_T_5 = _inflight_T_3 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [15:0] c_sizes_set = _GEN_77[15:0];
+  wire [15:0] _inflight_sizes_T_3 = inflight_sizes_1 | c_sizes_set; // @[Monitor.scala 811:41]
+  wire [15:0] d_sizes_clr_1 = _GEN_81[15:0];
+  wire [15:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [15:0] _inflight_sizes_T_5 = _inflight_sizes_T_3 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_3089 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  reg [3:0] inflight_2; // @[Monitor.scala 823:27]
+  reg [9:0] d_first_counter_3; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_3 = d_first_counter_3 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_3 = d_first_counter_3 == 10'h0; // @[Edges.scala 230:25]
+  wire  _T_3101 = io_in_d_bits_opcode[2] & ~io_in_d_bits_opcode[1]; // @[Edges.scala 70:40]
+  wire  _T_3102 = _d_first_T & d_first_3 & _T_3101; // @[Monitor.scala 829:38]
+  wire [3:0] _d_set_T = 4'h1 << io_in_d_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_3103 = inflight_2 >> io_in_d_bits_sink; // @[Monitor.scala 831:23]
+  wire  _T_3105 = ~_T_3103[0]; // @[Monitor.scala 831:14]
+  wire [3:0] d_set = _d_first_T & d_first_3 & _T_3101 ? _d_set_T : 4'h0; // @[Monitor.scala 829:72 830:13]
+  wire  _T_3109 = io_in_e_ready & io_in_e_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _e_clr_T = 4'h1 << io_in_e_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_3112 = d_set | inflight_2; // @[Monitor.scala 837:24]
+  wire [3:0] _T_3113 = _T_3112 >> io_in_e_bits_sink; // @[Monitor.scala 837:35]
+  wire [3:0] e_clr = _T_3109 ? _e_clr_T : 4'h0; // @[Monitor.scala 835:73 836:13]
+  wire [3:0] _inflight_T_6 = inflight_2 | d_set; // @[Monitor.scala 842:27]
+  wire [3:0] _inflight_T_7 = ~e_clr; // @[Monitor.scala 842:38]
+  wire [3:0] _inflight_T_8 = _inflight_T_6 & _inflight_T_7; // @[Monitor.scala 842:36]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      b_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (b_first_done) begin // @[Edges.scala 234:17]
+      if (b_first) begin // @[Edges.scala 235:21]
+        b_first_counter <= 10'h0;
+      end else begin
+        b_first_counter <= b_first_counter1;
+      end
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      opcode_2 <= io_in_b_bits_opcode; // @[Monitor.scala 420:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      param_2 <= io_in_b_bits_param; // @[Monitor.scala 421:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      size_2 <= io_in_b_bits_size; // @[Monitor.scala 422:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      source_2 <= io_in_b_bits_source; // @[Monitor.scala 423:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      address_1 <= io_in_b_bits_address; // @[Monitor.scala 424:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter <= c_first_beats1_decode;
+        end else begin
+          c_first_counter <= 10'h0;
+        end
+      end else begin
+        c_first_counter <= c_first_counter1;
+      end
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      opcode_3 <= io_in_c_bits_opcode; // @[Monitor.scala 525:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      param_3 <= io_in_c_bits_param; // @[Monitor.scala 526:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      size_3 <= io_in_c_bits_size; // @[Monitor.scala 527:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      source_3 <= io_in_c_bits_source; // @[Monitor.scala 528:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      address_2 <= io_in_c_bits_address; // @[Monitor.scala 529:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 2'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 8'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 16'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 2'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 16'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first_1) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter_1 <= c_first_beats1_decode;
+        end else begin
+          c_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        c_first_counter_1 <= c_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_c_first_T | _d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    if (reset) begin // @[Monitor.scala 823:27]
+      inflight_2 <= 4'h0; // @[Monitor.scala 823:27]
+    end else begin
+      inflight_2 <= _inflight_T_8; // @[Monitor.scala 842:14]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_3 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_3) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_3 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_3 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_3 <= d_first_counter1_3;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_130 & (io_in_a_valid & _T_24 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_24 & ~reset & ~_T_130) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_235 & (io_in_a_valid & _T_24 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_24 & ~reset & ~_T_235) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_24 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_24 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_24 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_24 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_24 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_24 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_249 & (io_in_a_valid & _T_24 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_24 & ~reset & ~_T_249) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_254 & (io_in_a_valid & _T_24 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_24 & ~reset & ~_T_254) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_130 & (io_in_a_valid & _T_262 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_262 & ~reset & ~_T_130) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_235 & (io_in_a_valid & _T_262 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_262 & ~reset & ~_T_235) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_262 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_262 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_262 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_262 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_262 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_262 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_249 & (io_in_a_valid & _T_262 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_262 & ~reset & ~_T_249) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_491 & (io_in_a_valid & _T_262 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_262 & ~reset & ~_T_491) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_254 & (io_in_a_valid & _T_262 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_262 & ~reset & ~_T_254) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_31 & (io_in_a_valid & _T_504 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_504 & ~reset & ~_T_31) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_615 & (io_in_a_valid & _T_504 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_504 & ~reset & ~_T_615) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_504 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_504 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_504 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_504 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_625 & (io_in_a_valid & _T_504 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_504 & ~reset & ~_T_625) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_629 & (io_in_a_valid & _T_504 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_504 & ~reset & ~_T_629) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_748 & (io_in_a_valid & _T_637 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_637 & ~reset & ~_T_748) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_637 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_637 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_637 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_637 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_625 & (io_in_a_valid & _T_637 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_637 & ~reset & ~_T_625) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_629 & (io_in_a_valid & _T_637 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_637 & ~reset & ~_T_629) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_877 & (io_in_a_valid & _T_766 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_766 & ~reset & ~_T_877) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_766 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_766 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_766 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_766 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_625 & (io_in_a_valid & _T_766 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_766 & ~reset & ~_T_625) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_893 & (io_in_a_valid & _T_766 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_766 & ~reset & ~_T_893) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1003 & (io_in_a_valid & _T_897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_897 & ~reset & ~_T_1003) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_897 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_897 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1013 & (io_in_a_valid & _T_897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_897 & ~reset & ~_T_1013) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_629 & (io_in_a_valid & _T_897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_897 & ~reset & ~_T_629) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1003 & (io_in_a_valid & _T_1021 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1021 & ~reset & ~_T_1003) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1021 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1021 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1021 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1021 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1137 & (io_in_a_valid & _T_1021 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1021 & ~reset & ~_T_1137) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_629 & (io_in_a_valid & _T_1021 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1021 & ~reset & ~_T_629) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1251 & (io_in_a_valid & _T_1145 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1145 & ~reset & ~_T_1251) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1145 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1145 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1145 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1145 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1261 & (io_in_a_valid & _T_1145 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1145 & ~reset & ~_T_1261) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_629 & (io_in_a_valid & _T_1145 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1145 & ~reset & ~_T_629) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1273 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1273) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1277 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1277 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1281 & (io_in_d_valid & _T_1277 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1277 & _T_2 & ~_T_1281) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1285 & (io_in_d_valid & _T_1277 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1277 & _T_2 & ~_T_1285) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1289 & (io_in_d_valid & _T_1277 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1277 & _T_2 & ~_T_1289) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1293 & (io_in_d_valid & _T_1277 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1277 & _T_2 & ~_T_1293) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1297 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1297 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1281 & (io_in_d_valid & _T_1297 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1297 & _T_2 & ~_T_1281) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1308 & (io_in_d_valid & _T_1297 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1297 & _T_2 & ~_T_1308) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1297 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1297 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1289 & (io_in_d_valid & _T_1297 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1297 & _T_2 & ~_T_1289) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1325 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1325 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1281 & (io_in_d_valid & _T_1325 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1325 & _T_2 & ~_T_1281) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1308 & (io_in_d_valid & _T_1325 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1325 & _T_2 & ~_T_1308) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1325 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1325 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1345 & (io_in_d_valid & _T_1325 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1325 & _T_2 & ~_T_1345) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1354 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1354 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1285 & (io_in_d_valid & _T_1354 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1354 & _T_2 & ~_T_1285) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1289 & (io_in_d_valid & _T_1354 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1354 & _T_2 & ~_T_1289) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1371 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1371 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1285 & (io_in_d_valid & _T_1371 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1371 & _T_2 & ~_T_1285) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1345 & (io_in_d_valid & _T_1371 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1371 & _T_2 & ~_T_1345) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1389 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1389 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1285 & (io_in_d_valid & _T_1389 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1389 & _T_2 & ~_T_1285) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1289 & (io_in_d_valid & _T_1389 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1389 & _T_2 & ~_T_1289) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1406 & (io_in_b_valid & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & ~reset & ~_T_1406) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel has invalid opcode (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1532 & (io_in_b_valid & _T_1430 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1430 & _T_2 & ~_T_1532) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Probe type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok & (io_in_b_valid & _T_1430 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1430 & _T_2 & ~address_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_1 & (io_in_b_valid & _T_1430 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1430 & _T_2 & ~is_aligned_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1545 & (io_in_b_valid & _T_1430 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1430 & _T_2 & ~_T_1545) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries invalid cap param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1549 & (io_in_b_valid & _T_1430 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1430 & _T_2 & ~_T_1549) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1553 & (io_in_b_valid & _T_1430 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1430 & _T_2 & ~_T_1553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe is corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1557 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1557 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Get type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1538 & (io_in_b_valid & _T_1557 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1557 & ~reset & _T_1538) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1544 & (io_in_b_valid & _T_1557 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1557 & ~reset & _T_1544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1666 & (io_in_b_valid & _T_1557 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1557 & ~reset & ~_T_1666) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1552 & (io_in_b_valid & _T_1557 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1557 & ~reset & _T_1552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1556 & (io_in_b_valid & _T_1557 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1557 & ~reset & _T_1556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get is corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1678 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1678 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries PutFull type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1538 & (io_in_b_valid & _T_1678 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1678 & ~reset & _T_1538) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1544 & (io_in_b_valid & _T_1678 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1678 & ~reset & _T_1544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1666 & (io_in_b_valid & _T_1678 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1678 & ~reset & ~_T_1666) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1552 & (io_in_b_valid & _T_1678 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1678 & ~reset & _T_1552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1795 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1795 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1538 & (io_in_b_valid & _T_1795 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1795 & ~reset & _T_1538) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1544 & (io_in_b_valid & _T_1795 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1795 & ~reset & _T_1544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1666 & (io_in_b_valid & _T_1795 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1795 & ~reset & ~_T_1666) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1910 & (io_in_b_valid & _T_1795 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1795 & ~reset & ~_T_1910) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1914 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1914 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Arithmetic type unsupported by master (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1538 & (io_in_b_valid & _T_1914 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1914 & ~reset & _T_1538) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Arithmetic carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1544 & (io_in_b_valid & _T_1914 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1914 & ~reset & _T_1544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Arithmetic address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1552 & (io_in_b_valid & _T_1914 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1914 & ~reset & _T_1552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Arithmetic contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2031 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2031 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Logical type unsupported by client (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1538 & (io_in_b_valid & _T_2031 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2031 & ~reset & _T_1538) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Logical carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1544 & (io_in_b_valid & _T_2031 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2031 & ~reset & _T_1544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Logical address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1552 & (io_in_b_valid & _T_2031 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2031 & ~reset & _T_1552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Logical contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2148 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2148 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Hint type unsupported by client (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1538 & (io_in_b_valid & _T_2148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2148 & ~reset & _T_1538) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1544 & (io_in_b_valid & _T_2148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2148 & ~reset & _T_1544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1552 & (io_in_b_valid & _T_2148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2148 & ~reset & _T_1552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint contains invalid mask (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1556 & (io_in_b_valid & _T_2148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2148 & ~reset & _T_1556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint is corrupt (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2289 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2289 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2296 & (io_in_c_valid & _T_2289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2289 & ~reset & ~_T_2296) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2289 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2303 & (io_in_c_valid & _T_2289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2289 & ~reset & ~_T_2303) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid report param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2311 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2311 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2296 & (io_in_c_valid & _T_2311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2311 & ~reset & ~_T_2296) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2311 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2303 & (io_in_c_valid & _T_2311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2311 & ~reset & ~_T_2303) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid report param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2435 & (io_in_c_valid & _T_2329 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2329 & ~reset & ~_T_2435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release type unsupported by manager (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2540 & (io_in_c_valid & _T_2329 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2329 & ~reset & ~_T_2540) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2329 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2329 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2296 & (io_in_c_valid & _T_2329 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2329 & ~reset & ~_T_2296) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2329 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2329 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2303 & (io_in_c_valid & _T_2329 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2329 & ~reset & ~_T_2303) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid report param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2435 & (io_in_c_valid & _T_2562 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2562 & ~reset & ~_T_2435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries ReleaseData type unsupported by manager (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2540 & (io_in_c_valid & _T_2562 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2562 & ~reset & ~_T_2540) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2562 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2562 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2296 & (io_in_c_valid & _T_2562 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2562 & ~reset & ~_T_2296) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData smaller than a beat (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2562 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2562 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2303 & (io_in_c_valid & _T_2562 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2562 & ~reset & ~_T_2303) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid report param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2791 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2791 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2791 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2791 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2791 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2791 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2801 & (io_in_c_valid & _T_2791 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2791 & ~reset & ~_T_2801) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2809 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2809 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2809 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2809 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2809 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2809 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2801 & (io_in_c_valid & _T_2809 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2809 & ~reset & ~_T_2801) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2823 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2823 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries unmanaged address (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2823 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2823 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2823 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2823 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck address not aligned to size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2801 & (io_in_c_valid & _T_2823 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2823 & ~reset & ~_T_2801) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid param (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2846 & (_T_2845 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2845 & ~reset & ~_T_2846) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2850 & (_T_2845 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2845 & ~reset & ~_T_2850) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2854 & (_T_2845 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2845 & ~reset & ~_T_2854) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2858 & (_T_2845 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2845 & ~reset & ~_T_2858) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2862 & (_T_2845 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2845 & ~reset & ~_T_2862) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2870 & (_T_2869 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2869 & _T_2 & ~_T_2870) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2874 & (_T_2869 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2869 & _T_2 & ~_T_2874) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2878 & (_T_2869 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2869 & _T_2 & ~_T_2878) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2882 & (_T_2869 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2869 & _T_2 & ~_T_2882) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2886 & (_T_2869 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2869 & _T_2 & ~_T_2886) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2890 & (_T_2869 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2869 & _T_2 & ~_T_2890) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2898 & (_T_2897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2897 & ~reset & ~_T_2898) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel opcode changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2902 & (_T_2897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2897 & ~reset & ~_T_2902) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel param changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2906 & (_T_2897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2897 & ~reset & ~_T_2906) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel size changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2910 & (_T_2897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2897 & ~reset & ~_T_2910) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel source changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2914 & (_T_2897 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2897 & ~reset & ~_T_2914) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel addresss changed with multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2922 & (_T_2921 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2921 & ~reset & ~_T_2922) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel opcode changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2926 & (_T_2921 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2921 & ~reset & ~_T_2926) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel param changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2930 & (_T_2921 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2921 & ~reset & ~_T_2930) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel size changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2934 & (_T_2921 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2921 & ~reset & ~_T_2934) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel source changed within multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2938 & (_T_2921 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2921 & ~reset & ~_T_2938) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel address changed with multibeat operation (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2951 & (_T_2947 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2947 & ~reset & ~_T_2951) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2970 & (_T_2958 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2958 & _T_2 & ~_T_2970) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2976 & (_T_2958 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2958 & same_cycle_resp & _T_2 & ~_T_2976) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2980 & (_T_2958 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2958 & same_cycle_resp & _T_2 & ~_T_2980) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2988 & (_T_2958 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2958 & ~same_cycle_resp & _T_2 & ~_T_2988) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2992 & (_T_2958 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2958 & ~same_cycle_resp & _T_2 & ~_T_2992) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3004 & (_T_3002 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3002 & _T_2 & ~_T_3004) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3011 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_3011) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 3 (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3020 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_3020) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3040 & (_T_3037 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3037 & ~reset & ~_T_3040) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel re-used a source ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3056 & (_T_3046 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3046 & _T_2 & ~_T_3056) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3060 & (_T_3046 & same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3046 & same_cycle_resp_1 & _T_2 & ~_T_3060) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3064 & (_T_3046 & ~same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3046 & ~same_cycle_resp_1 & _T_2 & ~_T_3064) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3075 & (_T_3073 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3073 & _T_2 & ~_T_3075) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3080 & (_T_3079 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3079 & _T_2 & ~_T_3080) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' and 'D' concurrent, despite minlatency 3 (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3089 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_3089) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3105 & (_T_3102 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3102 & _T_2 & ~_T_3105) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel re-used a sink ID (connected at HellaCache.scala:271:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3113[0] & (_T_3109 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3109 & ~reset & ~_T_3113[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'E' channel acknowledged for nothing inflight (connected at HellaCache.scala:271:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[1:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  b_first_counter = _RAND_13[9:0];
+  _RAND_14 = {1{`RANDOM}};
+  opcode_2 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  param_2 = _RAND_15[1:0];
+  _RAND_16 = {1{`RANDOM}};
+  size_2 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  source_2 = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  address_1 = _RAND_18[30:0];
+  _RAND_19 = {1{`RANDOM}};
+  c_first_counter = _RAND_19[9:0];
+  _RAND_20 = {1{`RANDOM}};
+  opcode_3 = _RAND_20[2:0];
+  _RAND_21 = {1{`RANDOM}};
+  param_3 = _RAND_21[2:0];
+  _RAND_22 = {1{`RANDOM}};
+  size_3 = _RAND_22[3:0];
+  _RAND_23 = {1{`RANDOM}};
+  source_3 = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  address_2 = _RAND_24[30:0];
+  _RAND_25 = {1{`RANDOM}};
+  inflight = _RAND_25[1:0];
+  _RAND_26 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_26[7:0];
+  _RAND_27 = {1{`RANDOM}};
+  inflight_sizes = _RAND_27[15:0];
+  _RAND_28 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_28[9:0];
+  _RAND_29 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_29[9:0];
+  _RAND_30 = {1{`RANDOM}};
+  watchdog = _RAND_30[31:0];
+  _RAND_31 = {1{`RANDOM}};
+  inflight_1 = _RAND_31[1:0];
+  _RAND_32 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_32[15:0];
+  _RAND_33 = {1{`RANDOM}};
+  c_first_counter_1 = _RAND_33[9:0];
+  _RAND_34 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_34[9:0];
+  _RAND_35 = {1{`RANDOM}};
+  watchdog_1 = _RAND_35[31:0];
+  _RAND_36 = {1{`RANDOM}};
+  inflight_2 = _RAND_36[3:0];
+  _RAND_37 = {1{`RANDOM}};
+  d_first_counter_3 = _RAND_37[9:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_44(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [30:0] io_in_a_bits_address,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & 31'h3f; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire [31:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_26 = $signed(_T_7) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_28 = io_in_a_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_29 = {1'b0,$signed(_T_28)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_31 = $signed(_T_29) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_32 = $signed(_T_31) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_33 = io_in_a_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_36 = $signed(_T_34) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_38 = io_in_a_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_39 = {1'b0,$signed(_T_38)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_41 = $signed(_T_39) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_42 = $signed(_T_41) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_43 = io_in_a_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_44 = {1'b0,$signed(_T_43)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_46 = $signed(_T_44) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_47 = $signed(_T_46) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_48 = io_in_a_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_51 = $signed(_T_49) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_53 = io_in_a_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_54 = {1'b0,$signed(_T_53)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_56 = $signed(_T_54) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_57 = $signed(_T_56) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_58 = io_in_a_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_59 = {1'b0,$signed(_T_58)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_61 = $signed(_T_59) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_62 = $signed(_T_61) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_63 = io_in_a_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_64 = {1'b0,$signed(_T_63)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_66 = $signed(_T_64) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_67 = $signed(_T_66) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_68 = io_in_a_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_69 = {1'b0,$signed(_T_68)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_71 = $signed(_T_69) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_72 = $signed(_T_71) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_73 = io_in_a_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_74 = {1'b0,$signed(_T_73)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_76 = $signed(_T_74) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_77 = $signed(_T_76) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_78 = io_in_a_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_79 = {1'b0,$signed(_T_78)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_81 = $signed(_T_79) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_82 = $signed(_T_81) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_83 = io_in_a_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_84 = {1'b0,$signed(_T_83)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_86 = $signed(_T_84) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_87 = $signed(_T_86) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_88 = io_in_a_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_89 = {1'b0,$signed(_T_88)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_91 = $signed(_T_89) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_92 = $signed(_T_91) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_111 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_112 = {1'b0,$signed(_T_111)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_114 = $signed(_T_112) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_115 = $signed(_T_114) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_585 = _T_27 | _T_37 | _T_42 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_77 | _T_82 | _T_87 | _T_92
+     | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_588 = _T_32 | _T_585; // @[Parameters.scala 672:30]
+  wire  _T_1236 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_1240 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1244 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1248 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1252 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1256 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1260 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1271 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1275 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1288 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1308 = _T_1256 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1317 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1334 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1352 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1382 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1399 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1406 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1407 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1411 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1415 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1423 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1427 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg  inflight; // @[Monitor.scala 611:27]
+  reg [3:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [7:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_71 = {{12'd0}, inflight_opcodes}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_71 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{8'd0}, inflight_sizes}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_73 & _a_size_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1433 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [1:0] _GEN_15 = io_in_a_valid & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1436 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? 4'h9 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [18:0] _a_opcodes_set_T_1 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [4:0] a_sizes_set_interm = a_first_done & a_first_1 ? 5'hd : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [19:0] _a_sizes_set_T_1 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire  _T_1440 = ~inflight; // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = a_first_done & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1444 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1446 = ~_T_1240; // @[Monitor.scala 671:74]
+  wire  _T_1447 = io_in_d_valid & d_first_1 & ~_T_1240; // @[Monitor.scala 671:71]
+  wire [1:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1240 ? 2'h1 : 2'h0; // @[Monitor.scala 671:90 672:22]
+  wire [30:0] _d_opcodes_clr_T_5 = {{15'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [30:0] _d_sizes_clr_T_5 = {{15'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [1:0] _GEN_22 = _d_first_T & d_first_1 & _T_1446 ? 2'h1 : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1446 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire [30:0] _GEN_24 = _d_first_T & d_first_1 & _T_1446 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _T_1459 = inflight | _T_1433; // @[Monitor.scala 682:49]
+  wire  _T_1465 = _T_1334 | _T_1334; // @[Monitor.scala 685:77]
+  wire  _T_1469 = 4'h6 == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_1476 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1477 = io_in_d_bits_opcode == _GEN_48 | _T_1476; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_75 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1481 = _GEN_75 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1491 = _T_1444 & a_first_1 & io_in_a_valid & _T_1446; // @[Monitor.scala 694:116]
+  wire  _T_1493 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  a_set_wo_ready = _GEN_15[0];
+  wire  d_clr_wo_ready = _GEN_21[0];
+  wire  _T_1500 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire  a_set = _GEN_16[0];
+  wire  d_clr = _GEN_22[0];
+  wire [3:0] a_opcodes_set = _GEN_19[3:0];
+  wire [3:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [3:0] d_opcodes_clr = _GEN_23[3:0];
+  wire [3:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [3:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [7:0] a_sizes_set = _GEN_20[7:0];
+  wire [7:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [7:0] d_sizes_clr = _GEN_24[7:0];
+  wire [7:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [7:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_1509 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [7:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [15:0] _GEN_78 = {{8'd0}, inflight_sizes_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_78 & _a_size_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1535 = io_in_d_valid & d_first_2 & _T_1240; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1240 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 786:21]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_1553 = _GEN_75 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [7:0] d_sizes_clr_1 = _GEN_69[7:0];
+  wire [7:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [7:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 10'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 1'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= (inflight | a_set) & ~d_clr; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 4'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 8'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 10'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 8'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_588 & (io_in_a_valid & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & ~reset & ~_T_588) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Frontend.scala:372:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Frontend.scala:372:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1236 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1236) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1244 & (io_in_d_valid & _T_1240 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1240 & _T_2 & ~_T_1244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1248 & (io_in_d_valid & _T_1240 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1240 & _T_2 & ~_T_1248) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1252 & (io_in_d_valid & _T_1240 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1240 & _T_2 & ~_T_1252) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1256 & (io_in_d_valid & _T_1240 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1240 & _T_2 & ~_T_1256) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1244 & (io_in_d_valid & _T_1260 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1260 & _T_2 & ~_T_1244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1271 & (io_in_d_valid & _T_1260 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1260 & _T_2 & ~_T_1271) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1275 & (io_in_d_valid & _T_1260 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1260 & _T_2 & ~_T_1275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1252 & (io_in_d_valid & _T_1260 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1260 & _T_2 & ~_T_1252) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1244 & (io_in_d_valid & _T_1288 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1288 & _T_2 & ~_T_1244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1271 & (io_in_d_valid & _T_1288 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1288 & _T_2 & ~_T_1271) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1275 & (io_in_d_valid & _T_1288 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1288 & _T_2 & ~_T_1275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1308 & (io_in_d_valid & _T_1288 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1288 & _T_2 & ~_T_1308) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1248 & (io_in_d_valid & _T_1317 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1317 & _T_2 & ~_T_1248) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1252 & (io_in_d_valid & _T_1317 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1317 & _T_2 & ~_T_1252) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1248 & (io_in_d_valid & _T_1334 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1334 & _T_2 & ~_T_1248) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1308 & (io_in_d_valid & _T_1334 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1334 & _T_2 & ~_T_1308) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1248 & (io_in_d_valid & _T_1352 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1352 & _T_2 & ~_T_1248) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1252 & (io_in_d_valid & _T_1352 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1352 & _T_2 & ~_T_1252) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1399 & (_T_1382 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1382 & ~reset & ~_T_1399) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Frontend.scala:372:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1407 & (_T_1406 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1406 & _T_2 & ~_T_1407) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1411 & (_T_1406 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1406 & _T_2 & ~_T_1411) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1415 & (_T_1406 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1406 & _T_2 & ~_T_1415) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1423 & (_T_1406 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1406 & _T_2 & ~_T_1423) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1427 & (_T_1406 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1406 & _T_2 & ~_T_1427) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1440 & (_T_1436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1436 & ~reset & ~_T_1440) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Frontend.scala:372:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1459 & (_T_1447 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1447 & _T_2 & ~_T_1459) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1465 & (_T_1447 & _T_1433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1447 & _T_1433 & _T_2 & ~_T_1465) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1469 & (_T_1447 & _T_1433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1447 & _T_1433 & _T_2 & ~_T_1469) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1477 & (_T_1447 & ~_T_1433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1447 & ~_T_1433 & _T_2 & ~_T_1477) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1481 & (_T_1447 & ~_T_1433 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1447 & ~_T_1433 & _T_2 & ~_T_1481) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1493 & (_T_1491 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1491 & _T_2 & ~_T_1493) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1500 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_1500) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 3 (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1509 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_1509) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Frontend.scala:372:21)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1535 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1535 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1553 & (_T_1535 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1535 & _T_2 & ~_T_1553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Frontend.scala:372:21)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  address = _RAND_1[30:0];
+  _RAND_2 = {1{`RANDOM}};
+  d_first_counter = _RAND_2[9:0];
+  _RAND_3 = {1{`RANDOM}};
+  opcode_1 = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  param_1 = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  size_1 = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  sink = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  denied = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  inflight = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_sizes = _RAND_10[7:0];
+  _RAND_11 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_11[9:0];
+  _RAND_12 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_12[9:0];
+  _RAND_13 = {1{`RANDOM}};
+  watchdog = _RAND_13[31:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_14[7:0];
+  _RAND_15 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_15[9:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLXbar_7(
+  input         clock,
+  input         reset,
+  output        auto_in_1_a_ready,
+  input         auto_in_1_a_valid,
+  input  [30:0] auto_in_1_a_bits_address,
+  input         auto_in_1_d_ready,
+  output        auto_in_1_d_valid,
+  output [2:0]  auto_in_1_d_bits_opcode,
+  output [3:0]  auto_in_1_d_bits_size,
+  output [31:0] auto_in_1_d_bits_data,
+  output        auto_in_1_d_bits_corrupt,
+  output        auto_in_0_a_ready,
+  input         auto_in_0_a_valid,
+  input  [2:0]  auto_in_0_a_bits_opcode,
+  input  [2:0]  auto_in_0_a_bits_param,
+  input  [3:0]  auto_in_0_a_bits_size,
+  input         auto_in_0_a_bits_source,
+  input  [30:0] auto_in_0_a_bits_address,
+  input  [3:0]  auto_in_0_a_bits_mask,
+  input  [31:0] auto_in_0_a_bits_data,
+  input         auto_in_0_b_ready,
+  output        auto_in_0_b_valid,
+  output [1:0]  auto_in_0_b_bits_param,
+  output [3:0]  auto_in_0_b_bits_size,
+  output        auto_in_0_b_bits_source,
+  output [30:0] auto_in_0_b_bits_address,
+  output        auto_in_0_c_ready,
+  input         auto_in_0_c_valid,
+  input  [2:0]  auto_in_0_c_bits_opcode,
+  input  [2:0]  auto_in_0_c_bits_param,
+  input  [3:0]  auto_in_0_c_bits_size,
+  input         auto_in_0_c_bits_source,
+  input  [30:0] auto_in_0_c_bits_address,
+  input  [31:0] auto_in_0_c_bits_data,
+  input         auto_in_0_d_ready,
+  output        auto_in_0_d_valid,
+  output [2:0]  auto_in_0_d_bits_opcode,
+  output [1:0]  auto_in_0_d_bits_param,
+  output [3:0]  auto_in_0_d_bits_size,
+  output        auto_in_0_d_bits_source,
+  output [1:0]  auto_in_0_d_bits_sink,
+  output        auto_in_0_d_bits_denied,
+  output [31:0] auto_in_0_d_bits_data,
+  output        auto_in_0_e_ready,
+  input         auto_in_0_e_valid,
+  input  [1:0]  auto_in_0_e_bits_sink,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_b_ready,
+  input         auto_out_b_valid,
+  input  [2:0]  auto_out_b_bits_opcode,
+  input  [1:0]  auto_out_b_bits_param,
+  input  [3:0]  auto_out_b_bits_size,
+  input  [1:0]  auto_out_b_bits_source,
+  input  [30:0] auto_out_b_bits_address,
+  input  [3:0]  auto_out_b_bits_mask,
+  input         auto_out_b_bits_corrupt,
+  input         auto_out_c_ready,
+  output        auto_out_c_valid,
+  output [2:0]  auto_out_c_bits_opcode,
+  output [2:0]  auto_out_c_bits_param,
+  output [3:0]  auto_out_c_bits_size,
+  output [1:0]  auto_out_c_bits_source,
+  output [30:0] auto_out_c_bits_address,
+  output [31:0] auto_out_c_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [1:0]  auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt,
+  input         auto_out_e_ready,
+  output        auto_out_e_valid,
+  output [1:0]  auto_out_e_bits_sink
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_b_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_b_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_b_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_b_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_b_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_c_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_c_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_e_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_e_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_e_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_1_clock; // @[Nodes.scala 24:25]
+  wire  monitor_1_reset; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_1_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_1_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_1_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_1_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  requestBOI_0_0 = ~auto_out_b_bits_source[1]; // @[Parameters.scala 54:32]
+  wire  requestDOI_0_0 = ~auto_out_d_bits_source[1]; // @[Parameters.scala 54:32]
+  wire  requestDOI_0_1 = auto_out_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire [26:0] _beatsAI_decode_T_1 = 27'hfff << auto_in_0_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] _beatsAI_decode_T_3 = ~_beatsAI_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] beatsAI_decode = _beatsAI_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  beatsAI_opdata = ~auto_in_0_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 10'h0; // @[Arbiter.scala 88:28]
+  wire  latch = idle & auto_out_a_ready; // @[Arbiter.scala 89:24]
+  wire [1:0] readys_valid = {auto_in_1_a_valid,auto_in_0_a_valid}; // @[Cat.scala 31:58]
+  wire  _readys_T_3 = ~reset; // @[Arbiter.scala 22:12]
+  reg [1:0] readys_mask; // @[Arbiter.scala 23:23]
+  wire [1:0] _readys_filter_T = ~readys_mask; // @[Arbiter.scala 24:30]
+  wire [1:0] _readys_filter_T_1 = readys_valid & _readys_filter_T; // @[Arbiter.scala 24:28]
+  wire [3:0] readys_filter = {_readys_filter_T_1,auto_in_1_a_valid,auto_in_0_a_valid}; // @[Cat.scala 31:58]
+  wire [3:0] _GEN_1 = {{1'd0}, readys_filter[3:1]}; // @[package.scala 253:43]
+  wire [3:0] _readys_unready_T_1 = readys_filter | _GEN_1; // @[package.scala 253:43]
+  wire [3:0] _readys_unready_T_4 = {readys_mask, 2'h0}; // @[Arbiter.scala 25:66]
+  wire [3:0] _GEN_2 = {{1'd0}, _readys_unready_T_1[3:1]}; // @[Arbiter.scala 25:58]
+  wire [3:0] readys_unready = _GEN_2 | _readys_unready_T_4; // @[Arbiter.scala 25:58]
+  wire [1:0] _readys_readys_T_2 = readys_unready[3:2] & readys_unready[1:0]; // @[Arbiter.scala 26:39]
+  wire [1:0] readys_readys = ~_readys_readys_T_2; // @[Arbiter.scala 26:18]
+  wire [1:0] _readys_mask_T = readys_readys & readys_valid; // @[Arbiter.scala 28:29]
+  wire [2:0] _readys_mask_T_1 = {_readys_mask_T, 1'h0}; // @[package.scala 244:48]
+  wire [1:0] _readys_mask_T_3 = _readys_mask_T | _readys_mask_T_1[1:0]; // @[package.scala 244:43]
+  wire  readys_0 = readys_readys[0]; // @[Arbiter.scala 95:86]
+  wire  readys_1 = readys_readys[1]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_0 = readys_0 & auto_in_0_a_valid; // @[Arbiter.scala 97:79]
+  wire  earlyWinner_1 = readys_1 & auto_in_1_a_valid; // @[Arbiter.scala 97:79]
+  wire  _prefixOR_T = earlyWinner_0 | earlyWinner_1; // @[Arbiter.scala 104:53]
+  wire  _T_11 = auto_in_0_a_valid | auto_in_1_a_valid; // @[Arbiter.scala 107:36]
+  wire  _T_12 = ~(auto_in_0_a_valid | auto_in_1_a_valid); // @[Arbiter.scala 107:15]
+  reg  state_0; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_0 = idle ? earlyWinner_0 : state_0; // @[Arbiter.scala 117:30]
+  reg  state_1; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1 = idle ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  wire  _out_0_a_earlyValid_T_3 = state_0 & auto_in_0_a_valid | state_1 & auto_in_1_a_valid; // @[Mux.scala 27:73]
+  wire  out_2_0_a_earlyValid = idle ? _T_11 : _out_0_a_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_out_a_ready & out_2_0_a_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [9:0] _GEN_3 = {{9'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [9:0] _beatsLeft_T_4 = beatsLeft - _GEN_3; // @[Arbiter.scala 113:52]
+  wire  allowed_0 = idle ? readys_0 : state_0; // @[Arbiter.scala 121:24]
+  wire  allowed_1 = idle ? readys_1 : state_1; // @[Arbiter.scala 121:24]
+  wire [3:0] _T_31 = muxStateEarly_0 ? auto_in_0_a_bits_mask : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_32 = muxStateEarly_1 ? 4'hf : 4'h0; // @[Mux.scala 27:73]
+  wire [30:0] _T_34 = muxStateEarly_0 ? auto_in_0_a_bits_address : 31'h0; // @[Mux.scala 27:73]
+  wire [30:0] _T_35 = muxStateEarly_1 ? auto_in_1_a_bits_address : 31'h0; // @[Mux.scala 27:73]
+  wire [1:0] in_0_a_bits_source = {{1'd0}, auto_in_0_a_bits_source}; // @[Xbar.scala 231:18 237:29]
+  wire [1:0] _T_37 = muxStateEarly_0 ? in_0_a_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_38 = muxStateEarly_1 ? 2'h2 : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_40 = muxStateEarly_0 ? auto_in_0_a_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_41 = muxStateEarly_1 ? 4'h6 : 4'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_46 = muxStateEarly_0 ? auto_in_0_a_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_47 = muxStateEarly_1 ? 3'h4 : 3'h0; // @[Mux.scala 27:73]
+  TLMonitor_43 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_b_ready(monitor_io_in_b_ready),
+    .io_in_b_valid(monitor_io_in_b_valid),
+    .io_in_b_bits_opcode(monitor_io_in_b_bits_opcode),
+    .io_in_b_bits_param(monitor_io_in_b_bits_param),
+    .io_in_b_bits_size(monitor_io_in_b_bits_size),
+    .io_in_b_bits_source(monitor_io_in_b_bits_source),
+    .io_in_b_bits_address(monitor_io_in_b_bits_address),
+    .io_in_b_bits_mask(monitor_io_in_b_bits_mask),
+    .io_in_b_bits_corrupt(monitor_io_in_b_bits_corrupt),
+    .io_in_c_ready(monitor_io_in_c_ready),
+    .io_in_c_valid(monitor_io_in_c_valid),
+    .io_in_c_bits_opcode(monitor_io_in_c_bits_opcode),
+    .io_in_c_bits_param(monitor_io_in_c_bits_param),
+    .io_in_c_bits_size(monitor_io_in_c_bits_size),
+    .io_in_c_bits_source(monitor_io_in_c_bits_source),
+    .io_in_c_bits_address(monitor_io_in_c_bits_address),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt),
+    .io_in_e_ready(monitor_io_in_e_ready),
+    .io_in_e_valid(monitor_io_in_e_valid),
+    .io_in_e_bits_sink(monitor_io_in_e_bits_sink)
+  );
+  TLMonitor_44 monitor_1 ( // @[Nodes.scala 24:25]
+    .clock(monitor_1_clock),
+    .reset(monitor_1_reset),
+    .io_in_a_ready(monitor_1_io_in_a_ready),
+    .io_in_a_valid(monitor_1_io_in_a_valid),
+    .io_in_a_bits_address(monitor_1_io_in_a_bits_address),
+    .io_in_d_ready(monitor_1_io_in_d_ready),
+    .io_in_d_valid(monitor_1_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_1_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_1_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_1_io_in_d_bits_size),
+    .io_in_d_bits_sink(monitor_1_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_1_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_1_io_in_d_bits_corrupt)
+  );
+  assign auto_in_1_a_ready = auto_out_a_ready & allowed_1; // @[Arbiter.scala 123:31]
+  assign auto_in_1_d_valid = auto_out_d_valid & requestDOI_0_1; // @[Xbar.scala 179:40]
+  assign auto_in_1_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_a_ready = auto_out_a_ready & allowed_0; // @[Arbiter.scala 123:31]
+  assign auto_in_0_b_valid = auto_out_b_valid & requestBOI_0_0; // @[Xbar.scala 179:40]
+  assign auto_in_0_b_bits_param = auto_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_b_bits_size = auto_out_b_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_b_bits_source = auto_out_b_bits_source[0]; // @[Xbar.scala 228:69]
+  assign auto_in_0_b_bits_address = auto_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_c_ready = auto_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_valid = auto_out_d_valid & requestDOI_0_0; // @[Xbar.scala 179:40]
+  assign auto_in_0_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_source = auto_out_d_bits_source[0]; // @[Xbar.scala 228:69]
+  assign auto_in_0_d_bits_sink = auto_out_d_bits_sink; // @[Xbar.scala 323:53]
+  assign auto_in_0_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_e_ready = auto_out_e_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = idle ? _T_11 : _out_0_a_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_out_a_bits_opcode = _T_46 | _T_47; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_param = muxStateEarly_0 ? auto_in_0_a_bits_param : 3'h0; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_size = _T_40 | _T_41; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_source = _T_37 | _T_38; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_address = _T_34 | _T_35; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_mask = _T_31 | _T_32; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_data = muxStateEarly_0 ? auto_in_0_a_bits_data : 32'h0; // @[Mux.scala 27:73]
+  assign auto_out_b_ready = requestBOI_0_0 & auto_in_0_b_ready; // @[Mux.scala 27:73]
+  assign auto_out_c_valid = auto_in_0_c_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_c_bits_opcode = auto_in_0_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_param = auto_in_0_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_size = auto_in_0_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_source = {{1'd0}, auto_in_0_c_bits_source}; // @[Xbar.scala 231:18 259:29]
+  assign auto_out_c_bits_address = auto_in_0_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_data = auto_in_0_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = requestDOI_0_0 & auto_in_0_d_ready | requestDOI_0_1 & auto_in_1_d_ready; // @[Mux.scala 27:73]
+  assign auto_out_e_valid = auto_in_0_e_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_e_bits_sink = auto_in_0_e_bits_sink; // @[Xbar.scala 228:69]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_out_a_ready & allowed_0; // @[Arbiter.scala 123:31]
+  assign monitor_io_in_a_valid = auto_in_0_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_0_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_0_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_0_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_0_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_0_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_0_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_ready = auto_in_0_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_valid = auto_out_b_valid & requestBOI_0_0; // @[Xbar.scala 179:40]
+  assign monitor_io_in_b_bits_opcode = auto_out_b_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_b_bits_param = auto_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_b_bits_size = auto_out_b_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_b_bits_source = auto_out_b_bits_source[0]; // @[Xbar.scala 228:69]
+  assign monitor_io_in_b_bits_address = auto_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_b_bits_mask = auto_out_b_bits_mask; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_b_bits_corrupt = auto_out_b_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_c_ready = auto_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_c_valid = auto_in_0_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_opcode = auto_in_0_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_param = auto_in_0_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_size = auto_in_0_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_source = auto_in_0_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_address = auto_in_0_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_0_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_out_d_valid & requestDOI_0_0; // @[Xbar.scala 179:40]
+  assign monitor_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_source = auto_out_d_bits_source[0]; // @[Xbar.scala 228:69]
+  assign monitor_io_in_d_bits_sink = auto_out_d_bits_sink; // @[Xbar.scala 323:53]
+  assign monitor_io_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_e_ready = auto_out_e_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_e_valid = auto_in_0_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_e_bits_sink = auto_in_0_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_clock = clock;
+  assign monitor_1_reset = reset;
+  assign monitor_1_io_in_a_ready = auto_out_a_ready & allowed_1; // @[Arbiter.scala 123:31]
+  assign monitor_1_io_in_a_valid = auto_in_1_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_address = auto_in_1_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_d_ready = auto_in_1_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_d_valid = auto_out_d_valid & requestDOI_0_1; // @[Xbar.scala 179:40]
+  assign monitor_1_io_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_sink = auto_out_d_bits_sink; // @[Xbar.scala 323:53]
+  assign monitor_1_io_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 10'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      if (earlyWinner_0) begin // @[Arbiter.scala 111:73]
+        if (beatsAI_opdata) begin // @[Edges.scala 220:14]
+          beatsLeft <= beatsAI_decode;
+        end else begin
+          beatsLeft <= 10'h0;
+        end
+      end else begin
+        beatsLeft <= 10'h0;
+      end
+    end else begin
+      beatsLeft <= _beatsLeft_T_4;
+    end
+    if (reset) begin // @[Arbiter.scala 23:23]
+      readys_mask <= 2'h3; // @[Arbiter.scala 23:23]
+    end else if (latch & |readys_valid) begin // @[Arbiter.scala 27:32]
+      readys_mask <= _readys_mask_T_3; // @[Arbiter.scala 28:12]
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_0 <= earlyWinner_0;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_1 <= earlyWinner_1;
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~earlyWinner_0 | ~earlyWinner_1) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(~earlyWinner_0 | ~earlyWinner_1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(auto_in_0_a_valid | auto_in_1_a_valid) | _prefixOR_T) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(~(auto_in_0_a_valid | auto_in_1_a_valid) | _prefixOR_T)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_12 | _T_11) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(_T_12 | _T_11)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  beatsLeft = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  readys_mask = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  state_0 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  state_1 = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLXbar_8(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [27:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [27:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Xbar.scala 228:69]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[ReadyValidCancel.scala 21:38]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Xbar.scala 237:55]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module IntXbar_1(
+  input   auto_int_in_3_0,
+  input   auto_int_in_2_0,
+  input   auto_int_in_1_0,
+  input   auto_int_in_1_1,
+  input   auto_int_in_0_0,
+  output  auto_int_out_0,
+  output  auto_int_out_1,
+  output  auto_int_out_2,
+  output  auto_int_out_3,
+  output  auto_int_out_4
+);
+  assign auto_int_out_0 = auto_int_in_0_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_1 = auto_int_in_1_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_2 = auto_int_in_1_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_3 = auto_int_in_2_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_4 = auto_int_in_3_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module BundleBridgeNexus_6(
+  input   auto_in,
+  output  auto_out_0
+);
+  assign auto_out_0 = auto_in; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module PMPChecker(
+  input  [1:0]  io_prv,
+  input         io_pmp_0_cfg_l,
+  input  [1:0]  io_pmp_0_cfg_a,
+  input         io_pmp_0_cfg_x,
+  input         io_pmp_0_cfg_w,
+  input         io_pmp_0_cfg_r,
+  input  [28:0] io_pmp_0_addr,
+  input  [30:0] io_pmp_0_mask,
+  input         io_pmp_1_cfg_l,
+  input  [1:0]  io_pmp_1_cfg_a,
+  input         io_pmp_1_cfg_x,
+  input         io_pmp_1_cfg_w,
+  input         io_pmp_1_cfg_r,
+  input  [28:0] io_pmp_1_addr,
+  input  [30:0] io_pmp_1_mask,
+  input         io_pmp_2_cfg_l,
+  input  [1:0]  io_pmp_2_cfg_a,
+  input         io_pmp_2_cfg_x,
+  input         io_pmp_2_cfg_w,
+  input         io_pmp_2_cfg_r,
+  input  [28:0] io_pmp_2_addr,
+  input  [30:0] io_pmp_2_mask,
+  input         io_pmp_3_cfg_l,
+  input  [1:0]  io_pmp_3_cfg_a,
+  input         io_pmp_3_cfg_x,
+  input         io_pmp_3_cfg_w,
+  input         io_pmp_3_cfg_r,
+  input  [28:0] io_pmp_3_addr,
+  input  [30:0] io_pmp_3_mask,
+  input         io_pmp_4_cfg_l,
+  input  [1:0]  io_pmp_4_cfg_a,
+  input         io_pmp_4_cfg_x,
+  input         io_pmp_4_cfg_w,
+  input         io_pmp_4_cfg_r,
+  input  [28:0] io_pmp_4_addr,
+  input  [30:0] io_pmp_4_mask,
+  input         io_pmp_5_cfg_l,
+  input  [1:0]  io_pmp_5_cfg_a,
+  input         io_pmp_5_cfg_x,
+  input         io_pmp_5_cfg_w,
+  input         io_pmp_5_cfg_r,
+  input  [28:0] io_pmp_5_addr,
+  input  [30:0] io_pmp_5_mask,
+  input         io_pmp_6_cfg_l,
+  input  [1:0]  io_pmp_6_cfg_a,
+  input         io_pmp_6_cfg_x,
+  input         io_pmp_6_cfg_w,
+  input         io_pmp_6_cfg_r,
+  input  [28:0] io_pmp_6_addr,
+  input  [30:0] io_pmp_6_mask,
+  input         io_pmp_7_cfg_l,
+  input  [1:0]  io_pmp_7_cfg_a,
+  input         io_pmp_7_cfg_x,
+  input         io_pmp_7_cfg_w,
+  input         io_pmp_7_cfg_r,
+  input  [28:0] io_pmp_7_addr,
+  input  [30:0] io_pmp_7_mask,
+  input  [30:0] io_addr,
+  output        io_r,
+  output        io_w,
+  output        io_x
+);
+  wire  default_ = io_prv > 2'h1; // @[PMP.scala 156:56]
+  wire [30:0] _res_hit_T_1 = {io_pmp_7_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [30:0] _res_hit_T_2 = ~_res_hit_T_1; // @[PMP.scala 61:29]
+  wire [30:0] _res_hit_T_3 = _res_hit_T_2 | 31'h3; // @[PMP.scala 61:48]
+  wire [30:0] _res_hit_T_4 = ~_res_hit_T_3; // @[PMP.scala 61:27]
+  wire [30:0] _res_hit_T_5 = io_addr ^ _res_hit_T_4; // @[PMP.scala 64:47]
+  wire [30:0] _res_hit_T_6 = ~io_pmp_7_mask; // @[PMP.scala 64:54]
+  wire [30:0] _res_hit_T_7 = _res_hit_T_5 & _res_hit_T_6; // @[PMP.scala 64:52]
+  wire  _res_hit_T_8 = _res_hit_T_7 == 31'h0; // @[PMP.scala 64:58]
+  wire [30:0] _res_hit_T_14 = {io_pmp_6_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [30:0] _res_hit_T_15 = ~_res_hit_T_14; // @[PMP.scala 61:29]
+  wire [30:0] _res_hit_T_16 = _res_hit_T_15 | 31'h3; // @[PMP.scala 61:48]
+  wire [30:0] _res_hit_T_17 = ~_res_hit_T_16; // @[PMP.scala 61:27]
+  wire  _res_hit_T_18 = io_addr < _res_hit_T_17; // @[PMP.scala 78:9]
+  wire  _res_hit_T_19 = ~_res_hit_T_18; // @[PMP.scala 89:5]
+  wire  _res_hit_T_24 = io_addr < _res_hit_T_4; // @[PMP.scala 78:9]
+  wire  _res_hit_T_25 = _res_hit_T_19 & _res_hit_T_24; // @[PMP.scala 95:48]
+  wire  res_hit = io_pmp_7_cfg_a[1] ? _res_hit_T_8 : io_pmp_7_cfg_a[0] & _res_hit_T_25; // @[PMP.scala 133:8]
+  wire  res_ignore = default_ & ~io_pmp_7_cfg_l; // @[PMP.scala 164:26]
+  wire  res_cur_cfg_r = io_pmp_7_cfg_r | res_ignore; // @[PMP.scala 182:40]
+  wire  res_cur_cfg_w = io_pmp_7_cfg_w | res_ignore; // @[PMP.scala 183:40]
+  wire  res_cur_cfg_x = io_pmp_7_cfg_x | res_ignore; // @[PMP.scala 184:40]
+  wire  _res_T_44_cfg_x = res_hit ? res_cur_cfg_x : default_; // @[PMP.scala 185:8]
+  wire  _res_T_44_cfg_w = res_hit ? res_cur_cfg_w : default_; // @[PMP.scala 185:8]
+  wire  _res_T_44_cfg_r = res_hit ? res_cur_cfg_r : default_; // @[PMP.scala 185:8]
+  wire [30:0] _res_hit_T_32 = io_addr ^ _res_hit_T_17; // @[PMP.scala 64:47]
+  wire [30:0] _res_hit_T_33 = ~io_pmp_6_mask; // @[PMP.scala 64:54]
+  wire [30:0] _res_hit_T_34 = _res_hit_T_32 & _res_hit_T_33; // @[PMP.scala 64:52]
+  wire  _res_hit_T_35 = _res_hit_T_34 == 31'h0; // @[PMP.scala 64:58]
+  wire [30:0] _res_hit_T_41 = {io_pmp_5_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [30:0] _res_hit_T_42 = ~_res_hit_T_41; // @[PMP.scala 61:29]
+  wire [30:0] _res_hit_T_43 = _res_hit_T_42 | 31'h3; // @[PMP.scala 61:48]
+  wire [30:0] _res_hit_T_44 = ~_res_hit_T_43; // @[PMP.scala 61:27]
+  wire  _res_hit_T_45 = io_addr < _res_hit_T_44; // @[PMP.scala 78:9]
+  wire  _res_hit_T_46 = ~_res_hit_T_45; // @[PMP.scala 89:5]
+  wire  _res_hit_T_52 = _res_hit_T_46 & _res_hit_T_18; // @[PMP.scala 95:48]
+  wire  res_hit_1 = io_pmp_6_cfg_a[1] ? _res_hit_T_35 : io_pmp_6_cfg_a[0] & _res_hit_T_52; // @[PMP.scala 133:8]
+  wire  res_ignore_1 = default_ & ~io_pmp_6_cfg_l; // @[PMP.scala 164:26]
+  wire  res_cur_1_cfg_r = io_pmp_6_cfg_r | res_ignore_1; // @[PMP.scala 182:40]
+  wire  res_cur_1_cfg_w = io_pmp_6_cfg_w | res_ignore_1; // @[PMP.scala 183:40]
+  wire  res_cur_1_cfg_x = io_pmp_6_cfg_x | res_ignore_1; // @[PMP.scala 184:40]
+  wire  _res_T_89_cfg_x = res_hit_1 ? res_cur_1_cfg_x : _res_T_44_cfg_x; // @[PMP.scala 185:8]
+  wire  _res_T_89_cfg_w = res_hit_1 ? res_cur_1_cfg_w : _res_T_44_cfg_w; // @[PMP.scala 185:8]
+  wire  _res_T_89_cfg_r = res_hit_1 ? res_cur_1_cfg_r : _res_T_44_cfg_r; // @[PMP.scala 185:8]
+  wire [30:0] _res_hit_T_59 = io_addr ^ _res_hit_T_44; // @[PMP.scala 64:47]
+  wire [30:0] _res_hit_T_60 = ~io_pmp_5_mask; // @[PMP.scala 64:54]
+  wire [30:0] _res_hit_T_61 = _res_hit_T_59 & _res_hit_T_60; // @[PMP.scala 64:52]
+  wire  _res_hit_T_62 = _res_hit_T_61 == 31'h0; // @[PMP.scala 64:58]
+  wire [30:0] _res_hit_T_68 = {io_pmp_4_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [30:0] _res_hit_T_69 = ~_res_hit_T_68; // @[PMP.scala 61:29]
+  wire [30:0] _res_hit_T_70 = _res_hit_T_69 | 31'h3; // @[PMP.scala 61:48]
+  wire [30:0] _res_hit_T_71 = ~_res_hit_T_70; // @[PMP.scala 61:27]
+  wire  _res_hit_T_72 = io_addr < _res_hit_T_71; // @[PMP.scala 78:9]
+  wire  _res_hit_T_73 = ~_res_hit_T_72; // @[PMP.scala 89:5]
+  wire  _res_hit_T_79 = _res_hit_T_73 & _res_hit_T_45; // @[PMP.scala 95:48]
+  wire  res_hit_2 = io_pmp_5_cfg_a[1] ? _res_hit_T_62 : io_pmp_5_cfg_a[0] & _res_hit_T_79; // @[PMP.scala 133:8]
+  wire  res_ignore_2 = default_ & ~io_pmp_5_cfg_l; // @[PMP.scala 164:26]
+  wire  res_cur_2_cfg_r = io_pmp_5_cfg_r | res_ignore_2; // @[PMP.scala 182:40]
+  wire  res_cur_2_cfg_w = io_pmp_5_cfg_w | res_ignore_2; // @[PMP.scala 183:40]
+  wire  res_cur_2_cfg_x = io_pmp_5_cfg_x | res_ignore_2; // @[PMP.scala 184:40]
+  wire  _res_T_134_cfg_x = res_hit_2 ? res_cur_2_cfg_x : _res_T_89_cfg_x; // @[PMP.scala 185:8]
+  wire  _res_T_134_cfg_w = res_hit_2 ? res_cur_2_cfg_w : _res_T_89_cfg_w; // @[PMP.scala 185:8]
+  wire  _res_T_134_cfg_r = res_hit_2 ? res_cur_2_cfg_r : _res_T_89_cfg_r; // @[PMP.scala 185:8]
+  wire [30:0] _res_hit_T_86 = io_addr ^ _res_hit_T_71; // @[PMP.scala 64:47]
+  wire [30:0] _res_hit_T_87 = ~io_pmp_4_mask; // @[PMP.scala 64:54]
+  wire [30:0] _res_hit_T_88 = _res_hit_T_86 & _res_hit_T_87; // @[PMP.scala 64:52]
+  wire  _res_hit_T_89 = _res_hit_T_88 == 31'h0; // @[PMP.scala 64:58]
+  wire [30:0] _res_hit_T_95 = {io_pmp_3_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [30:0] _res_hit_T_96 = ~_res_hit_T_95; // @[PMP.scala 61:29]
+  wire [30:0] _res_hit_T_97 = _res_hit_T_96 | 31'h3; // @[PMP.scala 61:48]
+  wire [30:0] _res_hit_T_98 = ~_res_hit_T_97; // @[PMP.scala 61:27]
+  wire  _res_hit_T_99 = io_addr < _res_hit_T_98; // @[PMP.scala 78:9]
+  wire  _res_hit_T_100 = ~_res_hit_T_99; // @[PMP.scala 89:5]
+  wire  _res_hit_T_106 = _res_hit_T_100 & _res_hit_T_72; // @[PMP.scala 95:48]
+  wire  res_hit_3 = io_pmp_4_cfg_a[1] ? _res_hit_T_89 : io_pmp_4_cfg_a[0] & _res_hit_T_106; // @[PMP.scala 133:8]
+  wire  res_ignore_3 = default_ & ~io_pmp_4_cfg_l; // @[PMP.scala 164:26]
+  wire  res_cur_3_cfg_r = io_pmp_4_cfg_r | res_ignore_3; // @[PMP.scala 182:40]
+  wire  res_cur_3_cfg_w = io_pmp_4_cfg_w | res_ignore_3; // @[PMP.scala 183:40]
+  wire  res_cur_3_cfg_x = io_pmp_4_cfg_x | res_ignore_3; // @[PMP.scala 184:40]
+  wire  _res_T_179_cfg_x = res_hit_3 ? res_cur_3_cfg_x : _res_T_134_cfg_x; // @[PMP.scala 185:8]
+  wire  _res_T_179_cfg_w = res_hit_3 ? res_cur_3_cfg_w : _res_T_134_cfg_w; // @[PMP.scala 185:8]
+  wire  _res_T_179_cfg_r = res_hit_3 ? res_cur_3_cfg_r : _res_T_134_cfg_r; // @[PMP.scala 185:8]
+  wire [30:0] _res_hit_T_113 = io_addr ^ _res_hit_T_98; // @[PMP.scala 64:47]
+  wire [30:0] _res_hit_T_114 = ~io_pmp_3_mask; // @[PMP.scala 64:54]
+  wire [30:0] _res_hit_T_115 = _res_hit_T_113 & _res_hit_T_114; // @[PMP.scala 64:52]
+  wire  _res_hit_T_116 = _res_hit_T_115 == 31'h0; // @[PMP.scala 64:58]
+  wire [30:0] _res_hit_T_122 = {io_pmp_2_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [30:0] _res_hit_T_123 = ~_res_hit_T_122; // @[PMP.scala 61:29]
+  wire [30:0] _res_hit_T_124 = _res_hit_T_123 | 31'h3; // @[PMP.scala 61:48]
+  wire [30:0] _res_hit_T_125 = ~_res_hit_T_124; // @[PMP.scala 61:27]
+  wire  _res_hit_T_126 = io_addr < _res_hit_T_125; // @[PMP.scala 78:9]
+  wire  _res_hit_T_127 = ~_res_hit_T_126; // @[PMP.scala 89:5]
+  wire  _res_hit_T_133 = _res_hit_T_127 & _res_hit_T_99; // @[PMP.scala 95:48]
+  wire  res_hit_4 = io_pmp_3_cfg_a[1] ? _res_hit_T_116 : io_pmp_3_cfg_a[0] & _res_hit_T_133; // @[PMP.scala 133:8]
+  wire  res_ignore_4 = default_ & ~io_pmp_3_cfg_l; // @[PMP.scala 164:26]
+  wire  res_cur_4_cfg_r = io_pmp_3_cfg_r | res_ignore_4; // @[PMP.scala 182:40]
+  wire  res_cur_4_cfg_w = io_pmp_3_cfg_w | res_ignore_4; // @[PMP.scala 183:40]
+  wire  res_cur_4_cfg_x = io_pmp_3_cfg_x | res_ignore_4; // @[PMP.scala 184:40]
+  wire  _res_T_224_cfg_x = res_hit_4 ? res_cur_4_cfg_x : _res_T_179_cfg_x; // @[PMP.scala 185:8]
+  wire  _res_T_224_cfg_w = res_hit_4 ? res_cur_4_cfg_w : _res_T_179_cfg_w; // @[PMP.scala 185:8]
+  wire  _res_T_224_cfg_r = res_hit_4 ? res_cur_4_cfg_r : _res_T_179_cfg_r; // @[PMP.scala 185:8]
+  wire [30:0] _res_hit_T_140 = io_addr ^ _res_hit_T_125; // @[PMP.scala 64:47]
+  wire [30:0] _res_hit_T_141 = ~io_pmp_2_mask; // @[PMP.scala 64:54]
+  wire [30:0] _res_hit_T_142 = _res_hit_T_140 & _res_hit_T_141; // @[PMP.scala 64:52]
+  wire  _res_hit_T_143 = _res_hit_T_142 == 31'h0; // @[PMP.scala 64:58]
+  wire [30:0] _res_hit_T_149 = {io_pmp_1_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [30:0] _res_hit_T_150 = ~_res_hit_T_149; // @[PMP.scala 61:29]
+  wire [30:0] _res_hit_T_151 = _res_hit_T_150 | 31'h3; // @[PMP.scala 61:48]
+  wire [30:0] _res_hit_T_152 = ~_res_hit_T_151; // @[PMP.scala 61:27]
+  wire  _res_hit_T_153 = io_addr < _res_hit_T_152; // @[PMP.scala 78:9]
+  wire  _res_hit_T_154 = ~_res_hit_T_153; // @[PMP.scala 89:5]
+  wire  _res_hit_T_160 = _res_hit_T_154 & _res_hit_T_126; // @[PMP.scala 95:48]
+  wire  res_hit_5 = io_pmp_2_cfg_a[1] ? _res_hit_T_143 : io_pmp_2_cfg_a[0] & _res_hit_T_160; // @[PMP.scala 133:8]
+  wire  res_ignore_5 = default_ & ~io_pmp_2_cfg_l; // @[PMP.scala 164:26]
+  wire  res_cur_5_cfg_r = io_pmp_2_cfg_r | res_ignore_5; // @[PMP.scala 182:40]
+  wire  res_cur_5_cfg_w = io_pmp_2_cfg_w | res_ignore_5; // @[PMP.scala 183:40]
+  wire  res_cur_5_cfg_x = io_pmp_2_cfg_x | res_ignore_5; // @[PMP.scala 184:40]
+  wire  _res_T_269_cfg_x = res_hit_5 ? res_cur_5_cfg_x : _res_T_224_cfg_x; // @[PMP.scala 185:8]
+  wire  _res_T_269_cfg_w = res_hit_5 ? res_cur_5_cfg_w : _res_T_224_cfg_w; // @[PMP.scala 185:8]
+  wire  _res_T_269_cfg_r = res_hit_5 ? res_cur_5_cfg_r : _res_T_224_cfg_r; // @[PMP.scala 185:8]
+  wire [30:0] _res_hit_T_167 = io_addr ^ _res_hit_T_152; // @[PMP.scala 64:47]
+  wire [30:0] _res_hit_T_168 = ~io_pmp_1_mask; // @[PMP.scala 64:54]
+  wire [30:0] _res_hit_T_169 = _res_hit_T_167 & _res_hit_T_168; // @[PMP.scala 64:52]
+  wire  _res_hit_T_170 = _res_hit_T_169 == 31'h0; // @[PMP.scala 64:58]
+  wire [30:0] _res_hit_T_176 = {io_pmp_0_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [30:0] _res_hit_T_177 = ~_res_hit_T_176; // @[PMP.scala 61:29]
+  wire [30:0] _res_hit_T_178 = _res_hit_T_177 | 31'h3; // @[PMP.scala 61:48]
+  wire [30:0] _res_hit_T_179 = ~_res_hit_T_178; // @[PMP.scala 61:27]
+  wire  _res_hit_T_180 = io_addr < _res_hit_T_179; // @[PMP.scala 78:9]
+  wire  _res_hit_T_181 = ~_res_hit_T_180; // @[PMP.scala 89:5]
+  wire  _res_hit_T_187 = _res_hit_T_181 & _res_hit_T_153; // @[PMP.scala 95:48]
+  wire  res_hit_6 = io_pmp_1_cfg_a[1] ? _res_hit_T_170 : io_pmp_1_cfg_a[0] & _res_hit_T_187; // @[PMP.scala 133:8]
+  wire  res_ignore_6 = default_ & ~io_pmp_1_cfg_l; // @[PMP.scala 164:26]
+  wire  res_cur_6_cfg_r = io_pmp_1_cfg_r | res_ignore_6; // @[PMP.scala 182:40]
+  wire  res_cur_6_cfg_w = io_pmp_1_cfg_w | res_ignore_6; // @[PMP.scala 183:40]
+  wire  res_cur_6_cfg_x = io_pmp_1_cfg_x | res_ignore_6; // @[PMP.scala 184:40]
+  wire  _res_T_314_cfg_x = res_hit_6 ? res_cur_6_cfg_x : _res_T_269_cfg_x; // @[PMP.scala 185:8]
+  wire  _res_T_314_cfg_w = res_hit_6 ? res_cur_6_cfg_w : _res_T_269_cfg_w; // @[PMP.scala 185:8]
+  wire  _res_T_314_cfg_r = res_hit_6 ? res_cur_6_cfg_r : _res_T_269_cfg_r; // @[PMP.scala 185:8]
+  wire [30:0] _res_hit_T_194 = io_addr ^ _res_hit_T_179; // @[PMP.scala 64:47]
+  wire [30:0] _res_hit_T_195 = ~io_pmp_0_mask; // @[PMP.scala 64:54]
+  wire [30:0] _res_hit_T_196 = _res_hit_T_194 & _res_hit_T_195; // @[PMP.scala 64:52]
+  wire  _res_hit_T_197 = _res_hit_T_196 == 31'h0; // @[PMP.scala 64:58]
+  wire  res_hit_7 = io_pmp_0_cfg_a[1] ? _res_hit_T_197 : io_pmp_0_cfg_a[0] & _res_hit_T_180; // @[PMP.scala 133:8]
+  wire  res_ignore_7 = default_ & ~io_pmp_0_cfg_l; // @[PMP.scala 164:26]
+  wire  res_cur_7_cfg_r = io_pmp_0_cfg_r | res_ignore_7; // @[PMP.scala 182:40]
+  wire  res_cur_7_cfg_w = io_pmp_0_cfg_w | res_ignore_7; // @[PMP.scala 183:40]
+  wire  res_cur_7_cfg_x = io_pmp_0_cfg_x | res_ignore_7; // @[PMP.scala 184:40]
+  assign io_r = res_hit_7 ? res_cur_7_cfg_r : _res_T_314_cfg_r; // @[PMP.scala 185:8]
+  assign io_w = res_hit_7 ? res_cur_7_cfg_w : _res_T_314_cfg_w; // @[PMP.scala 185:8]
+  assign io_x = res_hit_7 ? res_cur_7_cfg_x : _res_T_314_cfg_x; // @[PMP.scala 185:8]
+endmodule
+module TLB(
+  input         io_req_valid,
+  input  [31:0] io_req_bits_vaddr,
+  input  [1:0]  io_req_bits_size,
+  input  [4:0]  io_req_bits_cmd,
+  input  [1:0]  io_req_bits_prv,
+  output [30:0] io_resp_paddr,
+  output        io_resp_pf_ld,
+  output        io_resp_pf_st,
+  output        io_resp_ae_ld,
+  output        io_resp_ae_st,
+  output        io_resp_ma_ld,
+  output        io_resp_ma_st,
+  output        io_resp_cacheable,
+  input         io_ptw_status_debug,
+  input         io_ptw_pmp_0_cfg_l,
+  input  [1:0]  io_ptw_pmp_0_cfg_a,
+  input         io_ptw_pmp_0_cfg_x,
+  input         io_ptw_pmp_0_cfg_w,
+  input         io_ptw_pmp_0_cfg_r,
+  input  [28:0] io_ptw_pmp_0_addr,
+  input  [30:0] io_ptw_pmp_0_mask,
+  input         io_ptw_pmp_1_cfg_l,
+  input  [1:0]  io_ptw_pmp_1_cfg_a,
+  input         io_ptw_pmp_1_cfg_x,
+  input         io_ptw_pmp_1_cfg_w,
+  input         io_ptw_pmp_1_cfg_r,
+  input  [28:0] io_ptw_pmp_1_addr,
+  input  [30:0] io_ptw_pmp_1_mask,
+  input         io_ptw_pmp_2_cfg_l,
+  input  [1:0]  io_ptw_pmp_2_cfg_a,
+  input         io_ptw_pmp_2_cfg_x,
+  input         io_ptw_pmp_2_cfg_w,
+  input         io_ptw_pmp_2_cfg_r,
+  input  [28:0] io_ptw_pmp_2_addr,
+  input  [30:0] io_ptw_pmp_2_mask,
+  input         io_ptw_pmp_3_cfg_l,
+  input  [1:0]  io_ptw_pmp_3_cfg_a,
+  input         io_ptw_pmp_3_cfg_x,
+  input         io_ptw_pmp_3_cfg_w,
+  input         io_ptw_pmp_3_cfg_r,
+  input  [28:0] io_ptw_pmp_3_addr,
+  input  [30:0] io_ptw_pmp_3_mask,
+  input         io_ptw_pmp_4_cfg_l,
+  input  [1:0]  io_ptw_pmp_4_cfg_a,
+  input         io_ptw_pmp_4_cfg_x,
+  input         io_ptw_pmp_4_cfg_w,
+  input         io_ptw_pmp_4_cfg_r,
+  input  [28:0] io_ptw_pmp_4_addr,
+  input  [30:0] io_ptw_pmp_4_mask,
+  input         io_ptw_pmp_5_cfg_l,
+  input  [1:0]  io_ptw_pmp_5_cfg_a,
+  input         io_ptw_pmp_5_cfg_x,
+  input         io_ptw_pmp_5_cfg_w,
+  input         io_ptw_pmp_5_cfg_r,
+  input  [28:0] io_ptw_pmp_5_addr,
+  input  [30:0] io_ptw_pmp_5_mask,
+  input         io_ptw_pmp_6_cfg_l,
+  input  [1:0]  io_ptw_pmp_6_cfg_a,
+  input         io_ptw_pmp_6_cfg_x,
+  input         io_ptw_pmp_6_cfg_w,
+  input         io_ptw_pmp_6_cfg_r,
+  input  [28:0] io_ptw_pmp_6_addr,
+  input  [30:0] io_ptw_pmp_6_mask,
+  input         io_ptw_pmp_7_cfg_l,
+  input  [1:0]  io_ptw_pmp_7_cfg_a,
+  input         io_ptw_pmp_7_cfg_x,
+  input         io_ptw_pmp_7_cfg_w,
+  input         io_ptw_pmp_7_cfg_r,
+  input  [28:0] io_ptw_pmp_7_addr,
+  input  [30:0] io_ptw_pmp_7_mask
+);
+  wire [1:0] pmp_io_prv; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_0_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_0_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_0_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_1_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_1_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_1_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_2_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_2_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_2_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_3_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_3_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_3_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_4_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_4_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_4_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_5_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_5_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_5_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_6_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_6_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_6_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_7_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_7_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_7_mask; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_addr; // @[TLB.scala 233:19]
+  wire  pmp_io_r; // @[TLB.scala 233:19]
+  wire  pmp_io_w; // @[TLB.scala 233:19]
+  wire  pmp_io_x; // @[TLB.scala 233:19]
+  wire [19:0] vpn = io_req_bits_vaddr[31:12]; // @[TLB.scala 187:30]
+  wire [19:0] mpu_ppn = io_req_bits_vaddr[31:12]; // @[TLB.scala 230:144]
+  wire [31:0] mpu_physaddr = {mpu_ppn,io_req_bits_vaddr[11:0]}; // @[Cat.scala 31:58]
+  wire [2:0] mpu_priv = {io_ptw_status_debug,io_req_bits_prv}; // @[Cat.scala 31:58]
+  wire [31:0] _legal_address_T = mpu_physaddr ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_1 = {1'b0,$signed(_legal_address_T)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_3 = $signed(_legal_address_T_1) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_4 = $signed(_legal_address_T_3) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_5 = mpu_physaddr ^ 32'h10013000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_6 = {1'b0,$signed(_legal_address_T_5)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_8 = $signed(_legal_address_T_6) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_9 = $signed(_legal_address_T_8) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_10 = mpu_physaddr ^ 32'h10023000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_11 = {1'b0,$signed(_legal_address_T_10)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_13 = $signed(_legal_address_T_11) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_14 = $signed(_legal_address_T_13) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_15 = mpu_physaddr ^ 32'h10033000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_16 = {1'b0,$signed(_legal_address_T_15)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_18 = $signed(_legal_address_T_16) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_19 = $signed(_legal_address_T_18) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_20 = mpu_physaddr ^ 32'h10043000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_21 = {1'b0,$signed(_legal_address_T_20)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_23 = $signed(_legal_address_T_21) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_24 = $signed(_legal_address_T_23) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_25 = mpu_physaddr ^ 32'h10053000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_26 = {1'b0,$signed(_legal_address_T_25)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_28 = $signed(_legal_address_T_26) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_29 = $signed(_legal_address_T_28) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_30 = mpu_physaddr ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_31 = {1'b0,$signed(_legal_address_T_30)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_33 = $signed(_legal_address_T_31) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_34 = $signed(_legal_address_T_33) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_35 = mpu_physaddr ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_36 = {1'b0,$signed(_legal_address_T_35)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_38 = $signed(_legal_address_T_36) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_39 = $signed(_legal_address_T_38) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_40 = mpu_physaddr ^ 32'h10034000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_41 = {1'b0,$signed(_legal_address_T_40)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_43 = $signed(_legal_address_T_41) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_44 = $signed(_legal_address_T_43) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_45 = mpu_physaddr ^ 32'h10024000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_46 = {1'b0,$signed(_legal_address_T_45)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_48 = $signed(_legal_address_T_46) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_49 = $signed(_legal_address_T_48) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_50 = mpu_physaddr ^ 32'h10012000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_51 = {1'b0,$signed(_legal_address_T_50)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_53 = $signed(_legal_address_T_51) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_54 = $signed(_legal_address_T_53) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_55 = mpu_physaddr ^ 32'h10015000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_56 = {1'b0,$signed(_legal_address_T_55)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_58 = $signed(_legal_address_T_56) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_59 = $signed(_legal_address_T_58) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_60 = mpu_physaddr ^ 32'h10025000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_61 = {1'b0,$signed(_legal_address_T_60)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_63 = $signed(_legal_address_T_61) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_64 = $signed(_legal_address_T_63) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_65 = mpu_physaddr ^ 32'h10035000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_66 = {1'b0,$signed(_legal_address_T_65)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_68 = $signed(_legal_address_T_66) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_69 = $signed(_legal_address_T_68) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_70 = mpu_physaddr ^ 32'h10016000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_71 = {1'b0,$signed(_legal_address_T_70)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_73 = $signed(_legal_address_T_71) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_74 = $signed(_legal_address_T_73) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_75 = mpu_physaddr ^ 32'h10026000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_76 = {1'b0,$signed(_legal_address_T_75)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_78 = $signed(_legal_address_T_76) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_79 = $signed(_legal_address_T_78) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_80 = mpu_physaddr ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_81 = {1'b0,$signed(_legal_address_T_80)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_83 = $signed(_legal_address_T_81) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_84 = $signed(_legal_address_T_83) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_85 = mpu_physaddr ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_86 = {1'b0,$signed(_legal_address_T_85)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_88 = $signed(_legal_address_T_86) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_89 = $signed(_legal_address_T_88) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [32:0] _legal_address_T_91 = {1'b0,$signed(mpu_physaddr)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_93 = $signed(_legal_address_T_91) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_94 = $signed(_legal_address_T_93) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_95 = mpu_physaddr ^ 32'h8000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_96 = {1'b0,$signed(_legal_address_T_95)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_98 = $signed(_legal_address_T_96) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_99 = $signed(_legal_address_T_98) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_100 = mpu_physaddr ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_101 = {1'b0,$signed(_legal_address_T_100)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_103 = $signed(_legal_address_T_101) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_104 = $signed(_legal_address_T_103) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_105 = mpu_physaddr ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_106 = {1'b0,$signed(_legal_address_T_105)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_108 = $signed(_legal_address_T_106) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_109 = $signed(_legal_address_T_108) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_110 = mpu_physaddr ^ 32'h40000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_111 = {1'b0,$signed(_legal_address_T_110)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_113 = $signed(_legal_address_T_111) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_114 = $signed(_legal_address_T_113) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  legal_address = _legal_address_T_4 | _legal_address_T_9 | _legal_address_T_14 | _legal_address_T_19 |
+    _legal_address_T_24 | _legal_address_T_29 | _legal_address_T_34 | _legal_address_T_39 | _legal_address_T_44 |
+    _legal_address_T_49 | _legal_address_T_54 | _legal_address_T_59 | _legal_address_T_64 | _legal_address_T_69 |
+    _legal_address_T_74 | _legal_address_T_79 | _legal_address_T_84 | _legal_address_T_89 | _legal_address_T_94 |
+    _legal_address_T_99 | _legal_address_T_104 | _legal_address_T_109 | _legal_address_T_114; // @[TLB.scala 238:67]
+  wire [32:0] _cacheable_T_8 = $signed(_legal_address_T_111) & 33'sh40000000; // @[Parameters.scala 137:52]
+  wire  _cacheable_T_9 = $signed(_cacheable_T_8) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  cacheable = legal_address & _cacheable_T_9; // @[TLB.scala 240:19]
+  wire [32:0] _homogeneous_T_116 = $signed(_legal_address_T_111) & 33'sh60000000; // @[Parameters.scala 137:52]
+  wire  _homogeneous_T_117 = $signed(_homogeneous_T_116) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  deny_access_to_debug = mpu_priv <= 3'h3 & _legal_address_T_94; // @[TLB.scala 243:48]
+  wire  _prot_r_T_6 = ~deny_access_to_debug; // @[TLB.scala 244:44]
+  wire  prot_r = legal_address & ~deny_access_to_debug & pmp_io_r; // @[TLB.scala 244:66]
+  wire [32:0] _prot_w_T_3 = $signed(_legal_address_T_91) & 33'sh74010000; // @[Parameters.scala 137:52]
+  wire  _prot_w_T_4 = $signed(_prot_w_T_3) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _prot_w_T_5 = mpu_physaddr ^ 32'h4000000; // @[Parameters.scala 137:31]
+  wire [32:0] _prot_w_T_6 = {1'b0,$signed(_prot_w_T_5)}; // @[Parameters.scala 137:49]
+  wire [32:0] _prot_w_T_8 = $signed(_prot_w_T_6) & 33'sh74000000; // @[Parameters.scala 137:52]
+  wire  _prot_w_T_9 = $signed(_prot_w_T_8) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [32:0] _prot_w_T_13 = $signed(_legal_address_T_101) & 33'sh74000000; // @[Parameters.scala 137:52]
+  wire  _prot_w_T_14 = $signed(_prot_w_T_13) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _prot_w_T_21 = _prot_w_T_4 | _prot_w_T_9 | _prot_w_T_14; // @[Parameters.scala 615:89]
+  wire  _prot_w_T_22 = _prot_w_T_4 | _prot_w_T_9 | _prot_w_T_14 | _homogeneous_T_117; // @[Parameters.scala 615:89]
+  wire  _prot_w_T_37 = legal_address & _prot_w_T_22; // @[TLB.scala 240:19]
+  wire  prot_w = _prot_w_T_37 & _prot_r_T_6 & pmp_io_w; // @[TLB.scala 245:70]
+  wire  prot_pp = legal_address & _prot_w_T_21; // @[TLB.scala 240:19]
+  wire [31:0] _prot_x_T_32 = mpu_physaddr ^ 32'h10042000; // @[Parameters.scala 137:31]
+  wire [32:0] _prot_x_T_33 = {1'b0,$signed(_prot_x_T_32)}; // @[Parameters.scala 137:49]
+  wire [32:0] _prot_eff_T_32 = $signed(_legal_address_T_91) & 33'sh6e072000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_33 = $signed(_prot_eff_T_32) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [32:0] _prot_eff_T_37 = $signed(_legal_address_T_86) & 33'sh7e070000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_38 = $signed(_prot_eff_T_37) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [32:0] _prot_eff_T_42 = $signed(_legal_address_T_81) & 33'sh7c000000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_43 = $signed(_prot_eff_T_42) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _prot_eff_T_44 = mpu_physaddr ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _prot_eff_T_45 = {1'b0,$signed(_prot_eff_T_44)}; // @[Parameters.scala 137:49]
+  wire [32:0] _prot_eff_T_47 = $signed(_prot_eff_T_45) & 33'sh7e070000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_48 = $signed(_prot_eff_T_47) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _prot_eff_T_49 = mpu_physaddr ^ 32'h10020000; // @[Parameters.scala 137:31]
+  wire [32:0] _prot_eff_T_50 = {1'b0,$signed(_prot_eff_T_49)}; // @[Parameters.scala 137:49]
+  wire [32:0] _prot_eff_T_52 = $signed(_prot_eff_T_50) & 33'sh7e060000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_53 = $signed(_prot_eff_T_52) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [32:0] _prot_eff_T_57 = $signed(_prot_x_T_33) & 33'sh7e062000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_58 = $signed(_prot_eff_T_57) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _prot_eff_T_63 = _prot_eff_T_33 | _prot_eff_T_38 | _prot_eff_T_43 | _prot_eff_T_48 | _prot_eff_T_53 |
+    _prot_eff_T_58; // @[Parameters.scala 615:89]
+  wire  prot_eff = legal_address & _prot_eff_T_63; // @[TLB.scala 240:19]
+  wire [18:0] ppn = vpn[18:0]; // @[TLB.scala 310:125]
+  wire [1:0] _pr_array_T_1 = prot_r ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [6:0] pr_array = {_pr_array_T_1,5'h0}; // @[Cat.scala 31:58]
+  wire [1:0] _pw_array_T_1 = prot_w ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [6:0] pw_array = {_pw_array_T_1,5'h0}; // @[Cat.scala 31:58]
+  wire [1:0] _eff_array_T_1 = prot_eff ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [6:0] eff_array = {_eff_array_T_1,5'h0}; // @[Cat.scala 31:58]
+  wire [1:0] _c_array_T_1 = cacheable ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [6:0] c_array = {_c_array_T_1,5'h0}; // @[Cat.scala 31:58]
+  wire [1:0] _ppp_array_T_1 = prot_pp ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [6:0] ppp_array = {_ppp_array_T_1,5'h0}; // @[Cat.scala 31:58]
+  wire [6:0] ppp_array_if_cached = ppp_array | c_array; // @[TLB.scala 336:39]
+  wire [3:0] _misaligned_T = 4'h1 << io_req_bits_size; // @[OneHot.scala 57:35]
+  wire [3:0] _misaligned_T_2 = _misaligned_T - 4'h1; // @[TLB.scala 341:69]
+  wire [31:0] _GEN_144 = {{28'd0}, _misaligned_T_2}; // @[TLB.scala 341:39]
+  wire [31:0] _misaligned_T_3 = io_req_bits_vaddr & _GEN_144; // @[TLB.scala 341:39]
+  wire  misaligned = |_misaligned_T_3; // @[TLB.scala 341:75]
+  wire  _cmd_lrsc_T = io_req_bits_cmd == 5'h6; // @[package.scala 15:47]
+  wire  _cmd_lrsc_T_1 = io_req_bits_cmd == 5'h7; // @[package.scala 15:47]
+  wire  cmd_lrsc = _cmd_lrsc_T | _cmd_lrsc_T_1; // @[package.scala 72:59]
+  wire  _cmd_amo_logical_T = io_req_bits_cmd == 5'h4; // @[package.scala 15:47]
+  wire  _cmd_amo_logical_T_1 = io_req_bits_cmd == 5'h9; // @[package.scala 15:47]
+  wire  _cmd_amo_logical_T_2 = io_req_bits_cmd == 5'ha; // @[package.scala 15:47]
+  wire  _cmd_amo_logical_T_3 = io_req_bits_cmd == 5'hb; // @[package.scala 15:47]
+  wire  cmd_amo_logical = _cmd_amo_logical_T | _cmd_amo_logical_T_1 | _cmd_amo_logical_T_2 | _cmd_amo_logical_T_3; // @[package.scala 72:59]
+  wire  _cmd_amo_arithmetic_T = io_req_bits_cmd == 5'h8; // @[package.scala 15:47]
+  wire  _cmd_amo_arithmetic_T_1 = io_req_bits_cmd == 5'hc; // @[package.scala 15:47]
+  wire  _cmd_amo_arithmetic_T_2 = io_req_bits_cmd == 5'hd; // @[package.scala 15:47]
+  wire  _cmd_amo_arithmetic_T_3 = io_req_bits_cmd == 5'he; // @[package.scala 15:47]
+  wire  _cmd_amo_arithmetic_T_4 = io_req_bits_cmd == 5'hf; // @[package.scala 15:47]
+  wire  cmd_amo_arithmetic = _cmd_amo_arithmetic_T | _cmd_amo_arithmetic_T_1 | _cmd_amo_arithmetic_T_2 |
+    _cmd_amo_arithmetic_T_3 | _cmd_amo_arithmetic_T_4; // @[package.scala 72:59]
+  wire  cmd_put_partial = io_req_bits_cmd == 5'h11; // @[TLB.scala 364:41]
+  wire  _cmd_read_T = io_req_bits_cmd == 5'h0; // @[package.scala 15:47]
+  wire  _cmd_read_T_1 = io_req_bits_cmd == 5'h10; // @[package.scala 15:47]
+  wire  _cmd_read_T_6 = _cmd_read_T | _cmd_read_T_1 | _cmd_lrsc_T | _cmd_lrsc_T_1; // @[package.scala 72:59]
+  wire  _cmd_read_T_23 = cmd_amo_logical | cmd_amo_arithmetic; // @[Consts.scala 82:44]
+  wire  cmd_read = _cmd_read_T_6 | _cmd_read_T_23; // @[Consts.scala 84:68]
+  wire  cmd_write = io_req_bits_cmd == 5'h1 | cmd_put_partial | _cmd_lrsc_T_1 | _cmd_read_T_23; // @[Consts.scala 85:76]
+  wire  _cmd_write_perms_T = io_req_bits_cmd == 5'h5; // @[package.scala 15:47]
+  wire  _cmd_write_perms_T_1 = io_req_bits_cmd == 5'h17; // @[package.scala 15:47]
+  wire  _cmd_write_perms_T_2 = _cmd_write_perms_T | _cmd_write_perms_T_1; // @[package.scala 72:59]
+  wire  cmd_write_perms = cmd_write | _cmd_write_perms_T_2; // @[TLB.scala 368:35]
+  wire [6:0] _ae_array_T = misaligned ? eff_array : 7'h0; // @[TLB.scala 373:8]
+  wire [6:0] _ae_array_T_1 = ~c_array; // @[TLB.scala 374:19]
+  wire [6:0] _ae_array_T_2 = cmd_lrsc ? _ae_array_T_1 : 7'h0; // @[TLB.scala 374:8]
+  wire [6:0] ae_array = _ae_array_T | _ae_array_T_2; // @[TLB.scala 373:37]
+  wire [6:0] _ae_ld_array_T = ~pr_array; // @[TLB.scala 375:46]
+  wire [6:0] _ae_ld_array_T_1 = ae_array | _ae_ld_array_T; // @[TLB.scala 375:44]
+  wire [6:0] ae_ld_array = cmd_read ? _ae_ld_array_T_1 : 7'h0; // @[TLB.scala 375:24]
+  wire [6:0] _ae_st_array_T = ~pw_array; // @[TLB.scala 377:37]
+  wire [6:0] _ae_st_array_T_1 = ae_array | _ae_st_array_T; // @[TLB.scala 377:35]
+  wire [6:0] _ae_st_array_T_2 = cmd_write_perms ? _ae_st_array_T_1 : 7'h0; // @[TLB.scala 377:8]
+  wire [6:0] _ae_st_array_T_3 = ~ppp_array_if_cached; // @[TLB.scala 378:26]
+  wire [6:0] _ae_st_array_T_4 = cmd_put_partial ? _ae_st_array_T_3 : 7'h0; // @[TLB.scala 378:8]
+  wire [6:0] _ae_st_array_T_5 = _ae_st_array_T_2 | _ae_st_array_T_4; // @[TLB.scala 377:53]
+  wire [6:0] _ae_st_array_T_7 = cmd_amo_logical ? _ae_st_array_T_3 : 7'h0; // @[TLB.scala 379:8]
+  wire [6:0] _ae_st_array_T_8 = _ae_st_array_T_5 | _ae_st_array_T_7; // @[TLB.scala 378:53]
+  wire [6:0] _ae_st_array_T_10 = cmd_amo_arithmetic ? _ae_st_array_T_3 : 7'h0; // @[TLB.scala 380:8]
+  wire [6:0] ae_st_array = _ae_st_array_T_8 | _ae_st_array_T_10; // @[TLB.scala 379:53]
+  wire [6:0] pf_ld_array = cmd_read ? 7'h3f : 7'h0; // @[TLB.scala 386:24]
+  wire [6:0] pf_st_array = cmd_write_perms ? 7'h3f : 7'h0; // @[TLB.scala 387:24]
+  wire [6:0] _io_resp_pf_ld_T_1 = pf_ld_array & 7'h40; // @[TLB.scala 419:57]
+  wire [6:0] _io_resp_pf_st_T_1 = pf_st_array & 7'h40; // @[TLB.scala 420:64]
+  wire [6:0] _io_resp_ae_ld_T = ae_ld_array & 7'h40; // @[TLB.scala 425:33]
+  wire [6:0] _io_resp_ae_st_T = ae_st_array & 7'h40; // @[TLB.scala 426:33]
+  wire [6:0] _io_resp_cacheable_T = c_array & 7'h40; // @[TLB.scala 431:33]
+  PMPChecker pmp ( // @[TLB.scala 233:19]
+    .io_prv(pmp_io_prv),
+    .io_pmp_0_cfg_l(pmp_io_pmp_0_cfg_l),
+    .io_pmp_0_cfg_a(pmp_io_pmp_0_cfg_a),
+    .io_pmp_0_cfg_x(pmp_io_pmp_0_cfg_x),
+    .io_pmp_0_cfg_w(pmp_io_pmp_0_cfg_w),
+    .io_pmp_0_cfg_r(pmp_io_pmp_0_cfg_r),
+    .io_pmp_0_addr(pmp_io_pmp_0_addr),
+    .io_pmp_0_mask(pmp_io_pmp_0_mask),
+    .io_pmp_1_cfg_l(pmp_io_pmp_1_cfg_l),
+    .io_pmp_1_cfg_a(pmp_io_pmp_1_cfg_a),
+    .io_pmp_1_cfg_x(pmp_io_pmp_1_cfg_x),
+    .io_pmp_1_cfg_w(pmp_io_pmp_1_cfg_w),
+    .io_pmp_1_cfg_r(pmp_io_pmp_1_cfg_r),
+    .io_pmp_1_addr(pmp_io_pmp_1_addr),
+    .io_pmp_1_mask(pmp_io_pmp_1_mask),
+    .io_pmp_2_cfg_l(pmp_io_pmp_2_cfg_l),
+    .io_pmp_2_cfg_a(pmp_io_pmp_2_cfg_a),
+    .io_pmp_2_cfg_x(pmp_io_pmp_2_cfg_x),
+    .io_pmp_2_cfg_w(pmp_io_pmp_2_cfg_w),
+    .io_pmp_2_cfg_r(pmp_io_pmp_2_cfg_r),
+    .io_pmp_2_addr(pmp_io_pmp_2_addr),
+    .io_pmp_2_mask(pmp_io_pmp_2_mask),
+    .io_pmp_3_cfg_l(pmp_io_pmp_3_cfg_l),
+    .io_pmp_3_cfg_a(pmp_io_pmp_3_cfg_a),
+    .io_pmp_3_cfg_x(pmp_io_pmp_3_cfg_x),
+    .io_pmp_3_cfg_w(pmp_io_pmp_3_cfg_w),
+    .io_pmp_3_cfg_r(pmp_io_pmp_3_cfg_r),
+    .io_pmp_3_addr(pmp_io_pmp_3_addr),
+    .io_pmp_3_mask(pmp_io_pmp_3_mask),
+    .io_pmp_4_cfg_l(pmp_io_pmp_4_cfg_l),
+    .io_pmp_4_cfg_a(pmp_io_pmp_4_cfg_a),
+    .io_pmp_4_cfg_x(pmp_io_pmp_4_cfg_x),
+    .io_pmp_4_cfg_w(pmp_io_pmp_4_cfg_w),
+    .io_pmp_4_cfg_r(pmp_io_pmp_4_cfg_r),
+    .io_pmp_4_addr(pmp_io_pmp_4_addr),
+    .io_pmp_4_mask(pmp_io_pmp_4_mask),
+    .io_pmp_5_cfg_l(pmp_io_pmp_5_cfg_l),
+    .io_pmp_5_cfg_a(pmp_io_pmp_5_cfg_a),
+    .io_pmp_5_cfg_x(pmp_io_pmp_5_cfg_x),
+    .io_pmp_5_cfg_w(pmp_io_pmp_5_cfg_w),
+    .io_pmp_5_cfg_r(pmp_io_pmp_5_cfg_r),
+    .io_pmp_5_addr(pmp_io_pmp_5_addr),
+    .io_pmp_5_mask(pmp_io_pmp_5_mask),
+    .io_pmp_6_cfg_l(pmp_io_pmp_6_cfg_l),
+    .io_pmp_6_cfg_a(pmp_io_pmp_6_cfg_a),
+    .io_pmp_6_cfg_x(pmp_io_pmp_6_cfg_x),
+    .io_pmp_6_cfg_w(pmp_io_pmp_6_cfg_w),
+    .io_pmp_6_cfg_r(pmp_io_pmp_6_cfg_r),
+    .io_pmp_6_addr(pmp_io_pmp_6_addr),
+    .io_pmp_6_mask(pmp_io_pmp_6_mask),
+    .io_pmp_7_cfg_l(pmp_io_pmp_7_cfg_l),
+    .io_pmp_7_cfg_a(pmp_io_pmp_7_cfg_a),
+    .io_pmp_7_cfg_x(pmp_io_pmp_7_cfg_x),
+    .io_pmp_7_cfg_w(pmp_io_pmp_7_cfg_w),
+    .io_pmp_7_cfg_r(pmp_io_pmp_7_cfg_r),
+    .io_pmp_7_addr(pmp_io_pmp_7_addr),
+    .io_pmp_7_mask(pmp_io_pmp_7_mask),
+    .io_addr(pmp_io_addr),
+    .io_r(pmp_io_r),
+    .io_w(pmp_io_w),
+    .io_x(pmp_io_x)
+  );
+  assign io_resp_paddr = {ppn,io_req_bits_vaddr[11:0]}; // @[Cat.scala 31:58]
+  assign io_resp_pf_ld = |_io_resp_pf_ld_T_1; // @[TLB.scala 419:65]
+  assign io_resp_pf_st = |_io_resp_pf_st_T_1; // @[TLB.scala 420:72]
+  assign io_resp_ae_ld = |_io_resp_ae_ld_T; // @[TLB.scala 425:41]
+  assign io_resp_ae_st = |_io_resp_ae_st_T; // @[TLB.scala 426:41]
+  assign io_resp_ma_ld = misaligned & cmd_read; // @[TLB.scala 428:31]
+  assign io_resp_ma_st = misaligned & cmd_write; // @[TLB.scala 429:31]
+  assign io_resp_cacheable = |_io_resp_cacheable_T; // @[TLB.scala 431:41]
+  assign pmp_io_prv = mpu_priv[1:0]; // @[TLB.scala 237:14]
+  assign pmp_io_pmp_0_cfg_l = io_ptw_pmp_0_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_cfg_a = io_ptw_pmp_0_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_cfg_x = io_ptw_pmp_0_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_cfg_w = io_ptw_pmp_0_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_cfg_r = io_ptw_pmp_0_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_addr = io_ptw_pmp_0_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_mask = io_ptw_pmp_0_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_l = io_ptw_pmp_1_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_a = io_ptw_pmp_1_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_x = io_ptw_pmp_1_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_w = io_ptw_pmp_1_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_r = io_ptw_pmp_1_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_addr = io_ptw_pmp_1_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_mask = io_ptw_pmp_1_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_l = io_ptw_pmp_2_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_a = io_ptw_pmp_2_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_x = io_ptw_pmp_2_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_w = io_ptw_pmp_2_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_r = io_ptw_pmp_2_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_addr = io_ptw_pmp_2_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_mask = io_ptw_pmp_2_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_l = io_ptw_pmp_3_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_a = io_ptw_pmp_3_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_x = io_ptw_pmp_3_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_w = io_ptw_pmp_3_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_r = io_ptw_pmp_3_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_addr = io_ptw_pmp_3_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_mask = io_ptw_pmp_3_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_l = io_ptw_pmp_4_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_a = io_ptw_pmp_4_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_x = io_ptw_pmp_4_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_w = io_ptw_pmp_4_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_r = io_ptw_pmp_4_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_addr = io_ptw_pmp_4_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_mask = io_ptw_pmp_4_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_l = io_ptw_pmp_5_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_a = io_ptw_pmp_5_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_x = io_ptw_pmp_5_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_w = io_ptw_pmp_5_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_r = io_ptw_pmp_5_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_addr = io_ptw_pmp_5_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_mask = io_ptw_pmp_5_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_l = io_ptw_pmp_6_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_a = io_ptw_pmp_6_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_x = io_ptw_pmp_6_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_w = io_ptw_pmp_6_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_r = io_ptw_pmp_6_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_addr = io_ptw_pmp_6_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_mask = io_ptw_pmp_6_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_l = io_ptw_pmp_7_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_a = io_ptw_pmp_7_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_x = io_ptw_pmp_7_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_w = io_ptw_pmp_7_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_r = io_ptw_pmp_7_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_addr = io_ptw_pmp_7_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_mask = io_ptw_pmp_7_mask; // @[TLB.scala 236:14]
+  assign pmp_io_addr = mpu_physaddr[30:0]; // @[TLB.scala 234:15]
+endmodule
+module MaxPeriodFibonacciLFSR(
+  input   clock,
+  input   reset,
+  input   io_increment,
+  output  io_out_0,
+  output  io_out_1,
+  output  io_out_2,
+  output  io_out_3,
+  output  io_out_4,
+  output  io_out_5,
+  output  io_out_6,
+  output  io_out_7,
+  output  io_out_8,
+  output  io_out_9,
+  output  io_out_10,
+  output  io_out_11,
+  output  io_out_12,
+  output  io_out_13,
+  output  io_out_14,
+  output  io_out_15
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+`endif // RANDOMIZE_REG_INIT
+  reg  state_0; // @[PRNG.scala 55:49]
+  reg  state_1; // @[PRNG.scala 55:49]
+  reg  state_2; // @[PRNG.scala 55:49]
+  reg  state_3; // @[PRNG.scala 55:49]
+  reg  state_4; // @[PRNG.scala 55:49]
+  reg  state_5; // @[PRNG.scala 55:49]
+  reg  state_6; // @[PRNG.scala 55:49]
+  reg  state_7; // @[PRNG.scala 55:49]
+  reg  state_8; // @[PRNG.scala 55:49]
+  reg  state_9; // @[PRNG.scala 55:49]
+  reg  state_10; // @[PRNG.scala 55:49]
+  reg  state_11; // @[PRNG.scala 55:49]
+  reg  state_12; // @[PRNG.scala 55:49]
+  reg  state_13; // @[PRNG.scala 55:49]
+  reg  state_14; // @[PRNG.scala 55:49]
+  reg  state_15; // @[PRNG.scala 55:49]
+  wire  _T_2 = state_15 ^ state_13 ^ state_12 ^ state_10; // @[LFSR.scala 15:41]
+  wire  _GEN_0 = io_increment ? _T_2 : state_0; // @[PRNG.scala 69:22 70:11 55:49]
+  assign io_out_0 = state_0; // @[PRNG.scala 78:10]
+  assign io_out_1 = state_1; // @[PRNG.scala 78:10]
+  assign io_out_2 = state_2; // @[PRNG.scala 78:10]
+  assign io_out_3 = state_3; // @[PRNG.scala 78:10]
+  assign io_out_4 = state_4; // @[PRNG.scala 78:10]
+  assign io_out_5 = state_5; // @[PRNG.scala 78:10]
+  assign io_out_6 = state_6; // @[PRNG.scala 78:10]
+  assign io_out_7 = state_7; // @[PRNG.scala 78:10]
+  assign io_out_8 = state_8; // @[PRNG.scala 78:10]
+  assign io_out_9 = state_9; // @[PRNG.scala 78:10]
+  assign io_out_10 = state_10; // @[PRNG.scala 78:10]
+  assign io_out_11 = state_11; // @[PRNG.scala 78:10]
+  assign io_out_12 = state_12; // @[PRNG.scala 78:10]
+  assign io_out_13 = state_13; // @[PRNG.scala 78:10]
+  assign io_out_14 = state_14; // @[PRNG.scala 78:10]
+  assign io_out_15 = state_15; // @[PRNG.scala 78:10]
+  always @(posedge clock) begin
+    state_0 <= reset | _GEN_0; // @[PRNG.scala 55:{49,49}]
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_1 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_1 <= state_0; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_2 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_2 <= state_1; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_3 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_3 <= state_2; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_4 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_4 <= state_3; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_5 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_5 <= state_4; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_6 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_6 <= state_5; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_7 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_7 <= state_6; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_8 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_8 <= state_7; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_9 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_9 <= state_8; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_10 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_10 <= state_9; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_11 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_11 <= state_10; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_12 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_12 <= state_11; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_13 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_13 <= state_12; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_14 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_14 <= state_13; // @[PRNG.scala 70:11]
+    end
+    if (reset) begin // @[PRNG.scala 55:49]
+      state_15 <= 1'h0; // @[PRNG.scala 55:49]
+    end else if (io_increment) begin // @[PRNG.scala 69:22]
+      state_15 <= state_14; // @[PRNG.scala 70:11]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  state_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  state_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  state_2 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  state_3 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  state_4 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  state_5 = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  state_6 = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  state_7 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  state_8 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  state_9 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  state_10 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  state_11 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  state_12 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  state_13 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  state_14 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  state_15 = _RAND_15[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module DCacheModuleImpl_Anon_1(
+  input         io_in_0_valid,
+  input  [31:0] io_in_0_bits_addr,
+  input  [5:0]  io_in_0_bits_idx,
+  input         io_in_2_valid,
+  input  [31:0] io_in_2_bits_addr,
+  input  [5:0]  io_in_2_bits_idx,
+  input  [20:0] io_in_2_bits_data,
+  input         io_in_3_valid,
+  input  [31:0] io_in_3_bits_addr,
+  input  [5:0]  io_in_3_bits_idx,
+  input  [20:0] io_in_3_bits_data,
+  output        io_in_4_ready,
+  input         io_in_4_valid,
+  input  [31:0] io_in_4_bits_addr,
+  input  [5:0]  io_in_4_bits_idx,
+  input  [20:0] io_in_4_bits_data,
+  output        io_in_5_ready,
+  input         io_in_5_valid,
+  input  [31:0] io_in_5_bits_addr,
+  input  [5:0]  io_in_5_bits_idx,
+  output        io_in_6_ready,
+  input         io_in_6_valid,
+  input  [31:0] io_in_6_bits_addr,
+  input  [5:0]  io_in_6_bits_idx,
+  input  [20:0] io_in_6_bits_data,
+  output        io_in_7_ready,
+  input         io_in_7_valid,
+  input  [31:0] io_in_7_bits_addr,
+  input  [5:0]  io_in_7_bits_idx,
+  input  [20:0] io_in_7_bits_data,
+  output        io_out_valid,
+  output        io_out_bits_write,
+  output [31:0] io_out_bits_addr,
+  output [5:0]  io_out_bits_idx,
+  output [20:0] io_out_bits_data
+);
+  wire [20:0] _GEN_1 = io_in_6_valid ? io_in_6_bits_data : io_in_7_bits_data; // @[Arbiter.scala 139:15 141:26 143:19]
+  wire [5:0] _GEN_3 = io_in_6_valid ? io_in_6_bits_idx : io_in_7_bits_idx; // @[Arbiter.scala 139:15 141:26 143:19]
+  wire [31:0] _GEN_4 = io_in_6_valid ? io_in_6_bits_addr : io_in_7_bits_addr; // @[Arbiter.scala 139:15 141:26 143:19]
+  wire [20:0] _GEN_13 = io_in_4_valid ? io_in_4_bits_data : _GEN_1; // @[Arbiter.scala 141:26 143:19]
+  wire [5:0] _GEN_15 = io_in_4_valid ? io_in_4_bits_idx : _GEN_3; // @[Arbiter.scala 141:26 143:19]
+  wire [31:0] _GEN_16 = io_in_4_valid ? io_in_4_bits_addr : _GEN_4; // @[Arbiter.scala 141:26 143:19]
+  wire [20:0] _GEN_19 = io_in_3_valid ? io_in_3_bits_data : _GEN_13; // @[Arbiter.scala 141:26 143:19]
+  wire [5:0] _GEN_21 = io_in_3_valid ? io_in_3_bits_idx : _GEN_15; // @[Arbiter.scala 141:26 143:19]
+  wire [31:0] _GEN_22 = io_in_3_valid ? io_in_3_bits_addr : _GEN_16; // @[Arbiter.scala 141:26 143:19]
+  wire [20:0] _GEN_25 = io_in_2_valid ? io_in_2_bits_data : _GEN_19; // @[Arbiter.scala 141:26 143:19]
+  wire [5:0] _GEN_27 = io_in_2_valid ? io_in_2_bits_idx : _GEN_21; // @[Arbiter.scala 141:26 143:19]
+  wire [31:0] _GEN_28 = io_in_2_valid ? io_in_2_bits_addr : _GEN_22; // @[Arbiter.scala 141:26 143:19]
+  wire  grant_7 = ~(io_in_0_valid | io_in_2_valid | io_in_3_valid | io_in_4_valid | io_in_6_valid); // @[Arbiter.scala 46:78]
+  assign io_in_4_ready = ~(io_in_0_valid | io_in_2_valid | io_in_3_valid); // @[Arbiter.scala 46:78]
+  assign io_in_5_ready = ~(io_in_0_valid | io_in_2_valid | io_in_3_valid | io_in_4_valid); // @[Arbiter.scala 46:78]
+  assign io_in_6_ready = ~(io_in_0_valid | io_in_2_valid | io_in_3_valid | io_in_4_valid); // @[Arbiter.scala 46:78]
+  assign io_in_7_ready = ~(io_in_0_valid | io_in_2_valid | io_in_3_valid | io_in_4_valid | io_in_6_valid); // @[Arbiter.scala 46:78]
+  assign io_out_valid = ~grant_7 | io_in_7_valid; // @[Arbiter.scala 150:31]
+  assign io_out_bits_write = io_in_0_valid | (io_in_2_valid | (io_in_3_valid | io_in_4_valid)); // @[Arbiter.scala 141:26 143:19]
+  assign io_out_bits_addr = io_in_0_valid ? io_in_0_bits_addr : _GEN_28; // @[Arbiter.scala 141:26 143:19]
+  assign io_out_bits_idx = io_in_0_valid ? io_in_0_bits_idx : _GEN_27; // @[Arbiter.scala 141:26 143:19]
+  assign io_out_bits_data = io_in_0_valid ? 21'h0 : _GEN_25; // @[Arbiter.scala 141:26 143:19]
+endmodule
+module DCacheDataArray(
+  input         clock,
+  input         io_req_valid,
+  input  [11:0] io_req_bits_addr,
+  input         io_req_bits_write,
+  input  [31:0] io_req_bits_wdata,
+  input  [3:0]  io_req_bits_eccMask,
+  output [31:0] io_resp_0, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask // <no_sram>
+);
+  wire [9:0] data_arrays_0_RW0_addr; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_en; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_clk; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmode; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_wdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_wdata_1; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_wdata_2; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_wdata_3; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_rdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_rdata_1; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_rdata_2; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_rdata_3; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_0; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_1; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_2; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_3; // @[DescribedSRAM.scala 19:26]
+  wire  _rdata_T = io_req_valid & io_req_bits_write; // @[DCache.scala 66:17]
+  wire  _rdata_data_T_1 = io_req_valid & ~io_req_bits_write; // @[DCache.scala 71:39]
+  wire [15:0] rdata_lo = {data_arrays_0_RW0_rdata_1,data_arrays_0_RW0_rdata_0}; // @[Cat.scala 31:58]
+  wire [15:0] rdata_hi = {data_arrays_0_RW0_rdata_3,data_arrays_0_RW0_rdata_2}; // @[Cat.scala 31:58]
+  data_arrays_0 data_arrays_0 ( // @[DescribedSRAM.scala 19:26]
+    .RW0_addr(data_arrays_0_RW0_addr),
+    .RW0_en(data_arrays_0_RW0_en),
+    .RW0_clk(data_arrays_0_RW0_clk),
+    .RW0_wmode(data_arrays_0_RW0_wmode),
+    .RW0_wdata_0(data_arrays_0_RW0_wdata_0),
+    .RW0_wdata_1(data_arrays_0_RW0_wdata_1),
+    .RW0_wdata_2(data_arrays_0_RW0_wdata_2),
+    .RW0_wdata_3(data_arrays_0_RW0_wdata_3),
+    .RW0_rdata_0(data_arrays_0_RW0_rdata_0),
+    .RW0_rdata_1(data_arrays_0_RW0_rdata_1),
+    .RW0_rdata_2(data_arrays_0_RW0_rdata_2),
+    .RW0_rdata_3(data_arrays_0_RW0_rdata_3),
+    .RW0_wmask_0(data_arrays_0_RW0_wmask_0),
+    .RW0_wmask_1(data_arrays_0_RW0_wmask_1),
+    .RW0_wmask_2(data_arrays_0_RW0_wmask_2),
+    .RW0_wmask_3(data_arrays_0_RW0_wmask_3), // <no_sram>
+    .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask) // <no_sram>
+  );
+  assign io_resp_0 = {rdata_hi,rdata_lo}; // @[Cat.scala 31:58]
+  assign data_arrays_0_RW0_clk = clock; // @[DCache.scala 66:39]
+  assign data_arrays_0_RW0_wdata_0 = io_req_bits_wdata[7:0]; // @[package.scala 202:50]
+  assign data_arrays_0_RW0_wdata_1 = io_req_bits_wdata[15:8]; // @[package.scala 202:50]
+  assign data_arrays_0_RW0_wdata_2 = io_req_bits_wdata[23:16]; // @[package.scala 202:50]
+  assign data_arrays_0_RW0_wdata_3 = io_req_bits_wdata[31:24]; // @[package.scala 202:50]
+  assign data_arrays_0_RW0_wmask_0 = io_req_bits_eccMask[0]; // @[DCache.scala 50:82]
+  assign data_arrays_0_RW0_wmask_1 = io_req_bits_eccMask[1]; // @[DCache.scala 50:82]
+  assign data_arrays_0_RW0_wmask_2 = io_req_bits_eccMask[2]; // @[DCache.scala 50:82]
+  assign data_arrays_0_RW0_wmask_3 = io_req_bits_eccMask[3]; // @[DCache.scala 50:82]
+  assign data_arrays_0_RW0_en = _rdata_data_T_1 | _rdata_T;
+  assign data_arrays_0_RW0_wmode = io_req_bits_write;
+  assign data_arrays_0_RW0_addr = io_req_bits_addr[11:2]; // @[DCache.scala 53:31]
+endmodule
+module DCacheModuleImpl_Anon_2(
+  input         io_in_0_valid,
+  input  [11:0] io_in_0_bits_addr,
+  input         io_in_0_bits_write,
+  input  [31:0] io_in_0_bits_wdata,
+  input  [3:0]  io_in_0_bits_eccMask,
+  output        io_in_1_ready,
+  input         io_in_1_valid,
+  input  [11:0] io_in_1_bits_addr,
+  input         io_in_1_bits_write,
+  input  [31:0] io_in_1_bits_wdata,
+  output        io_in_2_ready,
+  input         io_in_2_valid,
+  input  [11:0] io_in_2_bits_addr,
+  input  [31:0] io_in_2_bits_wdata,
+  output        io_in_3_ready,
+  input         io_in_3_valid,
+  input  [11:0] io_in_3_bits_addr,
+  input  [31:0] io_in_3_bits_wdata,
+  input         io_in_3_bits_wordMask,
+  output        io_out_valid,
+  output [11:0] io_out_bits_addr,
+  output        io_out_bits_write,
+  output [31:0] io_out_bits_wdata,
+  output [3:0]  io_out_bits_eccMask
+);
+  wire [31:0] _GEN_4 = io_in_2_valid ? io_in_2_bits_wdata : io_in_3_bits_wdata; // @[Arbiter.scala 139:15 141:26 143:19]
+  wire [11:0] _GEN_6 = io_in_2_valid ? io_in_2_bits_addr : io_in_3_bits_addr; // @[Arbiter.scala 139:15 141:26 143:19]
+  wire [31:0] _GEN_11 = io_in_1_valid ? io_in_1_bits_wdata : _GEN_4; // @[Arbiter.scala 141:26 143:19]
+  wire [11:0] _GEN_13 = io_in_1_valid ? io_in_1_bits_addr : _GEN_6; // @[Arbiter.scala 141:26 143:19]
+  wire  grant_3 = ~(io_in_0_valid | io_in_1_valid | io_in_2_valid); // @[Arbiter.scala 46:78]
+  assign io_in_1_ready = ~io_in_0_valid; // @[Arbiter.scala 46:78]
+  assign io_in_2_ready = ~(io_in_0_valid | io_in_1_valid); // @[Arbiter.scala 46:78]
+  assign io_in_3_ready = ~(io_in_0_valid | io_in_1_valid | io_in_2_valid); // @[Arbiter.scala 46:78]
+  assign io_out_valid = ~grant_3 | io_in_3_valid; // @[Arbiter.scala 150:31]
+  assign io_out_bits_addr = io_in_0_valid ? io_in_0_bits_addr : _GEN_13; // @[Arbiter.scala 141:26 143:19]
+  assign io_out_bits_write = io_in_0_valid ? io_in_0_bits_write : io_in_1_valid & io_in_1_bits_write; // @[Arbiter.scala 141:26 143:19]
+  assign io_out_bits_wdata = io_in_0_valid ? io_in_0_bits_wdata : _GEN_11; // @[Arbiter.scala 141:26 143:19]
+  assign io_out_bits_eccMask = io_in_0_valid ? io_in_0_bits_eccMask : 4'hf; // @[Arbiter.scala 141:26 143:19]
+endmodule
+module AMOALU(
+  input  [3:0]  io_mask,
+  input  [4:0]  io_cmd,
+  input  [31:0] io_lhs,
+  input  [31:0] io_rhs,
+  output [31:0] io_out
+);
+  wire  max = io_cmd == 5'hd | io_cmd == 5'hf; // @[AMOALU.scala 64:33]
+  wire  min = io_cmd == 5'hc | io_cmd == 5'he; // @[AMOALU.scala 65:33]
+  wire  add = io_cmd == 5'h8; // @[AMOALU.scala 66:20]
+  wire  _logic_and_T = io_cmd == 5'ha; // @[AMOALU.scala 67:26]
+  wire  logic_and = io_cmd == 5'ha | io_cmd == 5'hb; // @[AMOALU.scala 67:38]
+  wire  logic_xor = io_cmd == 5'h9 | _logic_and_T; // @[AMOALU.scala 68:39]
+  wire [31:0] adder_out = io_lhs + io_rhs; // @[AMOALU.scala 73:21]
+  wire [4:0] _less_signed_T = io_cmd & 5'h2; // @[AMOALU.scala 86:17]
+  wire  less_signed = _less_signed_T == 5'h0; // @[AMOALU.scala 86:25]
+  wire  _less_T_6 = io_lhs < io_rhs; // @[AMOALU.scala 79:35]
+  wire  _less_T_9 = less_signed ? io_lhs[31] : io_rhs[31]; // @[AMOALU.scala 88:58]
+  wire  less = io_lhs[31] == io_rhs[31] ? _less_T_6 : _less_T_9; // @[AMOALU.scala 88:10]
+  wire  _minmax_T = less ? min : max; // @[AMOALU.scala 94:23]
+  wire [31:0] minmax = _minmax_T ? io_lhs : io_rhs; // @[AMOALU.scala 94:19]
+  wire [31:0] _logic_T = io_lhs & io_rhs; // @[AMOALU.scala 96:27]
+  wire [31:0] _logic_T_1 = logic_and ? _logic_T : 32'h0; // @[AMOALU.scala 96:8]
+  wire [31:0] _logic_T_2 = io_lhs ^ io_rhs; // @[AMOALU.scala 97:27]
+  wire [31:0] _logic_T_3 = logic_xor ? _logic_T_2 : 32'h0; // @[AMOALU.scala 97:8]
+  wire [31:0] logic_ = _logic_T_1 | _logic_T_3; // @[AMOALU.scala 96:42]
+  wire [31:0] _out_T_1 = logic_and | logic_xor ? logic_ : minmax; // @[AMOALU.scala 100:8]
+  wire [31:0] out = add ? adder_out : _out_T_1; // @[AMOALU.scala 99:8]
+  wire [7:0] _wmask_T_5 = io_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wmask_T_7 = io_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wmask_T_9 = io_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wmask_T_11 = io_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] wmask = {_wmask_T_11,_wmask_T_9,_wmask_T_7,_wmask_T_5}; // @[Cat.scala 31:58]
+  wire [31:0] _io_out_T = wmask & out; // @[AMOALU.scala 104:19]
+  wire [31:0] _io_out_T_1 = ~wmask; // @[AMOALU.scala 104:27]
+  wire [31:0] _io_out_T_2 = _io_out_T_1 & io_lhs; // @[AMOALU.scala 104:34]
+  assign io_out = _io_out_T | _io_out_T_2; // @[AMOALU.scala 104:25]
+endmodule
+module DCache(
+  input         clock,
+  input         reset,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output        auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_b_ready,
+  input         auto_out_b_valid,
+  input  [1:0]  auto_out_b_bits_param,
+  input  [3:0]  auto_out_b_bits_size,
+  input         auto_out_b_bits_source,
+  input  [30:0] auto_out_b_bits_address,
+  input         auto_out_c_ready,
+  output        auto_out_c_valid,
+  output [2:0]  auto_out_c_bits_opcode,
+  output [2:0]  auto_out_c_bits_param,
+  output [3:0]  auto_out_c_bits_size,
+  output        auto_out_c_bits_source,
+  output [30:0] auto_out_c_bits_address,
+  output [31:0] auto_out_c_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input         auto_out_d_bits_source,
+  input  [1:0]  auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_e_ready,
+  output        auto_out_e_valid,
+  output [1:0]  auto_out_e_bits_sink,
+  output        io_cpu_req_ready,
+  input         io_cpu_req_valid,
+  input  [31:0] io_cpu_req_bits_addr,
+  input  [5:0]  io_cpu_req_bits_tag,
+  input  [4:0]  io_cpu_req_bits_cmd,
+  input  [1:0]  io_cpu_req_bits_size,
+  input         io_cpu_req_bits_signed,
+  input  [1:0]  io_cpu_req_bits_dprv,
+  input         io_cpu_s1_kill,
+  input  [31:0] io_cpu_s1_data_data,
+  input  [3:0]  io_cpu_s1_data_mask,
+  output        io_cpu_s2_nack,
+  output        io_cpu_resp_valid,
+  output [31:0] io_cpu_resp_bits_addr,
+  output [5:0]  io_cpu_resp_bits_tag,
+  output [4:0]  io_cpu_resp_bits_cmd,
+  output [1:0]  io_cpu_resp_bits_size,
+  output        io_cpu_resp_bits_signed,
+  output [1:0]  io_cpu_resp_bits_dprv,
+  output        io_cpu_resp_bits_dv,
+  output [31:0] io_cpu_resp_bits_data,
+  output [3:0]  io_cpu_resp_bits_mask,
+  output        io_cpu_resp_bits_replay,
+  output        io_cpu_resp_bits_has_data,
+  output [31:0] io_cpu_resp_bits_data_word_bypass,
+  output [31:0] io_cpu_resp_bits_data_raw,
+  output [31:0] io_cpu_resp_bits_store_data,
+  output        io_cpu_replay_next,
+  output        io_cpu_s2_xcpt_ma_ld,
+  output        io_cpu_s2_xcpt_ma_st,
+  output        io_cpu_s2_xcpt_pf_ld,
+  output        io_cpu_s2_xcpt_pf_st,
+  output        io_cpu_s2_xcpt_gf_ld,
+  output        io_cpu_s2_xcpt_gf_st,
+  output        io_cpu_s2_xcpt_ae_ld,
+  output        io_cpu_s2_xcpt_ae_st,
+  output        io_cpu_ordered,
+  output        io_cpu_perf_release,
+  output        io_cpu_perf_grant,
+  input         io_ptw_status_debug,
+  input         io_ptw_pmp_0_cfg_l,
+  input  [1:0]  io_ptw_pmp_0_cfg_a,
+  input         io_ptw_pmp_0_cfg_x,
+  input         io_ptw_pmp_0_cfg_w,
+  input         io_ptw_pmp_0_cfg_r,
+  input  [28:0] io_ptw_pmp_0_addr,
+  input  [30:0] io_ptw_pmp_0_mask,
+  input         io_ptw_pmp_1_cfg_l,
+  input  [1:0]  io_ptw_pmp_1_cfg_a,
+  input         io_ptw_pmp_1_cfg_x,
+  input         io_ptw_pmp_1_cfg_w,
+  input         io_ptw_pmp_1_cfg_r,
+  input  [28:0] io_ptw_pmp_1_addr,
+  input  [30:0] io_ptw_pmp_1_mask,
+  input         io_ptw_pmp_2_cfg_l,
+  input  [1:0]  io_ptw_pmp_2_cfg_a,
+  input         io_ptw_pmp_2_cfg_x,
+  input         io_ptw_pmp_2_cfg_w,
+  input         io_ptw_pmp_2_cfg_r,
+  input  [28:0] io_ptw_pmp_2_addr,
+  input  [30:0] io_ptw_pmp_2_mask,
+  input         io_ptw_pmp_3_cfg_l,
+  input  [1:0]  io_ptw_pmp_3_cfg_a,
+  input         io_ptw_pmp_3_cfg_x,
+  input         io_ptw_pmp_3_cfg_w,
+  input         io_ptw_pmp_3_cfg_r,
+  input  [28:0] io_ptw_pmp_3_addr,
+  input  [30:0] io_ptw_pmp_3_mask,
+  input         io_ptw_pmp_4_cfg_l,
+  input  [1:0]  io_ptw_pmp_4_cfg_a,
+  input         io_ptw_pmp_4_cfg_x,
+  input         io_ptw_pmp_4_cfg_w,
+  input         io_ptw_pmp_4_cfg_r,
+  input  [28:0] io_ptw_pmp_4_addr,
+  input  [30:0] io_ptw_pmp_4_mask,
+  input         io_ptw_pmp_5_cfg_l,
+  input  [1:0]  io_ptw_pmp_5_cfg_a,
+  input         io_ptw_pmp_5_cfg_x,
+  input         io_ptw_pmp_5_cfg_w,
+  input         io_ptw_pmp_5_cfg_r,
+  input  [28:0] io_ptw_pmp_5_addr,
+  input  [30:0] io_ptw_pmp_5_mask,
+  input         io_ptw_pmp_6_cfg_l,
+  input  [1:0]  io_ptw_pmp_6_cfg_a,
+  input         io_ptw_pmp_6_cfg_x,
+  input         io_ptw_pmp_6_cfg_w,
+  input         io_ptw_pmp_6_cfg_r,
+  input  [28:0] io_ptw_pmp_6_addr,
+  input  [30:0] io_ptw_pmp_6_mask,
+  input         io_ptw_pmp_7_cfg_l,
+  input  [1:0]  io_ptw_pmp_7_cfg_a,
+  input         io_ptw_pmp_7_cfg_x,
+  input         io_ptw_pmp_7_cfg_w,
+  input         io_ptw_pmp_7_cfg_r,
+  input  [28:0] io_ptw_pmp_7_addr,
+  input  [30:0] io_ptw_pmp_7_mask, // <no_sram>
+  output [5:0]  tag_array_ext_RW0_addr, // <no_sram>
+  output        tag_array_ext_RW0_en, // <no_sram>
+  output        tag_array_ext_RW0_clk, // <no_sram>
+  output        tag_array_ext_RW0_wmode, // <no_sram>
+  output [20:0] tag_array_ext_RW0_wdata, // <no_sram>
+  input  [20:0] tag_array_ext_RW0_rdata, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask // <no_sram>
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+  reg [31:0] _RAND_47;
+  reg [31:0] _RAND_48;
+  reg [31:0] _RAND_49;
+  reg [31:0] _RAND_50;
+  reg [31:0] _RAND_51;
+  reg [31:0] _RAND_52;
+  reg [31:0] _RAND_53;
+  reg [31:0] _RAND_54;
+  reg [31:0] _RAND_55;
+  reg [31:0] _RAND_56;
+  reg [31:0] _RAND_57;
+  reg [31:0] _RAND_58;
+  reg [31:0] _RAND_59;
+  reg [31:0] _RAND_60;
+  reg [31:0] _RAND_61;
+  reg [31:0] _RAND_62;
+  reg [31:0] _RAND_63;
+  reg [31:0] _RAND_64;
+  reg [31:0] _RAND_65;
+  reg [31:0] _RAND_66;
+  reg [31:0] _RAND_67;
+  reg [31:0] _RAND_68;
+  reg [31:0] _RAND_69;
+  reg [31:0] _RAND_70;
+  reg [31:0] _RAND_71;
+  reg [31:0] _RAND_72;
+  reg [31:0] _RAND_73;
+  reg [31:0] _RAND_74;
+  reg [31:0] _RAND_75;
+  reg [31:0] _RAND_76;
+  reg [31:0] _RAND_77;
+  reg [31:0] _RAND_78;
+  reg [31:0] _RAND_79;
+`endif // RANDOMIZE_REG_INIT
+  wire  tlb_io_req_valid; // @[DCache.scala 117:19]
+  wire [31:0] tlb_io_req_bits_vaddr; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_req_bits_size; // @[DCache.scala 117:19]
+  wire [4:0] tlb_io_req_bits_cmd; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_req_bits_prv; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_resp_paddr; // @[DCache.scala 117:19]
+  wire  tlb_io_resp_pf_ld; // @[DCache.scala 117:19]
+  wire  tlb_io_resp_pf_st; // @[DCache.scala 117:19]
+  wire  tlb_io_resp_ae_ld; // @[DCache.scala 117:19]
+  wire  tlb_io_resp_ae_st; // @[DCache.scala 117:19]
+  wire  tlb_io_resp_ma_ld; // @[DCache.scala 117:19]
+  wire  tlb_io_resp_ma_st; // @[DCache.scala 117:19]
+  wire  tlb_io_resp_cacheable; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_status_debug; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_0_cfg_l; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_ptw_pmp_0_cfg_a; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_0_cfg_x; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_0_cfg_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_0_cfg_r; // @[DCache.scala 117:19]
+  wire [28:0] tlb_io_ptw_pmp_0_addr; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_ptw_pmp_0_mask; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_1_cfg_l; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_ptw_pmp_1_cfg_a; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_1_cfg_x; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_1_cfg_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_1_cfg_r; // @[DCache.scala 117:19]
+  wire [28:0] tlb_io_ptw_pmp_1_addr; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_ptw_pmp_1_mask; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_2_cfg_l; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_ptw_pmp_2_cfg_a; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_2_cfg_x; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_2_cfg_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_2_cfg_r; // @[DCache.scala 117:19]
+  wire [28:0] tlb_io_ptw_pmp_2_addr; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_ptw_pmp_2_mask; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_3_cfg_l; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_ptw_pmp_3_cfg_a; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_3_cfg_x; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_3_cfg_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_3_cfg_r; // @[DCache.scala 117:19]
+  wire [28:0] tlb_io_ptw_pmp_3_addr; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_ptw_pmp_3_mask; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_4_cfg_l; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_ptw_pmp_4_cfg_a; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_4_cfg_x; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_4_cfg_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_4_cfg_r; // @[DCache.scala 117:19]
+  wire [28:0] tlb_io_ptw_pmp_4_addr; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_ptw_pmp_4_mask; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_5_cfg_l; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_ptw_pmp_5_cfg_a; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_5_cfg_x; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_5_cfg_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_5_cfg_r; // @[DCache.scala 117:19]
+  wire [28:0] tlb_io_ptw_pmp_5_addr; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_ptw_pmp_5_mask; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_6_cfg_l; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_ptw_pmp_6_cfg_a; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_6_cfg_x; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_6_cfg_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_6_cfg_r; // @[DCache.scala 117:19]
+  wire [28:0] tlb_io_ptw_pmp_6_addr; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_ptw_pmp_6_mask; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_7_cfg_l; // @[DCache.scala 117:19]
+  wire [1:0] tlb_io_ptw_pmp_7_cfg_a; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_7_cfg_x; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_7_cfg_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_7_cfg_r; // @[DCache.scala 117:19]
+  wire [28:0] tlb_io_ptw_pmp_7_addr; // @[DCache.scala 117:19]
+  wire [30:0] tlb_io_ptw_pmp_7_mask; // @[DCache.scala 117:19]
+  wire  pma_checker_io_req_valid; // @[DCache.scala 118:27]
+  wire [31:0] pma_checker_io_req_bits_vaddr; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_req_bits_size; // @[DCache.scala 118:27]
+  wire [4:0] pma_checker_io_req_bits_cmd; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_req_bits_prv; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_resp_paddr; // @[DCache.scala 118:27]
+  wire  pma_checker_io_resp_pf_ld; // @[DCache.scala 118:27]
+  wire  pma_checker_io_resp_pf_st; // @[DCache.scala 118:27]
+  wire  pma_checker_io_resp_ae_ld; // @[DCache.scala 118:27]
+  wire  pma_checker_io_resp_ae_st; // @[DCache.scala 118:27]
+  wire  pma_checker_io_resp_ma_ld; // @[DCache.scala 118:27]
+  wire  pma_checker_io_resp_ma_st; // @[DCache.scala 118:27]
+  wire  pma_checker_io_resp_cacheable; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_status_debug; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_0_cfg_l; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_ptw_pmp_0_cfg_a; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_0_cfg_x; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_0_cfg_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_0_cfg_r; // @[DCache.scala 118:27]
+  wire [28:0] pma_checker_io_ptw_pmp_0_addr; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_ptw_pmp_0_mask; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_1_cfg_l; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_ptw_pmp_1_cfg_a; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_1_cfg_x; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_1_cfg_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_1_cfg_r; // @[DCache.scala 118:27]
+  wire [28:0] pma_checker_io_ptw_pmp_1_addr; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_ptw_pmp_1_mask; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_2_cfg_l; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_ptw_pmp_2_cfg_a; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_2_cfg_x; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_2_cfg_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_2_cfg_r; // @[DCache.scala 118:27]
+  wire [28:0] pma_checker_io_ptw_pmp_2_addr; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_ptw_pmp_2_mask; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_3_cfg_l; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_ptw_pmp_3_cfg_a; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_3_cfg_x; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_3_cfg_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_3_cfg_r; // @[DCache.scala 118:27]
+  wire [28:0] pma_checker_io_ptw_pmp_3_addr; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_ptw_pmp_3_mask; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_4_cfg_l; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_ptw_pmp_4_cfg_a; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_4_cfg_x; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_4_cfg_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_4_cfg_r; // @[DCache.scala 118:27]
+  wire [28:0] pma_checker_io_ptw_pmp_4_addr; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_ptw_pmp_4_mask; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_5_cfg_l; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_ptw_pmp_5_cfg_a; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_5_cfg_x; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_5_cfg_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_5_cfg_r; // @[DCache.scala 118:27]
+  wire [28:0] pma_checker_io_ptw_pmp_5_addr; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_ptw_pmp_5_mask; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_6_cfg_l; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_ptw_pmp_6_cfg_a; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_6_cfg_x; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_6_cfg_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_6_cfg_r; // @[DCache.scala 118:27]
+  wire [28:0] pma_checker_io_ptw_pmp_6_addr; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_ptw_pmp_6_mask; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_7_cfg_l; // @[DCache.scala 118:27]
+  wire [1:0] pma_checker_io_ptw_pmp_7_cfg_a; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_7_cfg_x; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_7_cfg_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_7_cfg_r; // @[DCache.scala 118:27]
+  wire [28:0] pma_checker_io_ptw_pmp_7_addr; // @[DCache.scala 118:27]
+  wire [30:0] pma_checker_io_ptw_pmp_7_mask; // @[DCache.scala 118:27]
+  wire  lfsr_prng_clock; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_reset; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_increment; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_0; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_1; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_2; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_3; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_4; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_5; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_6; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_7; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_8; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_9; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_10; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_11; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_12; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_13; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_14; // @[PRNG.scala 91:22]
+  wire  lfsr_prng_io_out_15; // @[PRNG.scala 91:22]
+  wire  metaArb_io_in_0_valid; // @[DCache.scala 122:23]
+  wire [31:0] metaArb_io_in_0_bits_addr; // @[DCache.scala 122:23]
+  wire [5:0] metaArb_io_in_0_bits_idx; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_2_valid; // @[DCache.scala 122:23]
+  wire [31:0] metaArb_io_in_2_bits_addr; // @[DCache.scala 122:23]
+  wire [5:0] metaArb_io_in_2_bits_idx; // @[DCache.scala 122:23]
+  wire [20:0] metaArb_io_in_2_bits_data; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_3_valid; // @[DCache.scala 122:23]
+  wire [31:0] metaArb_io_in_3_bits_addr; // @[DCache.scala 122:23]
+  wire [5:0] metaArb_io_in_3_bits_idx; // @[DCache.scala 122:23]
+  wire [20:0] metaArb_io_in_3_bits_data; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_4_ready; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_4_valid; // @[DCache.scala 122:23]
+  wire [31:0] metaArb_io_in_4_bits_addr; // @[DCache.scala 122:23]
+  wire [5:0] metaArb_io_in_4_bits_idx; // @[DCache.scala 122:23]
+  wire [20:0] metaArb_io_in_4_bits_data; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_5_ready; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_5_valid; // @[DCache.scala 122:23]
+  wire [31:0] metaArb_io_in_5_bits_addr; // @[DCache.scala 122:23]
+  wire [5:0] metaArb_io_in_5_bits_idx; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_6_ready; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_6_valid; // @[DCache.scala 122:23]
+  wire [31:0] metaArb_io_in_6_bits_addr; // @[DCache.scala 122:23]
+  wire [5:0] metaArb_io_in_6_bits_idx; // @[DCache.scala 122:23]
+  wire [20:0] metaArb_io_in_6_bits_data; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_7_ready; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_7_valid; // @[DCache.scala 122:23]
+  wire [31:0] metaArb_io_in_7_bits_addr; // @[DCache.scala 122:23]
+  wire [5:0] metaArb_io_in_7_bits_idx; // @[DCache.scala 122:23]
+  wire [20:0] metaArb_io_in_7_bits_data; // @[DCache.scala 122:23]
+  wire  metaArb_io_out_valid; // @[DCache.scala 122:23]
+  wire  metaArb_io_out_bits_write; // @[DCache.scala 122:23]
+  wire [31:0] metaArb_io_out_bits_addr; // @[DCache.scala 122:23]
+  wire [5:0] metaArb_io_out_bits_idx; // @[DCache.scala 122:23]
+  wire [20:0] metaArb_io_out_bits_data; // @[DCache.scala 122:23]
+  wire [5:0] tag_array_RW0_addr; // @[DescribedSRAM.scala 19:26]
+  wire  tag_array_RW0_en; // @[DescribedSRAM.scala 19:26]
+  wire  tag_array_RW0_clk; // @[DescribedSRAM.scala 19:26]
+  wire  tag_array_RW0_wmode; // @[DescribedSRAM.scala 19:26]
+  wire [20:0] tag_array_RW0_wdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [20:0] tag_array_RW0_rdata_0; // @[DescribedSRAM.scala 19:26]
+  wire  data_clock; // @[DCache.scala 132:20]
+  wire  data_io_req_valid; // @[DCache.scala 132:20]
+  wire [11:0] data_io_req_bits_addr; // @[DCache.scala 132:20]
+  wire  data_io_req_bits_write; // @[DCache.scala 132:20]
+  wire [31:0] data_io_req_bits_wdata; // @[DCache.scala 132:20]
+  wire [3:0] data_io_req_bits_eccMask; // @[DCache.scala 132:20]
+  wire [31:0] data_io_resp_0; // @[DCache.scala 132:20]
+  wire  dataArb_io_in_0_valid; // @[DCache.scala 133:23]
+  wire [11:0] dataArb_io_in_0_bits_addr; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_0_bits_write; // @[DCache.scala 133:23]
+  wire [31:0] dataArb_io_in_0_bits_wdata; // @[DCache.scala 133:23]
+  wire [3:0] dataArb_io_in_0_bits_eccMask; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_1_ready; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_1_valid; // @[DCache.scala 133:23]
+  wire [11:0] dataArb_io_in_1_bits_addr; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_1_bits_write; // @[DCache.scala 133:23]
+  wire [31:0] dataArb_io_in_1_bits_wdata; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_2_ready; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_2_valid; // @[DCache.scala 133:23]
+  wire [11:0] dataArb_io_in_2_bits_addr; // @[DCache.scala 133:23]
+  wire [31:0] dataArb_io_in_2_bits_wdata; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_3_ready; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_3_valid; // @[DCache.scala 133:23]
+  wire [11:0] dataArb_io_in_3_bits_addr; // @[DCache.scala 133:23]
+  wire [31:0] dataArb_io_in_3_bits_wdata; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_3_bits_wordMask; // @[DCache.scala 133:23]
+  wire  dataArb_io_out_valid; // @[DCache.scala 133:23]
+  wire [11:0] dataArb_io_out_bits_addr; // @[DCache.scala 133:23]
+  wire  dataArb_io_out_bits_write; // @[DCache.scala 133:23]
+  wire [31:0] dataArb_io_out_bits_wdata; // @[DCache.scala 133:23]
+  wire [3:0] dataArb_io_out_bits_eccMask; // @[DCache.scala 133:23]
+  wire [3:0] amoalu_io_mask; // @[DCache.scala 956:26]
+  wire [4:0] amoalu_io_cmd; // @[DCache.scala 956:26]
+  wire [31:0] amoalu_io_lhs; // @[DCache.scala 956:26]
+  wire [31:0] amoalu_io_rhs; // @[DCache.scala 956:26]
+  wire [31:0] amoalu_io_out; // @[DCache.scala 956:26]
+  wire  s1_valid_x12 = io_cpu_req_ready & io_cpu_req_valid; // @[Decoupled.scala 50:35]
+  reg  s1_valid; // @[DCache.scala 162:21]
+  reg [2:0] blockProbeAfterGrantCount; // @[DCache.scala 643:38]
+  wire  _block_probe_for_core_progress_T = blockProbeAfterGrantCount > 3'h0; // @[DCache.scala 741:65]
+  reg [6:0] lrscCount; // @[DCache.scala 447:22]
+  wire  lrscValid = lrscCount > 7'h3; // @[DCache.scala 448:29]
+  wire  block_probe_for_core_progress = blockProbeAfterGrantCount > 3'h0 | lrscValid; // @[DCache.scala 741:69]
+  reg  s1_probe; // @[DCache.scala 163:21]
+  reg  s2_probe; // @[DCache.scala 308:21]
+  reg [3:0] release_state; // @[DCache.scala 208:26]
+  wire  releaseInFlight = s1_probe | s2_probe | release_state != 4'h0; // @[DCache.scala 309:46]
+  reg  release_ack_wait; // @[DCache.scala 206:29]
+  reg [30:0] release_ack_addr; // @[DCache.scala 207:29]
+  wire [30:0] _block_probe_for_pending_release_ack_T = auto_out_b_bits_address ^ release_ack_addr; // @[DCache.scala 742:88]
+  wire  block_probe_for_pending_release_ack = release_ack_wait & _block_probe_for_pending_release_ack_T[21:6] == 16'h0; // @[DCache.scala 742:62]
+  reg  grantInProgress; // @[DCache.scala 642:28]
+  wire  block_probe_for_ordering = releaseInFlight | block_probe_for_pending_release_ack | grantInProgress; // @[DCache.scala 743:89]
+  reg  s2_valid; // @[DCache.scala 306:21]
+  wire  tl_out__b_ready = metaArb_io_in_6_ready & ~(block_probe_for_core_progress | block_probe_for_ordering | s1_valid
+     | s2_valid); // @[DCache.scala 745:44]
+  wire  s1_probe_x16 = tl_out__b_ready & auto_out_b_valid; // @[Decoupled.scala 50:35]
+  reg [1:0] probe_bits_param; // @[Reg.scala 16:16]
+  reg [3:0] probe_bits_size; // @[Reg.scala 16:16]
+  reg  probe_bits_source; // @[Reg.scala 16:16]
+  reg [30:0] probe_bits_address; // @[Reg.scala 16:16]
+  wire  s1_valid_masked = s1_valid & ~io_cpu_s1_kill; // @[DCache.scala 166:34]
+  reg [1:0] s2_probe_state_state; // @[Reg.scala 16:16]
+  wire [3:0] _T_107 = {probe_bits_param,s2_probe_state_state}; // @[Cat.scala 31:58]
+  wire  _T_164 = 4'h3 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_160 = 4'h2 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_156 = 4'h1 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_152 = 4'h0 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_148 = 4'h7 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_144 = 4'h6 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_140 = 4'h5 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_136 = 4'h4 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_132 = 4'hb == _T_107; // @[Misc.scala 55:20]
+  wire  _T_128 = 4'ha == _T_107; // @[Misc.scala 55:20]
+  wire  _T_124 = 4'h9 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_120 = 4'h8 == _T_107; // @[Misc.scala 55:20]
+  wire  _T_137 = _T_136 ? 1'h0 : _T_132; // @[Misc.scala 37:9]
+  wire  _T_141 = _T_140 ? 1'h0 : _T_137; // @[Misc.scala 37:9]
+  wire  _T_145 = _T_144 ? 1'h0 : _T_141; // @[Misc.scala 37:9]
+  wire  _T_153 = _T_152 ? 1'h0 : _T_148 | _T_145; // @[Misc.scala 37:9]
+  wire  _T_157 = _T_156 ? 1'h0 : _T_153; // @[Misc.scala 37:9]
+  wire  _T_161 = _T_160 ? 1'h0 : _T_157; // @[Misc.scala 37:9]
+  wire  s2_prb_ack_data = _T_164 | _T_161; // @[Misc.scala 37:9]
+  wire  _T_293 = s2_probe_state_state > 2'h0; // @[Metadata.scala 49:45]
+  reg [9:0] counter_1; // @[Edges.scala 228:27]
+  wire  _T_298 = release_state == 4'h1; // @[package.scala 15:47]
+  wire  _T_299 = release_state == 4'h6; // @[package.scala 15:47]
+  wire  _T_300 = release_state == 4'h9; // @[package.scala 15:47]
+  wire  _T_302 = _T_298 | _T_299 | _T_300; // @[package.scala 72:59]
+  wire [2:0] _GEN_325 = _T_300 ? 3'h6 : 3'h7; // @[DCache.scala 839:52 840:23 845:23]
+  wire  _T_297 = release_state == 4'h2; // @[DCache.scala 834:25]
+  wire [2:0] _GEN_317 = release_state == 4'h2 ? 3'h5 : 3'h4; // @[DCache.scala 834:48 835:21]
+  wire [2:0] tl_out__c_bits_opcode = _T_302 ? _GEN_325 : _GEN_317; // @[DCache.scala 838:102]
+  wire  beats1_opdata_1 = tl_out__c_bits_opcode[0]; // @[Edges.scala 101:36]
+  wire [3:0] tl_out__c_bits_size = _T_302 ? 4'h6 : probe_bits_size; // @[DCache.scala 838:102]
+  wire [26:0] _beats1_decode_T_5 = 27'hfff << tl_out__c_bits_size; // @[package.scala 234:77]
+  wire [11:0] _beats1_decode_T_7 = ~_beats1_decode_T_5[11:0]; // @[package.scala 234:46]
+  wire [9:0] beats1_decode_1 = _beats1_decode_T_7[11:2]; // @[Edges.scala 219:59]
+  wire [9:0] beats1_1 = beats1_opdata_1 ? beats1_decode_1 : 10'h0; // @[Edges.scala 220:14]
+  wire  c_last = counter_1 == 10'h1 | beats1_1 == 10'h0; // @[Edges.scala 231:37]
+  reg  s2_release_data_valid; // @[DCache.scala 777:34]
+  wire  c_first = counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire  _GEN_266 = s2_prb_ack_data ? s2_release_data_valid & ~(c_first & release_ack_wait) : 1'h1; // @[DCache.scala 785:18 803:36]
+  wire  _GEN_287 = s2_probe ? _GEN_266 : s2_release_data_valid & ~(c_first & release_ack_wait); // @[DCache.scala 785:18 799:21]
+  wire  _GEN_304 = release_state == 4'h5 | _GEN_287; // @[DCache.scala 825:47 826:22]
+  wire  tl_out__c_valid = release_state == 4'h3 | _GEN_304; // @[DCache.scala 829:48 830:22]
+  wire  _T_287 = auto_out_c_ready & tl_out__c_valid; // @[Decoupled.scala 50:35]
+  wire  releaseDone = c_last & _T_287; // @[Edges.scala 232:22]
+  wire  _GEN_264 = _T_293 | ~releaseDone; // @[DCache.scala 805:45 811:19]
+  wire  probeNack = s2_prb_ack_data | _GEN_264; // @[DCache.scala 803:36]
+  reg [4:0] s1_req_cmd; // @[Reg.scala 16:16]
+  wire  _s1_read_T = s1_req_cmd == 5'h0; // @[package.scala 15:47]
+  wire  _s1_read_T_1 = s1_req_cmd == 5'h10; // @[package.scala 15:47]
+  wire  _s1_read_T_2 = s1_req_cmd == 5'h6; // @[package.scala 15:47]
+  wire  _s1_read_T_3 = s1_req_cmd == 5'h7; // @[package.scala 15:47]
+  wire  _s1_read_T_6 = _s1_read_T | _s1_read_T_1 | _s1_read_T_2 | _s1_read_T_3; // @[package.scala 72:59]
+  wire  _s1_read_T_7 = s1_req_cmd == 5'h4; // @[package.scala 15:47]
+  wire  _s1_read_T_8 = s1_req_cmd == 5'h9; // @[package.scala 15:47]
+  wire  _s1_read_T_9 = s1_req_cmd == 5'ha; // @[package.scala 15:47]
+  wire  _s1_read_T_10 = s1_req_cmd == 5'hb; // @[package.scala 15:47]
+  wire  _s1_read_T_13 = _s1_read_T_7 | _s1_read_T_8 | _s1_read_T_9 | _s1_read_T_10; // @[package.scala 72:59]
+  wire  _s1_read_T_14 = s1_req_cmd == 5'h8; // @[package.scala 15:47]
+  wire  _s1_read_T_15 = s1_req_cmd == 5'hc; // @[package.scala 15:47]
+  wire  _s1_read_T_16 = s1_req_cmd == 5'hd; // @[package.scala 15:47]
+  wire  _s1_read_T_17 = s1_req_cmd == 5'he; // @[package.scala 15:47]
+  wire  _s1_read_T_18 = s1_req_cmd == 5'hf; // @[package.scala 15:47]
+  wire  _s1_read_T_22 = _s1_read_T_14 | _s1_read_T_15 | _s1_read_T_16 | _s1_read_T_17 | _s1_read_T_18; // @[package.scala 72:59]
+  wire  _s1_read_T_23 = _s1_read_T_13 | _s1_read_T_22; // @[Consts.scala 82:44]
+  wire  s1_read = _s1_read_T_6 | _s1_read_T_23; // @[Consts.scala 84:68]
+  reg [4:0] s2_req_cmd; // @[DCache.scala 314:19]
+  wire  _s2_write_T_1 = s2_req_cmd == 5'h11; // @[Consts.scala 85:49]
+  wire  _s2_write_T_3 = s2_req_cmd == 5'h7; // @[Consts.scala 85:66]
+  wire  _s2_write_T_5 = s2_req_cmd == 5'h4; // @[package.scala 15:47]
+  wire  _s2_write_T_6 = s2_req_cmd == 5'h9; // @[package.scala 15:47]
+  wire  _s2_write_T_7 = s2_req_cmd == 5'ha; // @[package.scala 15:47]
+  wire  _s2_write_T_8 = s2_req_cmd == 5'hb; // @[package.scala 15:47]
+  wire  _s2_write_T_11 = _s2_write_T_5 | _s2_write_T_6 | _s2_write_T_7 | _s2_write_T_8; // @[package.scala 72:59]
+  wire  _s2_write_T_12 = s2_req_cmd == 5'h8; // @[package.scala 15:47]
+  wire  _s2_write_T_13 = s2_req_cmd == 5'hc; // @[package.scala 15:47]
+  wire  _s2_write_T_14 = s2_req_cmd == 5'hd; // @[package.scala 15:47]
+  wire  _s2_write_T_15 = s2_req_cmd == 5'he; // @[package.scala 15:47]
+  wire  _s2_write_T_16 = s2_req_cmd == 5'hf; // @[package.scala 15:47]
+  wire  _s2_write_T_20 = _s2_write_T_12 | _s2_write_T_13 | _s2_write_T_14 | _s2_write_T_15 | _s2_write_T_16; // @[package.scala 72:59]
+  wire  _s2_write_T_21 = _s2_write_T_11 | _s2_write_T_20; // @[Consts.scala 82:44]
+  wire  s2_write = s2_req_cmd == 5'h1 | s2_req_cmd == 5'h11 | s2_req_cmd == 5'h7 | _s2_write_T_21; // @[Consts.scala 85:76]
+  reg  pstore1_held; // @[DCache.scala 479:29]
+  wire  pstore1_valid_likely = s2_valid & s2_write | pstore1_held; // @[DCache.scala 480:51]
+  reg [31:0] pstore1_addr; // @[Reg.scala 16:16]
+  reg [31:0] s1_req_addr; // @[Reg.scala 16:16]
+  wire [31:0] s1_vaddr = {s1_req_addr[31:12],s1_req_addr[11:0]}; // @[Cat.scala 31:58]
+  wire  _s1_write_T_1 = s1_req_cmd == 5'h11; // @[Consts.scala 85:49]
+  wire  s1_write = s1_req_cmd == 5'h1 | s1_req_cmd == 5'h11 | _s1_read_T_3 | _s1_read_T_23; // @[Consts.scala 85:76]
+  reg [3:0] pstore1_mask; // @[Reg.scala 16:16]
+  wire  _s1_hazard_T_10 = |pstore1_mask[3]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_9 = |pstore1_mask[2]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_8 = |pstore1_mask[1]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_7 = |pstore1_mask[0]; // @[DCache.scala 1155:66]
+  wire [3:0] _s1_hazard_T_11 = {_s1_hazard_T_10,_s1_hazard_T_9,_s1_hazard_T_8,_s1_hazard_T_7}; // @[Cat.scala 31:58]
+  wire [3:0] _s1_hazard_T_16 = {_s1_hazard_T_11[3],_s1_hazard_T_11[2],_s1_hazard_T_11[1],_s1_hazard_T_11[0]}; // @[Cat.scala 31:58]
+  reg [1:0] s1_req_size; // @[Reg.scala 16:16]
+  wire  s1_mask_xwr_upper = s1_req_addr[0] | s1_req_size >= 2'h1; // @[AMOALU.scala 17:46]
+  wire  s1_mask_xwr_lower = s1_req_addr[0] ? 1'h0 : 1'h1; // @[AMOALU.scala 18:22]
+  wire [1:0] _s1_mask_xwr_T = {s1_mask_xwr_upper,s1_mask_xwr_lower}; // @[Cat.scala 31:58]
+  wire [1:0] _s1_mask_xwr_upper_T_5 = s1_req_addr[1] ? _s1_mask_xwr_T : 2'h0; // @[AMOALU.scala 17:22]
+  wire [1:0] _s1_mask_xwr_upper_T_7 = s1_req_size >= 2'h2 ? 2'h3 : 2'h0; // @[AMOALU.scala 17:51]
+  wire [1:0] s1_mask_xwr_upper_1 = _s1_mask_xwr_upper_T_5 | _s1_mask_xwr_upper_T_7; // @[AMOALU.scala 17:46]
+  wire [1:0] s1_mask_xwr_lower_1 = s1_req_addr[1] ? 2'h0 : _s1_mask_xwr_T; // @[AMOALU.scala 18:22]
+  wire [3:0] s1_mask_xwr = {s1_mask_xwr_upper_1,s1_mask_xwr_lower_1}; // @[Cat.scala 31:58]
+  wire  _s1_hazard_T_24 = |s1_mask_xwr[3]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_23 = |s1_mask_xwr[2]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_22 = |s1_mask_xwr[1]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_21 = |s1_mask_xwr[0]; // @[DCache.scala 1155:66]
+  wire [3:0] _s1_hazard_T_25 = {_s1_hazard_T_24,_s1_hazard_T_23,_s1_hazard_T_22,_s1_hazard_T_21}; // @[Cat.scala 31:58]
+  wire [3:0] _s1_hazard_T_30 = {_s1_hazard_T_25[3],_s1_hazard_T_25[2],_s1_hazard_T_25[1],_s1_hazard_T_25[0]}; // @[Cat.scala 31:58]
+  wire [3:0] _s1_hazard_T_31 = _s1_hazard_T_16 & _s1_hazard_T_30; // @[DCache.scala 537:38]
+  wire [3:0] _s1_hazard_T_33 = pstore1_mask & s1_mask_xwr; // @[DCache.scala 537:77]
+  wire  _s1_hazard_T_35 = s1_write ? |_s1_hazard_T_31 : |_s1_hazard_T_33; // @[DCache.scala 537:8]
+  wire  _s1_hazard_T_36 = pstore1_addr[11:2] == s1_vaddr[11:2] & _s1_hazard_T_35; // @[DCache.scala 536:65]
+  reg  pstore2_valid; // @[DCache.scala 476:30]
+  reg [31:0] pstore2_addr; // @[Reg.scala 16:16]
+  reg [3:0] mask; // @[DCache.scala 506:19]
+  wire  _s1_hazard_T_48 = |mask[3]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_47 = |mask[2]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_46 = |mask[1]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_45 = |mask[0]; // @[DCache.scala 1155:66]
+  wire [3:0] _s1_hazard_T_49 = {_s1_hazard_T_48,_s1_hazard_T_47,_s1_hazard_T_46,_s1_hazard_T_45}; // @[Cat.scala 31:58]
+  wire [3:0] _s1_hazard_T_54 = {_s1_hazard_T_49[3],_s1_hazard_T_49[2],_s1_hazard_T_49[1],_s1_hazard_T_49[0]}; // @[Cat.scala 31:58]
+  wire [3:0] _s1_hazard_T_69 = _s1_hazard_T_54 & _s1_hazard_T_30; // @[DCache.scala 537:38]
+  wire [3:0] _s1_hazard_T_71 = mask & s1_mask_xwr; // @[DCache.scala 537:77]
+  wire  _s1_hazard_T_73 = s1_write ? |_s1_hazard_T_69 : |_s1_hazard_T_71; // @[DCache.scala 537:8]
+  wire  _s1_hazard_T_74 = pstore2_addr[11:2] == s1_vaddr[11:2] & _s1_hazard_T_73; // @[DCache.scala 536:65]
+  wire  _s1_hazard_T_75 = pstore2_valid & _s1_hazard_T_74; // @[DCache.scala 540:21]
+  wire  s1_hazard = pstore1_valid_likely & _s1_hazard_T_36 | _s1_hazard_T_75; // @[DCache.scala 539:69]
+  wire  s1_raw_hazard = s1_read & s1_hazard; // @[DCache.scala 541:31]
+  wire [7:0] _s2_valid_no_xcpt_T = {io_cpu_s2_xcpt_ma_ld,io_cpu_s2_xcpt_ma_st,io_cpu_s2_xcpt_pf_ld,io_cpu_s2_xcpt_pf_st,
+    io_cpu_s2_xcpt_gf_ld,io_cpu_s2_xcpt_gf_st,io_cpu_s2_xcpt_ae_ld,io_cpu_s2_xcpt_ae_st}; // @[DCache.scala 307:54]
+  wire  s2_valid_no_xcpt = s2_valid & ~(|_s2_valid_no_xcpt_T); // @[DCache.scala 307:35]
+  reg  s2_not_nacked_in_s1; // @[DCache.scala 310:36]
+  wire  s2_valid_masked = s2_valid_no_xcpt & s2_not_nacked_in_s1; // @[DCache.scala 312:42]
+  wire  _c_cat_T_48 = s2_req_cmd == 5'h6; // @[Consts.scala 86:71]
+  wire  _c_cat_T_49 = s2_write | s2_req_cmd == 5'h3 | s2_req_cmd == 5'h6; // @[Consts.scala 86:64]
+  reg [1:0] s2_hit_state_state; // @[Reg.scala 16:16]
+  wire [3:0] _T_44 = {s2_write,_c_cat_T_49,s2_hit_state_state}; // @[Cat.scala 31:58]
+  wire  _T_102 = 4'h3 == _T_44; // @[Misc.scala 48:20]
+  wire  _T_99 = 4'h2 == _T_44; // @[Misc.scala 48:20]
+  wire  _T_96 = 4'h1 == _T_44; // @[Misc.scala 48:20]
+  wire  _T_93 = 4'h7 == _T_44; // @[Misc.scala 48:20]
+  wire  _T_90 = 4'h6 == _T_44; // @[Misc.scala 48:20]
+  wire  _T_87 = 4'hf == _T_44; // @[Misc.scala 48:20]
+  wire  _T_84 = 4'he == _T_44; // @[Misc.scala 48:20]
+  wire  _T_81 = 4'h0 == _T_44; // @[Misc.scala 48:20]
+  wire  _T_78 = 4'h5 == _T_44; // @[Misc.scala 48:20]
+  wire  _T_75 = 4'h4 == _T_44; // @[Misc.scala 48:20]
+  wire  _T_72 = 4'hd == _T_44; // @[Misc.scala 48:20]
+  wire  _T_69 = 4'hc == _T_44; // @[Misc.scala 48:20]
+  wire  s2_hit = _T_102 | (_T_99 | (_T_96 | (_T_93 | (_T_90 | (_T_87 | _T_84))))); // @[Misc.scala 34:9]
+  wire  s2_valid_hit_maybe_flush_pre_data_ecc_and_waw = s2_valid_masked & s2_hit; // @[DCache.scala 372:89]
+  wire  _s2_read_T = s2_req_cmd == 5'h0; // @[package.scala 15:47]
+  wire  _s2_read_T_1 = s2_req_cmd == 5'h10; // @[package.scala 15:47]
+  wire  _s2_read_T_6 = _s2_read_T | _s2_read_T_1 | _c_cat_T_48 | _s2_write_T_3; // @[package.scala 72:59]
+  wire  s2_read = _s2_read_T_6 | _s2_write_T_21; // @[Consts.scala 84:68]
+  wire  s2_readwrite = s2_read | s2_write; // @[DCache.scala 329:30]
+  wire  s2_valid_hit_pre_data_ecc_and_waw = s2_valid_hit_maybe_flush_pre_data_ecc_and_waw & s2_readwrite; // @[DCache.scala 393:89]
+  wire [1:0] _T_71 = _T_69 ? 2'h1 : 2'h0; // @[Misc.scala 34:36]
+  wire [1:0] _T_74 = _T_72 ? 2'h2 : _T_71; // @[Misc.scala 34:36]
+  wire [1:0] _T_77 = _T_75 ? 2'h1 : _T_74; // @[Misc.scala 34:36]
+  wire [1:0] _T_80 = _T_78 ? 2'h2 : _T_77; // @[Misc.scala 34:36]
+  wire [1:0] _T_83 = _T_81 ? 2'h0 : _T_80; // @[Misc.scala 34:36]
+  wire [1:0] _T_86 = _T_84 ? 2'h3 : _T_83; // @[Misc.scala 34:36]
+  wire [1:0] _T_89 = _T_87 ? 2'h3 : _T_86; // @[Misc.scala 34:36]
+  wire [1:0] _T_92 = _T_90 ? 2'h2 : _T_89; // @[Misc.scala 34:36]
+  wire [1:0] _T_95 = _T_93 ? 2'h3 : _T_92; // @[Misc.scala 34:36]
+  wire [1:0] _T_98 = _T_96 ? 2'h1 : _T_95; // @[Misc.scala 34:36]
+  wire [1:0] _T_101 = _T_99 ? 2'h2 : _T_98; // @[Misc.scala 34:36]
+  wire [1:0] s2_grow_param = _T_102 ? 2'h3 : _T_101; // @[Misc.scala 34:36]
+  wire  _s2_update_meta_T = s2_hit_state_state == s2_grow_param; // @[Metadata.scala 45:46]
+  wire  s2_update_meta = ~_s2_update_meta_T; // @[Metadata.scala 46:40]
+  wire  _T_232 = io_cpu_s2_nack | s2_valid_hit_pre_data_ecc_and_waw & s2_update_meta; // @[DCache.scala 421:24]
+  wire  s1_readwrite = s1_read | s1_write; // @[DCache.scala 192:30]
+  wire  s1_flush_line = s1_req_cmd == 5'h5 & s1_req_size[0]; // @[DCache.scala 194:50]
+  wire  s1_cmd_uses_tlb = s1_readwrite | s1_flush_line | s1_req_cmd == 5'h17; // @[DCache.scala 250:55]
+  wire  _GEN_140 = s1_valid & s1_raw_hazard | _T_232; // @[DCache.scala 546:{36,46}]
+  wire  _GEN_285 = probeNack | _GEN_140; // @[DCache.scala 814:{24,34}]
+  wire  s1_nack = s2_probe ? _GEN_285 : _GEN_140; // @[DCache.scala 799:21]
+  wire  _s1_valid_not_nacked_T = ~s1_nack; // @[DCache.scala 167:41]
+  wire  s1_valid_not_nacked = s1_valid & ~s1_nack; // @[DCache.scala 167:38]
+  wire  s0_clk_en = metaArb_io_out_valid & ~metaArb_io_out_bits_write; // @[DCache.scala 170:40]
+  wire [31:0] s0_req_addr = {metaArb_io_out_bits_addr[31:6],io_cpu_req_bits_addr[5:0]}; // @[Cat.scala 31:58]
+  wire  s0_req_phys = ~metaArb_io_in_7_ready; // @[DCache.scala 175:9]
+  reg [5:0] s1_req_tag; // @[Reg.scala 16:16]
+  reg  s1_req_signed; // @[Reg.scala 16:16]
+  reg [1:0] s1_req_dprv; // @[Reg.scala 16:16]
+  reg [31:0] s1_tlb_req_vaddr; // @[Reg.scala 16:16]
+  reg [1:0] s1_tlb_req_size; // @[Reg.scala 16:16]
+  reg [4:0] s1_tlb_req_cmd; // @[Reg.scala 16:16]
+  reg [1:0] s1_tlb_req_prv; // @[Reg.scala 16:16]
+  wire  s1_sfence = s1_req_cmd == 5'h14 | s1_req_cmd == 5'h15 | s1_req_cmd == 5'h16; // @[DCache.scala 193:71]
+  reg  s1_flush_valid; // @[DCache.scala 195:27]
+  reg  cached_grant_wait; // @[DCache.scala 203:30]
+  reg  resetting; // @[DCache.scala 204:26]
+  reg [5:0] flushCounter; // @[DCache.scala 205:25]
+  wire  inWriteback = _T_298 | _T_297; // @[package.scala 72:59]
+  wire  _io_cpu_req_ready_T = release_state == 4'h0; // @[DCache.scala 213:38]
+  wire  _io_cpu_req_ready_T_1 = ~cached_grant_wait; // @[DCache.scala 213:54]
+  reg  uncachedInFlight_0; // @[DCache.scala 216:33]
+  reg [31:0] uncachedReqs_0_addr; // @[DCache.scala 217:25]
+  reg [5:0] uncachedReqs_0_tag; // @[DCache.scala 217:25]
+  reg [1:0] uncachedReqs_0_size; // @[DCache.scala 217:25]
+  reg  uncachedReqs_0_signed; // @[DCache.scala 217:25]
+  wire  _s0_read_T = io_cpu_req_bits_cmd == 5'h0; // @[package.scala 15:47]
+  wire  _s0_read_T_1 = io_cpu_req_bits_cmd == 5'h10; // @[package.scala 15:47]
+  wire  _s0_read_T_2 = io_cpu_req_bits_cmd == 5'h6; // @[package.scala 15:47]
+  wire  _s0_read_T_3 = io_cpu_req_bits_cmd == 5'h7; // @[package.scala 15:47]
+  wire  _s0_read_T_6 = _s0_read_T | _s0_read_T_1 | _s0_read_T_2 | _s0_read_T_3; // @[package.scala 72:59]
+  wire  _s0_read_T_7 = io_cpu_req_bits_cmd == 5'h4; // @[package.scala 15:47]
+  wire  _s0_read_T_8 = io_cpu_req_bits_cmd == 5'h9; // @[package.scala 15:47]
+  wire  _s0_read_T_9 = io_cpu_req_bits_cmd == 5'ha; // @[package.scala 15:47]
+  wire  _s0_read_T_10 = io_cpu_req_bits_cmd == 5'hb; // @[package.scala 15:47]
+  wire  _s0_read_T_13 = _s0_read_T_7 | _s0_read_T_8 | _s0_read_T_9 | _s0_read_T_10; // @[package.scala 72:59]
+  wire  _s0_read_T_14 = io_cpu_req_bits_cmd == 5'h8; // @[package.scala 15:47]
+  wire  _s0_read_T_15 = io_cpu_req_bits_cmd == 5'hc; // @[package.scala 15:47]
+  wire  _s0_read_T_16 = io_cpu_req_bits_cmd == 5'hd; // @[package.scala 15:47]
+  wire  _s0_read_T_17 = io_cpu_req_bits_cmd == 5'he; // @[package.scala 15:47]
+  wire  _s0_read_T_18 = io_cpu_req_bits_cmd == 5'hf; // @[package.scala 15:47]
+  wire  _s0_read_T_22 = _s0_read_T_14 | _s0_read_T_15 | _s0_read_T_16 | _s0_read_T_17 | _s0_read_T_18; // @[package.scala 72:59]
+  wire  _s0_read_T_23 = _s0_read_T_13 | _s0_read_T_22; // @[Consts.scala 82:44]
+  wire  s0_read = _s0_read_T_6 | _s0_read_T_23; // @[Consts.scala 84:68]
+  wire  _dataArb_io_in_3_valid_res_T = io_cpu_req_bits_cmd == 5'h1; // @[package.scala 15:47]
+  wire  _dataArb_io_in_3_valid_res_T_1 = io_cpu_req_bits_cmd == 5'h3; // @[package.scala 15:47]
+  wire  _dataArb_io_in_3_valid_res_T_2 = _dataArb_io_in_3_valid_res_T | _dataArb_io_in_3_valid_res_T_1; // @[package.scala 72:59]
+  wire  res = ~_dataArb_io_in_3_valid_res_T_2; // @[DCache.scala 1159:15]
+  wire  _dataArb_io_in_3_valid_T_26 = io_cpu_req_bits_cmd == 5'h11; // @[Consts.scala 85:49]
+  wire  _dataArb_io_in_3_valid_T_47 = _dataArb_io_in_3_valid_res_T | io_cpu_req_bits_cmd == 5'h11 | _s0_read_T_3 |
+    _s0_read_T_23; // @[Consts.scala 85:76]
+  wire  _dataArb_io_in_3_valid_T_51 = _dataArb_io_in_3_valid_T_47 & _dataArb_io_in_3_valid_T_26; // @[DCache.scala 1165:23]
+  wire  _dataArb_io_in_3_valid_T_52 = s0_read | _dataArb_io_in_3_valid_T_51; // @[DCache.scala 1164:21]
+  wire  _dataArb_io_in_3_valid_T_56 = ~reset; // @[DCache.scala 1160:11]
+  wire  _dataArb_io_in_3_valid_T_58 = io_cpu_req_valid & res; // @[DCache.scala 222:46]
+  wire [31:0] _dataArb_io_in_3_bits_addr_T_2 = {io_cpu_req_bits_addr[31:12],io_cpu_req_bits_addr[11:0]}; // @[Cat.scala 31:58]
+  wire  _GEN_33 = ~dataArb_io_in_3_ready & s0_read ? 1'h0 : release_state == 4'h0 & ~cached_grant_wait &
+    _s1_valid_not_nacked_T; // @[DCache.scala 213:20 238:{45,64}]
+  wire  _s1_did_read_T_54 = dataArb_io_in_3_ready & (io_cpu_req_valid & _dataArb_io_in_3_valid_T_52); // @[DCache.scala 239:54]
+  reg  s1_did_read; // @[Reg.scala 16:16]
+  reg  s1_read_mask; // @[Reg.scala 16:16]
+  wire  _GEN_36 = s0_req_phys ? 1'h0 : _GEN_33; // @[DCache.scala 247:{34,53}]
+  wire [30:0] s1_paddr = {tlb_io_resp_paddr[30:12],s1_req_addr[11:0]}; // @[Cat.scala 31:58]
+  wire  _T_19 = metaArb_io_out_valid & metaArb_io_out_bits_write; // @[DCache.scala 285:27]
+  wire [5:0] _GEN_42 = metaArb_io_out_bits_idx; // @[DCache.scala 285:50]
+  wire [20:0] _WIRE_2 = tag_array_RW0_rdata_0;
+  wire [18:0] s1_meta_uncorrected_0_tag = _WIRE_2[18:0]; // @[DCache.scala 290:80]
+  wire [1:0] s1_meta_uncorrected_0_coh_state = _WIRE_2[20:19]; // @[DCache.scala 290:80]
+  wire [18:0] s1_tag = s1_paddr[30:12]; // @[DCache.scala 291:29]
+  wire  _T_27 = s1_meta_uncorrected_0_tag == s1_tag; // @[DCache.scala 292:83]
+  wire  _T_29 = ~s1_flush_valid; // @[DCache.scala 294:62]
+  wire [15:0] tl_d_data_encoded_lo = {auto_out_d_bits_data[15:8],auto_out_d_bits_data[7:0]}; // @[Cat.scala 31:58]
+  wire [15:0] tl_d_data_encoded_hi = {auto_out_d_bits_data[31:24],auto_out_d_bits_data[23:16]}; // @[Cat.scala 31:58]
+  wire [31:0] _tl_d_data_encoded_T_4 = {auto_out_d_bits_data[31:24],auto_out_d_bits_data[23:16],auto_out_d_bits_data[15:
+    8],auto_out_d_bits_data[7:0]}; // @[Cat.scala 31:58]
+  wire [3:0] _T_36 = ~io_cpu_s1_data_mask; // @[DCache.scala 304:71]
+  wire [3:0] _T_37 = s1_mask_xwr | _T_36; // @[DCache.scala 304:69]
+  wire  s2_valid_x44 = s1_valid_masked & ~s1_sfence; // @[DCache.scala 306:43]
+  reg [31:0] s2_req_addr; // @[DCache.scala 314:19]
+  reg [5:0] s2_req_tag; // @[DCache.scala 314:19]
+  reg [1:0] s2_req_size; // @[DCache.scala 314:19]
+  reg  s2_req_signed; // @[DCache.scala 314:19]
+  reg [1:0] s2_req_dprv; // @[DCache.scala 314:19]
+  wire  _s2_cmd_flush_all_T = s2_req_cmd == 5'h5; // @[DCache.scala 315:37]
+  wire  s2_cmd_flush_line = _s2_cmd_flush_all_T & s2_req_size[0]; // @[DCache.scala 316:54]
+  reg  s2_tlb_xcpt_pf_ld; // @[DCache.scala 317:24]
+  reg  s2_tlb_xcpt_pf_st; // @[DCache.scala 317:24]
+  reg  s2_tlb_xcpt_ae_ld; // @[DCache.scala 317:24]
+  reg  s2_tlb_xcpt_ae_st; // @[DCache.scala 317:24]
+  reg  s2_tlb_xcpt_ma_ld; // @[DCache.scala 317:24]
+  reg  s2_tlb_xcpt_ma_st; // @[DCache.scala 317:24]
+  reg  s2_pma_cacheable; // @[DCache.scala 318:19]
+  reg [31:0] s2_uncached_resp_addr; // @[DCache.scala 319:34]
+  wire  _T_43 = s1_valid_not_nacked | s1_flush_valid; // @[DCache.scala 320:29]
+  wire [31:0] _GEN_51 = s1_valid_not_nacked | s1_flush_valid ? {{1'd0}, s1_paddr} : s2_req_addr; // @[DCache.scala 320:48 322:17 314:19]
+  wire [5:0] _GEN_52 = s1_valid_not_nacked | s1_flush_valid ? s1_req_tag : s2_req_tag; // @[DCache.scala 320:48 321:12 314:19]
+  wire [4:0] _GEN_53 = s1_valid_not_nacked | s1_flush_valid ? s1_req_cmd : s2_req_cmd; // @[DCache.scala 320:48 321:12 314:19]
+  wire [1:0] _GEN_54 = s1_valid_not_nacked | s1_flush_valid ? s1_req_size : s2_req_size; // @[DCache.scala 320:48 321:12 314:19]
+  wire  _GEN_55 = s1_valid_not_nacked | s1_flush_valid ? s1_req_signed : s2_req_signed; // @[DCache.scala 320:48 321:12 314:19]
+  reg [31:0] s2_vaddr_r; // @[Reg.scala 16:16]
+  wire [31:0] s2_vaddr = {s2_vaddr_r[31:12],s2_req_addr[11:0]}; // @[Cat.scala 31:58]
+  reg  s2_flush_valid_pre_tag_ecc; // @[DCache.scala 330:43]
+  wire  s1_meta_clk_en = _T_43 | s1_probe; // @[DCache.scala 332:62]
+  reg [20:0] s2_meta_corrected_r; // @[Reg.scala 16:16]
+  wire [18:0] s2_meta_corrected_0_tag = s2_meta_corrected_r[18:0]; // @[DCache.scala 336:99]
+  wire [1:0] s2_meta_corrected_0_coh_state = s2_meta_corrected_r[20:19]; // @[DCache.scala 336:99]
+  wire  en = s1_valid | inWriteback | io_cpu_replay_next; // @[DCache.scala 341:38]
+  wire  word_en = inWriteback | s1_did_read & s1_read_mask; // @[DCache.scala 342:22]
+  wire [31:0] s1_all_data_ways_0 = data_io_resp_0; // @[DCache.scala 300:{29,29}]
+  wire  s1_word_en = ~io_cpu_replay_next ? word_en : 1'h1; // @[DCache.scala 352:27]
+  wire  grantIsUncachedData = auto_out_d_bits_opcode == 3'h1; // @[package.scala 15:47]
+  reg  blockUncachedGrant; // @[DCache.scala 725:33]
+  wire  grantIsRefill = auto_out_d_bits_opcode == 3'h5; // @[DCache.scala 641:29]
+  wire  _T_281 = ~dataArb_io_in_1_ready; // @[DCache.scala 697:26]
+  wire  _grantIsCached_T = auto_out_d_bits_opcode == 3'h4; // @[package.scala 15:47]
+  wire  grantIsCached = _grantIsCached_T | grantIsRefill; // @[package.scala 72:59]
+  reg [9:0] counter; // @[Edges.scala 228:27]
+  wire  d_first = counter == 10'h0; // @[Edges.scala 230:25]
+  wire  canAcceptCachedGrant = ~_T_302; // @[DCache.scala 645:30]
+  wire  _bundleOut_0_d_ready_T_3 = grantIsCached ? (~d_first | auto_out_e_ready) & canAcceptCachedGrant : 1'h1; // @[DCache.scala 646:24]
+  wire  _GEN_235 = grantIsRefill & ~dataArb_io_in_1_ready ? 1'h0 : _bundleOut_0_d_ready_T_3; // @[DCache.scala 646:18 697:51 699:20]
+  wire  tl_out__d_ready = grantIsUncachedData & (blockUncachedGrant | s1_valid) ? 1'h0 : _GEN_235; // @[DCache.scala 727:68 728:22]
+  wire  _T_261 = tl_out__d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire  _T_257 = auto_out_d_bits_opcode == 3'h0; // @[package.scala 15:47]
+  wire  _T_258 = auto_out_d_bits_opcode == 3'h2; // @[package.scala 15:47]
+  wire  grantIsUncached = grantIsUncachedData | _T_257 | _T_258; // @[package.scala 72:59]
+  wire [1:0] _GEN_191 = grantIsUncachedData ? 2'h2 : 2'h1; // @[DCache.scala 666:34 669:25]
+  wire [1:0] _GEN_200 = grantIsUncached ? _GEN_191 : 2'h1; // @[DCache.scala 659:35]
+  wire [1:0] _GEN_213 = grantIsCached ? 2'h1 : _GEN_200; // @[DCache.scala 650:26]
+  wire [1:0] s1_data_way = _T_261 ? _GEN_213 : 2'h1; // @[DCache.scala 649:26]
+  wire [1:0] _s2_data_T_1 = s1_word_en ? s1_data_way : 2'h0; // @[DCache.scala 354:28]
+  wire [31:0] _s2_data_T_4 = _s2_data_T_1[0] ? s1_all_data_ways_0 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _s2_data_T_5 = _s2_data_T_1[1] ? _tl_d_data_encoded_T_4 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _s2_data_T_6 = _s2_data_T_4 | _s2_data_T_5; // @[Mux.scala 27:73]
+  reg [31:0] s2_data; // @[Reg.scala 16:16]
+  wire  s2_hit_valid = s2_hit_state_state > 2'h0; // @[Metadata.scala 49:45]
+  wire [15:0] s2_data_corrected_lo = {s2_data[15:8],s2_data[7:0]}; // @[Cat.scala 31:58]
+  wire [15:0] s2_data_corrected_hi = {s2_data[31:24],s2_data[23:16]}; // @[Cat.scala 31:58]
+  wire [31:0] s2_data_corrected = {s2_data[31:24],s2_data[23:16],s2_data[15:8],s2_data[7:0]}; // @[Cat.scala 31:58]
+  wire  s2_valid_flush_line = s2_valid_hit_maybe_flush_pre_data_ecc_and_waw & s2_cmd_flush_line; // @[DCache.scala 394:75]
+  wire  s2_valid_miss = s2_valid_masked & s2_readwrite & ~s2_hit; // @[DCache.scala 398:73]
+  wire  s2_uncached = ~s2_pma_cacheable; // @[DCache.scala 399:21]
+  wire  _s2_valid_cached_miss_T = ~s2_uncached; // @[DCache.scala 400:47]
+  wire  _s2_valid_cached_miss_T_2 = |uncachedInFlight_0; // @[DCache.scala 400:88]
+  wire  s2_valid_cached_miss = s2_valid_miss & ~s2_uncached & ~(|uncachedInFlight_0); // @[DCache.scala 400:60]
+  wire  s2_want_victimize = s2_valid_cached_miss | s2_valid_flush_line | s2_flush_valid_pre_tag_ecc; // @[DCache.scala 402:125]
+  wire  _s2_cannot_victimize_T = ~s2_flush_valid_pre_tag_ecc; // @[DCache.scala 403:29]
+  wire  s2_valid_uncached_pending = s2_valid_miss & s2_uncached & ~(&uncachedInFlight_0); // @[DCache.scala 405:64]
+  wire [18:0] s2_victim_tag = s2_valid_flush_line ? s2_req_addr[30:12] : s2_meta_corrected_0_tag; // @[DCache.scala 408:26]
+  wire [1:0] s2_victim_state_state = s2_hit_valid ? s2_hit_state_state : s2_meta_corrected_0_coh_state; // @[DCache.scala 409:28]
+  wire [2:0] _T_122 = _T_120 ? 3'h5 : 3'h0; // @[Misc.scala 37:36]
+  wire [2:0] _T_126 = _T_124 ? 3'h2 : _T_122; // @[Misc.scala 37:36]
+  wire [2:0] _T_130 = _T_128 ? 3'h1 : _T_126; // @[Misc.scala 37:36]
+  wire [2:0] _T_134 = _T_132 ? 3'h1 : _T_130; // @[Misc.scala 37:36]
+  wire [2:0] _T_138 = _T_136 ? 3'h5 : _T_134; // @[Misc.scala 37:36]
+  wire [2:0] _T_142 = _T_140 ? 3'h4 : _T_138; // @[Misc.scala 37:36]
+  wire [1:0] _T_143 = _T_140 ? 2'h1 : 2'h0; // @[Misc.scala 37:63]
+  wire [2:0] _T_146 = _T_144 ? 3'h0 : _T_142; // @[Misc.scala 37:36]
+  wire [1:0] _T_147 = _T_144 ? 2'h1 : _T_143; // @[Misc.scala 37:63]
+  wire [2:0] _T_150 = _T_148 ? 3'h0 : _T_146; // @[Misc.scala 37:36]
+  wire [1:0] _T_151 = _T_148 ? 2'h1 : _T_147; // @[Misc.scala 37:63]
+  wire [2:0] _T_154 = _T_152 ? 3'h5 : _T_150; // @[Misc.scala 37:36]
+  wire [1:0] _T_155 = _T_152 ? 2'h0 : _T_151; // @[Misc.scala 37:63]
+  wire [2:0] _T_158 = _T_156 ? 3'h4 : _T_154; // @[Misc.scala 37:36]
+  wire [1:0] _T_159 = _T_156 ? 2'h1 : _T_155; // @[Misc.scala 37:63]
+  wire [2:0] _T_162 = _T_160 ? 3'h3 : _T_158; // @[Misc.scala 37:36]
+  wire [1:0] _T_163 = _T_160 ? 2'h2 : _T_159; // @[Misc.scala 37:63]
+  wire [2:0] s2_report_param = _T_164 ? 3'h3 : _T_162; // @[Misc.scala 37:36]
+  wire [1:0] probeNewCoh_state = _T_164 ? 2'h2 : _T_163; // @[Misc.scala 37:63]
+  wire [3:0] _T_172 = {2'h2,s2_victim_state_state}; // @[Cat.scala 31:58]
+  wire  _T_185 = 4'h8 == _T_172; // @[Misc.scala 55:20]
+  wire [2:0] _T_187 = _T_185 ? 3'h5 : 3'h0; // @[Misc.scala 37:36]
+  wire  _T_189 = 4'h9 == _T_172; // @[Misc.scala 55:20]
+  wire [2:0] _T_191 = _T_189 ? 3'h2 : _T_187; // @[Misc.scala 37:36]
+  wire  _T_193 = 4'ha == _T_172; // @[Misc.scala 55:20]
+  wire [2:0] _T_195 = _T_193 ? 3'h1 : _T_191; // @[Misc.scala 37:36]
+  wire  _T_197 = 4'hb == _T_172; // @[Misc.scala 55:20]
+  wire [2:0] _T_199 = _T_197 ? 3'h1 : _T_195; // @[Misc.scala 37:36]
+  wire  _T_201 = 4'h4 == _T_172; // @[Misc.scala 55:20]
+  wire  _T_202 = _T_201 ? 1'h0 : _T_197; // @[Misc.scala 37:9]
+  wire [2:0] _T_203 = _T_201 ? 3'h5 : _T_199; // @[Misc.scala 37:36]
+  wire  _T_205 = 4'h5 == _T_172; // @[Misc.scala 55:20]
+  wire  _T_206 = _T_205 ? 1'h0 : _T_202; // @[Misc.scala 37:9]
+  wire [2:0] _T_207 = _T_205 ? 3'h4 : _T_203; // @[Misc.scala 37:36]
+  wire [1:0] _T_208 = _T_205 ? 2'h1 : 2'h0; // @[Misc.scala 37:63]
+  wire  _T_209 = 4'h6 == _T_172; // @[Misc.scala 55:20]
+  wire  _T_210 = _T_209 ? 1'h0 : _T_206; // @[Misc.scala 37:9]
+  wire [2:0] _T_211 = _T_209 ? 3'h0 : _T_207; // @[Misc.scala 37:36]
+  wire [1:0] _T_212 = _T_209 ? 2'h1 : _T_208; // @[Misc.scala 37:63]
+  wire  _T_213 = 4'h7 == _T_172; // @[Misc.scala 55:20]
+  wire [2:0] _T_215 = _T_213 ? 3'h0 : _T_211; // @[Misc.scala 37:36]
+  wire [1:0] _T_216 = _T_213 ? 2'h1 : _T_212; // @[Misc.scala 37:63]
+  wire  _T_217 = 4'h0 == _T_172; // @[Misc.scala 55:20]
+  wire  _T_218 = _T_217 ? 1'h0 : _T_213 | _T_210; // @[Misc.scala 37:9]
+  wire [2:0] _T_219 = _T_217 ? 3'h5 : _T_215; // @[Misc.scala 37:36]
+  wire [1:0] _T_220 = _T_217 ? 2'h0 : _T_216; // @[Misc.scala 37:63]
+  wire  _T_221 = 4'h1 == _T_172; // @[Misc.scala 55:20]
+  wire  _T_222 = _T_221 ? 1'h0 : _T_218; // @[Misc.scala 37:9]
+  wire [2:0] _T_223 = _T_221 ? 3'h4 : _T_219; // @[Misc.scala 37:36]
+  wire [1:0] _T_224 = _T_221 ? 2'h1 : _T_220; // @[Misc.scala 37:63]
+  wire  _T_225 = 4'h2 == _T_172; // @[Misc.scala 55:20]
+  wire  _T_226 = _T_225 ? 1'h0 : _T_222; // @[Misc.scala 37:9]
+  wire [2:0] _T_227 = _T_225 ? 3'h3 : _T_223; // @[Misc.scala 37:36]
+  wire [1:0] _T_228 = _T_225 ? 2'h2 : _T_224; // @[Misc.scala 37:63]
+  wire  _T_229 = 4'h3 == _T_172; // @[Misc.scala 55:20]
+  wire  s2_victim_dirty = _T_229 | _T_226; // @[Misc.scala 37:9]
+  wire [2:0] s2_shrink_param = _T_229 ? 3'h3 : _T_227; // @[Misc.scala 37:36]
+  wire [1:0] voluntaryNewCoh_state = _T_229 ? 2'h2 : _T_228; // @[Misc.scala 37:63]
+  wire  s2_dont_nack_uncached = s2_valid_uncached_pending & auto_out_a_ready; // @[DCache.scala 415:57]
+  wire  _s2_dont_nack_misc_T_10 = s2_req_cmd == 5'h17; // @[DCache.scala 419:17]
+  wire  s2_dont_nack_misc = s2_valid_masked & _s2_dont_nack_misc_T_10; // @[DCache.scala 416:61]
+  wire  _io_cpu_s2_nack_T_4 = ~s2_valid_hit_pre_data_ecc_and_waw; // @[DCache.scala 420:89]
+  wire [18:0] metaArb_io_in_2_bits_data_meta_tag = s2_req_addr[30:12]; // @[HellaCache.scala 293:20 294:14]
+  wire  _lrscBackingOff_T = lrscCount > 7'h0; // @[DCache.scala 449:34]
+  wire  lrscBackingOff = lrscCount > 7'h0 & ~lrscValid; // @[DCache.scala 449:38]
+  reg [25:0] lrscAddr; // @[DCache.scala 450:21]
+  wire  lrscAddrMatch = lrscAddr == s2_req_addr[31:6]; // @[DCache.scala 451:32]
+  wire  s2_sc_fail = _s2_write_T_3 & ~(lrscValid & lrscAddrMatch); // @[DCache.scala 452:26]
+  wire [6:0] _lrscCount_T = s2_hit ? 7'h4f : 7'h0; // @[DCache.scala 454:21]
+  wire [6:0] _GEN_122 = s2_valid_hit_pre_data_ecc_and_waw & _c_cat_T_48 & _io_cpu_req_ready_T_1 | s2_valid_cached_miss
+     ? _lrscCount_T : lrscCount; // @[DCache.scala 453:99 454:15 447:22]
+  wire [6:0] _lrscCount_T_2 = lrscCount - 7'h1; // @[DCache.scala 457:49]
+  wire  _pstore1_cmd_T = s1_valid_not_nacked & s1_write; // @[DCache.scala 467:63]
+  reg [4:0] pstore1_cmd; // @[Reg.scala 16:16]
+  reg [31:0] pstore1_data; // @[Reg.scala 16:16]
+  wire  _pstore1_rmw_T_51 = s1_write & _s1_write_T_1; // @[DCache.scala 1165:23]
+  wire  _pstore1_rmw_T_52 = s1_read | _pstore1_rmw_T_51; // @[DCache.scala 1164:21]
+  reg  pstore1_rmw_r; // @[Reg.scala 16:16]
+  wire  _pstore1_merge_T = s2_valid_hit_pre_data_ecc_and_waw & s2_write; // @[DCache.scala 465:46]
+  wire  _pstore1_merge_T_2 = s2_valid_hit_pre_data_ecc_and_waw & s2_write & ~s2_sc_fail; // @[DCache.scala 465:58]
+  wire  pstore_drain_opportunistic = ~_dataArb_io_in_3_valid_T_58; // @[DCache.scala 477:36]
+  reg  pstore_drain_on_miss_REG; // @[DCache.scala 478:56]
+  wire  pstore_drain_on_miss = releaseInFlight | pstore_drain_on_miss_REG; // @[DCache.scala 478:46]
+  wire  pstore1_valid = _pstore1_merge_T_2 | pstore1_held; // @[DCache.scala 482:38]
+  wire  pstore_drain_structural = pstore1_valid_likely & pstore2_valid & (s1_valid & s1_write | pstore1_rmw_r); // @[DCache.scala 484:71]
+  wire  _T_244 = _pstore1_merge_T | pstore1_held; // @[DCache.scala 481:96]
+  wire  _pstore_drain_T_10 = (_T_244 & ~pstore1_rmw_r | pstore2_valid) & (pstore_drain_opportunistic |
+    pstore_drain_on_miss); // @[DCache.scala 493:76]
+  wire  pstore_drain = pstore_drain_structural | _pstore_drain_T_10; // @[DCache.scala 492:48]
+  wire  _pstore1_held_T_9 = ~pstore_drain; // @[DCache.scala 496:91]
+  wire  advance_pstore1 = pstore1_valid & pstore2_valid == pstore_drain; // @[DCache.scala 497:61]
+  wire [31:0] pstore1_storegen_data = amoalu_io_out;
+  reg [7:0] pstore2_storegen_data_r; // @[Reg.scala 16:16]
+  reg [7:0] pstore2_storegen_data_r_1; // @[Reg.scala 16:16]
+  reg [7:0] pstore2_storegen_data_r_2; // @[Reg.scala 16:16]
+  reg [7:0] pstore2_storegen_data_r_3; // @[Reg.scala 16:16]
+  wire [31:0] pstore2_storegen_data = {pstore2_storegen_data_r_3,pstore2_storegen_data_r_2,pstore2_storegen_data_r_1,
+    pstore2_storegen_data_r}; // @[Cat.scala 31:58]
+  wire [3:0] _pstore2_storegen_mask_mask_T = ~pstore1_mask; // @[DCache.scala 509:37]
+  wire [3:0] _pstore2_storegen_mask_mask_T_2 = ~_pstore2_storegen_mask_mask_T; // @[DCache.scala 509:15]
+  wire [31:0] _dataArb_io_in_0_bits_addr_T = pstore2_valid ? pstore2_addr : pstore1_addr; // @[DCache.scala 524:36]
+  wire [31:0] _dataArb_io_in_0_bits_wdata_T = pstore2_valid ? pstore2_storegen_data : pstore1_data; // @[DCache.scala 526:63]
+  wire [15:0] dataArb_io_in_0_bits_wdata_lo = {_dataArb_io_in_0_bits_wdata_T[15:8],_dataArb_io_in_0_bits_wdata_T[7:0]}; // @[Cat.scala 31:58]
+  wire [15:0] dataArb_io_in_0_bits_wdata_hi = {_dataArb_io_in_0_bits_wdata_T[31:24],_dataArb_io_in_0_bits_wdata_T[23:16]
+    }; // @[Cat.scala 31:58]
+  wire [3:0] _dataArb_io_in_0_bits_eccMask_T = pstore2_valid ? mask : pstore1_mask; // @[DCache.scala 532:47]
+  wire  _dataArb_io_in_0_bits_eccMask_T_5 = |_dataArb_io_in_0_bits_eccMask_T[0]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_6 = |_dataArb_io_in_0_bits_eccMask_T[1]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_7 = |_dataArb_io_in_0_bits_eccMask_T[2]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_8 = |_dataArb_io_in_0_bits_eccMask_T[3]; // @[DCache.scala 1155:66]
+  wire [1:0] dataArb_io_in_0_bits_eccMask_lo = {_dataArb_io_in_0_bits_eccMask_T_6,_dataArb_io_in_0_bits_eccMask_T_5}; // @[Cat.scala 31:58]
+  wire [1:0] dataArb_io_in_0_bits_eccMask_hi = {_dataArb_io_in_0_bits_eccMask_T_8,_dataArb_io_in_0_bits_eccMask_T_7}; // @[Cat.scala 31:58]
+  wire  _a_source_T = ~uncachedInFlight_0; // @[DCache.scala 552:34]
+  wire [1:0] _a_source_T_1 = {_a_source_T, 1'h0}; // @[DCache.scala 552:59]
+  wire  a_source = _a_source_T_1[0] ? 1'h0 : 1'h1; // @[Mux.scala 47:70]
+  wire [31:0] acquire_address = {s2_req_addr[31:6], 6'h0}; // @[DCache.scala 553:49]
+  wire [18:0] a_mask = {{15'd0}, pstore1_mask}; // @[DCache.scala 557:29]
+  wire [1:0] _get_a_mask_sizeOH_T_1 = 2'h1 << s2_req_size[0]; // @[OneHot.scala 64:12]
+  wire [1:0] get_a_mask_sizeOH = _get_a_mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _get_a_mask_T = s2_req_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  get_a_mask_size = get_a_mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  get_a_mask_bit = s2_req_addr[1]; // @[Misc.scala 209:26]
+  wire  get_a_mask_nbit = ~get_a_mask_bit; // @[Misc.scala 210:20]
+  wire  get_a_mask_acc = _get_a_mask_T | get_a_mask_size & get_a_mask_nbit; // @[Misc.scala 214:29]
+  wire  get_a_mask_acc_1 = _get_a_mask_T | get_a_mask_size & get_a_mask_bit; // @[Misc.scala 214:29]
+  wire  get_a_mask_size_1 = get_a_mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  get_a_mask_bit_1 = s2_req_addr[0]; // @[Misc.scala 209:26]
+  wire  get_a_mask_nbit_1 = ~get_a_mask_bit_1; // @[Misc.scala 210:20]
+  wire  get_a_mask_eq_2 = get_a_mask_nbit & get_a_mask_nbit_1; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_2 = get_a_mask_acc | get_a_mask_size_1 & get_a_mask_eq_2; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_3 = get_a_mask_nbit & get_a_mask_bit_1; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_3 = get_a_mask_acc | get_a_mask_size_1 & get_a_mask_eq_3; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_4 = get_a_mask_bit & get_a_mask_nbit_1; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_4 = get_a_mask_acc_1 | get_a_mask_size_1 & get_a_mask_eq_4; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_5 = get_a_mask_bit & get_a_mask_bit_1; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_5 = get_a_mask_acc_1 | get_a_mask_size_1 & get_a_mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] get_mask = {get_a_mask_acc_5,get_a_mask_acc_4,get_a_mask_acc_3,get_a_mask_acc_2}; // @[Cat.scala 31:58]
+  wire [2:0] _atomics_T_1_opcode = 5'h4 == s2_req_cmd ? 3'h3 : 3'h0; // @[Mux.scala 81:58]
+  wire [3:0] atomics_a_size = {{2'd0}, s2_req_size}; // @[Edges.scala 513:17 516:15]
+  wire [3:0] _atomics_T_1_size = 5'h4 == s2_req_cmd ? atomics_a_size : 4'h0; // @[Mux.scala 81:58]
+  wire [30:0] atomics_a_address = s2_req_addr[30:0]; // @[Edges.scala 513:17 518:15]
+  wire [30:0] _atomics_T_1_address = 5'h4 == s2_req_cmd ? atomics_a_address : 31'h0; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_1_mask = 5'h4 == s2_req_cmd ? get_mask : 4'h0; // @[Mux.scala 81:58]
+  wire [31:0] _atomics_T_1_data = 5'h4 == s2_req_cmd ? pstore1_data : 32'h0; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_3_opcode = 5'h9 == s2_req_cmd ? 3'h3 : _atomics_T_1_opcode; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_3_param = 5'h9 == s2_req_cmd ? 3'h0 : _atomics_T_1_opcode; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_3_size = 5'h9 == s2_req_cmd ? atomics_a_size : _atomics_T_1_size; // @[Mux.scala 81:58]
+  wire  _atomics_T_3_source = 5'h9 == s2_req_cmd ? a_source : 5'h4 == s2_req_cmd & a_source; // @[Mux.scala 81:58]
+  wire [30:0] _atomics_T_3_address = 5'h9 == s2_req_cmd ? atomics_a_address : _atomics_T_1_address; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_3_mask = 5'h9 == s2_req_cmd ? get_mask : _atomics_T_1_mask; // @[Mux.scala 81:58]
+  wire [31:0] _atomics_T_3_data = 5'h9 == s2_req_cmd ? pstore1_data : _atomics_T_1_data; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_5_opcode = 5'ha == s2_req_cmd ? 3'h3 : _atomics_T_3_opcode; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_5_param = 5'ha == s2_req_cmd ? 3'h1 : _atomics_T_3_param; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_5_size = 5'ha == s2_req_cmd ? atomics_a_size : _atomics_T_3_size; // @[Mux.scala 81:58]
+  wire  _atomics_T_5_source = 5'ha == s2_req_cmd ? a_source : _atomics_T_3_source; // @[Mux.scala 81:58]
+  wire [30:0] _atomics_T_5_address = 5'ha == s2_req_cmd ? atomics_a_address : _atomics_T_3_address; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_5_mask = 5'ha == s2_req_cmd ? get_mask : _atomics_T_3_mask; // @[Mux.scala 81:58]
+  wire [31:0] _atomics_T_5_data = 5'ha == s2_req_cmd ? pstore1_data : _atomics_T_3_data; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_7_opcode = 5'hb == s2_req_cmd ? 3'h3 : _atomics_T_5_opcode; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_7_param = 5'hb == s2_req_cmd ? 3'h2 : _atomics_T_5_param; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_7_size = 5'hb == s2_req_cmd ? atomics_a_size : _atomics_T_5_size; // @[Mux.scala 81:58]
+  wire  _atomics_T_7_source = 5'hb == s2_req_cmd ? a_source : _atomics_T_5_source; // @[Mux.scala 81:58]
+  wire [30:0] _atomics_T_7_address = 5'hb == s2_req_cmd ? atomics_a_address : _atomics_T_5_address; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_7_mask = 5'hb == s2_req_cmd ? get_mask : _atomics_T_5_mask; // @[Mux.scala 81:58]
+  wire [31:0] _atomics_T_7_data = 5'hb == s2_req_cmd ? pstore1_data : _atomics_T_5_data; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_9_opcode = 5'h8 == s2_req_cmd ? 3'h2 : _atomics_T_7_opcode; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_9_param = 5'h8 == s2_req_cmd ? 3'h4 : _atomics_T_7_param; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_9_size = 5'h8 == s2_req_cmd ? atomics_a_size : _atomics_T_7_size; // @[Mux.scala 81:58]
+  wire  _atomics_T_9_source = 5'h8 == s2_req_cmd ? a_source : _atomics_T_7_source; // @[Mux.scala 81:58]
+  wire [30:0] _atomics_T_9_address = 5'h8 == s2_req_cmd ? atomics_a_address : _atomics_T_7_address; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_9_mask = 5'h8 == s2_req_cmd ? get_mask : _atomics_T_7_mask; // @[Mux.scala 81:58]
+  wire [31:0] _atomics_T_9_data = 5'h8 == s2_req_cmd ? pstore1_data : _atomics_T_7_data; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_11_opcode = 5'hc == s2_req_cmd ? 3'h2 : _atomics_T_9_opcode; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_11_param = 5'hc == s2_req_cmd ? 3'h0 : _atomics_T_9_param; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_11_size = 5'hc == s2_req_cmd ? atomics_a_size : _atomics_T_9_size; // @[Mux.scala 81:58]
+  wire  _atomics_T_11_source = 5'hc == s2_req_cmd ? a_source : _atomics_T_9_source; // @[Mux.scala 81:58]
+  wire [30:0] _atomics_T_11_address = 5'hc == s2_req_cmd ? atomics_a_address : _atomics_T_9_address; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_11_mask = 5'hc == s2_req_cmd ? get_mask : _atomics_T_9_mask; // @[Mux.scala 81:58]
+  wire [31:0] _atomics_T_11_data = 5'hc == s2_req_cmd ? pstore1_data : _atomics_T_9_data; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_13_opcode = 5'hd == s2_req_cmd ? 3'h2 : _atomics_T_11_opcode; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_13_param = 5'hd == s2_req_cmd ? 3'h1 : _atomics_T_11_param; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_13_size = 5'hd == s2_req_cmd ? atomics_a_size : _atomics_T_11_size; // @[Mux.scala 81:58]
+  wire  _atomics_T_13_source = 5'hd == s2_req_cmd ? a_source : _atomics_T_11_source; // @[Mux.scala 81:58]
+  wire [30:0] _atomics_T_13_address = 5'hd == s2_req_cmd ? atomics_a_address : _atomics_T_11_address; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_13_mask = 5'hd == s2_req_cmd ? get_mask : _atomics_T_11_mask; // @[Mux.scala 81:58]
+  wire [31:0] _atomics_T_13_data = 5'hd == s2_req_cmd ? pstore1_data : _atomics_T_11_data; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_15_opcode = 5'he == s2_req_cmd ? 3'h2 : _atomics_T_13_opcode; // @[Mux.scala 81:58]
+  wire [2:0] _atomics_T_15_param = 5'he == s2_req_cmd ? 3'h2 : _atomics_T_13_param; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_15_size = 5'he == s2_req_cmd ? atomics_a_size : _atomics_T_13_size; // @[Mux.scala 81:58]
+  wire  _atomics_T_15_source = 5'he == s2_req_cmd ? a_source : _atomics_T_13_source; // @[Mux.scala 81:58]
+  wire [30:0] _atomics_T_15_address = 5'he == s2_req_cmd ? atomics_a_address : _atomics_T_13_address; // @[Mux.scala 81:58]
+  wire [3:0] _atomics_T_15_mask = 5'he == s2_req_cmd ? get_mask : _atomics_T_13_mask; // @[Mux.scala 81:58]
+  wire [31:0] _atomics_T_15_data = 5'he == s2_req_cmd ? pstore1_data : _atomics_T_13_data; // @[Mux.scala 81:58]
+  wire [2:0] atomics_opcode = 5'hf == s2_req_cmd ? 3'h2 : _atomics_T_15_opcode; // @[Mux.scala 81:58]
+  wire [2:0] atomics_param = 5'hf == s2_req_cmd ? 3'h3 : _atomics_T_15_param; // @[Mux.scala 81:58]
+  wire [3:0] atomics_size = 5'hf == s2_req_cmd ? atomics_a_size : _atomics_T_15_size; // @[Mux.scala 81:58]
+  wire  atomics_source = 5'hf == s2_req_cmd ? a_source : _atomics_T_15_source; // @[Mux.scala 81:58]
+  wire [30:0] atomics_address = 5'hf == s2_req_cmd ? atomics_a_address : _atomics_T_15_address; // @[Mux.scala 81:58]
+  wire [3:0] atomics_mask = 5'hf == s2_req_cmd ? get_mask : _atomics_T_15_mask; // @[Mux.scala 81:58]
+  wire [31:0] atomics_data = 5'hf == s2_req_cmd ? pstore1_data : _atomics_T_15_data; // @[Mux.scala 81:58]
+  wire [31:0] _GEN_359 = {{1'd0}, release_ack_addr}; // @[DCache.scala 581:43]
+  wire [31:0] _tl_out_a_valid_T_1 = s2_req_addr ^ _GEN_359; // @[DCache.scala 581:43]
+  wire  _tl_out_a_valid_T_5 = ~(release_ack_wait & _tl_out_a_valid_T_1[21:6] == 16'h0); // @[DCache.scala 581:8]
+  wire  _tl_out_a_valid_T_6 = s2_valid_cached_miss & _tl_out_a_valid_T_5; // @[DCache.scala 580:29]
+  wire  _tl_out_a_valid_T_7 = ~release_ack_wait; // @[DCache.scala 582:45]
+  wire  _tl_out_a_valid_T_10 = ~s2_victim_dirty; // @[DCache.scala 582:89]
+  wire  _tl_out_a_valid_T_12 = _tl_out_a_valid_T_6 & _tl_out_a_valid_T_10; // @[DCache.scala 581:125]
+  wire  tl_out_a_valid = s2_valid_uncached_pending | _tl_out_a_valid_T_12; // @[DCache.scala 579:32]
+  wire [2:0] _tl_out_a_bits_T_6_opcode = ~s2_read ? 3'h0 : atomics_opcode; // @[DCache.scala 586:8]
+  wire [2:0] _tl_out_a_bits_T_6_param = ~s2_read ? 3'h0 : atomics_param; // @[DCache.scala 586:8]
+  wire [3:0] _tl_out_a_bits_T_6_size = ~s2_read ? atomics_a_size : atomics_size; // @[DCache.scala 586:8]
+  wire  _tl_out_a_bits_T_6_source = ~s2_read ? a_source : atomics_source; // @[DCache.scala 586:8]
+  wire [30:0] _tl_out_a_bits_T_6_address = ~s2_read ? atomics_a_address : atomics_address; // @[DCache.scala 586:8]
+  wire [3:0] _tl_out_a_bits_T_6_mask = ~s2_read ? get_mask : atomics_mask; // @[DCache.scala 586:8]
+  wire [31:0] _tl_out_a_bits_T_6_data = ~s2_read ? pstore1_data : atomics_data; // @[DCache.scala 586:8]
+  wire [2:0] _tl_out_a_bits_T_7_opcode = _s2_write_T_1 ? 3'h1 : _tl_out_a_bits_T_6_opcode; // @[DCache.scala 585:8]
+  wire [2:0] _tl_out_a_bits_T_7_param = _s2_write_T_1 ? 3'h0 : _tl_out_a_bits_T_6_param; // @[DCache.scala 585:8]
+  wire [3:0] _tl_out_a_bits_T_7_size = _s2_write_T_1 ? atomics_a_size : _tl_out_a_bits_T_6_size; // @[DCache.scala 585:8]
+  wire  _tl_out_a_bits_T_7_source = _s2_write_T_1 ? a_source : _tl_out_a_bits_T_6_source; // @[DCache.scala 585:8]
+  wire [30:0] _tl_out_a_bits_T_7_address = _s2_write_T_1 ? atomics_a_address : _tl_out_a_bits_T_6_address; // @[DCache.scala 585:8]
+  wire [3:0] putpartial_mask = a_mask[3:0]; // @[Edges.scala 483:17 489:15]
+  wire [3:0] _tl_out_a_bits_T_7_mask = _s2_write_T_1 ? putpartial_mask : _tl_out_a_bits_T_6_mask; // @[DCache.scala 585:8]
+  wire [31:0] _tl_out_a_bits_T_7_data = _s2_write_T_1 ? pstore1_data : _tl_out_a_bits_T_6_data; // @[DCache.scala 585:8]
+  wire [2:0] _tl_out_a_bits_T_8_opcode = ~s2_write ? 3'h4 : _tl_out_a_bits_T_7_opcode; // @[DCache.scala 584:8]
+  wire [2:0] _tl_out_a_bits_T_8_param = ~s2_write ? 3'h0 : _tl_out_a_bits_T_7_param; // @[DCache.scala 584:8]
+  wire [3:0] _tl_out_a_bits_T_8_size = ~s2_write ? atomics_a_size : _tl_out_a_bits_T_7_size; // @[DCache.scala 584:8]
+  wire  _tl_out_a_bits_T_8_source = ~s2_write ? a_source : _tl_out_a_bits_T_7_source; // @[DCache.scala 584:8]
+  wire [30:0] _tl_out_a_bits_T_8_address = ~s2_write ? atomics_a_address : _tl_out_a_bits_T_7_address; // @[DCache.scala 584:8]
+  wire [3:0] _tl_out_a_bits_T_8_mask = ~s2_write ? get_mask : _tl_out_a_bits_T_7_mask; // @[DCache.scala 584:8]
+  wire [31:0] _tl_out_a_bits_T_8_data = ~s2_write ? 32'h0 : _tl_out_a_bits_T_7_data; // @[DCache.scala 584:8]
+  wire [2:0] tl_out_a_bits_a_param = {{1'd0}, s2_grow_param}; // @[Edges.scala 345:17 347:15]
+  wire [30:0] tl_out_a_bits_a_address = acquire_address[30:0]; // @[Edges.scala 345:17 350:15]
+  wire [1:0] _a_sel_T = 2'h1 << a_source; // @[OneHot.scala 64:12]
+  wire  a_sel = _a_sel_T[1]; // @[DCache.scala 605:66]
+  wire  _T_253 = auto_out_a_ready & tl_out_a_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_141 = a_sel | uncachedInFlight_0; // @[DCache.scala 609:18 610:13 216:33]
+  wire  _GEN_154 = s2_uncached ? _GEN_141 : uncachedInFlight_0; // @[DCache.scala 607:24 216:33]
+  wire  _GEN_167 = s2_uncached ? cached_grant_wait : 1'h1; // @[DCache.scala 607:24 203:30 616:25]
+  wire  _GEN_169 = _T_253 ? _GEN_154 : uncachedInFlight_0; // @[DCache.scala 606:26 216:33]
+  wire  _GEN_182 = _T_253 ? _GEN_167 : cached_grant_wait; // @[DCache.scala 606:26 203:30]
+  wire [26:0] _beats1_decode_T_1 = 27'hfff << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _beats1_decode_T_3 = ~_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] beats1_decode = _beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  beats1_opdata = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [9:0] beats1 = beats1_opdata ? beats1_decode : 10'h0; // @[Edges.scala 220:14]
+  wire [9:0] counter1 = counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_last = counter == 10'h1 | beats1 == 10'h0; // @[Edges.scala 231:37]
+  wire  d_done = d_last & _T_261; // @[Edges.scala 232:22]
+  wire [9:0] _count_T = ~counter1; // @[Edges.scala 233:27]
+  wire [9:0] count = beats1 & _count_T; // @[Edges.scala 233:25]
+  wire [11:0] d_address_inc = {count, 2'h0}; // @[Edges.scala 268:29]
+  wire  _tl_d_data_encoded_T_8 = ~grantIsUncached; // @[DCache.scala 638:129]
+  wire  grantIsVoluntary = auto_out_d_bits_opcode == 3'h6; // @[DCache.scala 640:32]
+  wire [2:0] _blockProbeAfterGrantCount_T_1 = blockProbeAfterGrantCount - 3'h1; // @[DCache.scala 644:97]
+  wire [2:0] _GEN_185 = _block_probe_for_core_progress_T ? _blockProbeAfterGrantCount_T_1 : blockProbeAfterGrantCount; // @[DCache.scala 643:38 644:{40,68}]
+  wire [1:0] _uncachedRespIdxOH_T = 2'h1 << auto_out_d_bits_source; // @[OneHot.scala 64:12]
+  wire  uncachedRespIdxOH = _uncachedRespIdxOH_T[1]; // @[DCache.scala 647:90]
+  wire  _T_266 = uncachedRespIdxOH & d_last; // @[DCache.scala 661:17]
+  wire  _GEN_190 = uncachedRespIdxOH & d_last ? 1'h0 : _GEN_169; // @[DCache.scala 661:28 663:13]
+  wire [30:0] dontCareBits = {s1_paddr[30:2], 2'h0}; // @[DCache.scala 676:55]
+  wire [30:0] _GEN_360 = {{29'd0}, uncachedReqs_0_addr[1:0]}; // @[DCache.scala 677:26]
+  wire [30:0] _s2_req_addr_T_1 = dontCareBits | _GEN_360; // @[DCache.scala 677:26]
+  wire  _GEN_198 = grantIsVoluntary ? 1'h0 : release_ack_wait; // @[DCache.scala 682:36 684:24 206:29]
+  wire  _GEN_207 = grantIsUncached ? release_ack_wait : _GEN_198; // @[DCache.scala 206:29 659:35]
+  wire  _GEN_211 = grantIsCached & d_last; // @[DCache.scala 650:26 Replacement.scala 38:11]
+  wire  _GEN_220 = grantIsCached ? release_ack_wait : _GEN_207; // @[DCache.scala 650:26 206:29]
+  wire  _GEN_233 = _T_261 ? _GEN_220 : release_ack_wait; // @[DCache.scala 649:26 206:29]
+  wire  tl_out__e_valid = grantIsRefill & ~dataArb_io_in_1_ready ? 1'h0 : auto_out_d_valid & d_first & grantIsCached &
+    canAcceptCachedGrant; // @[DCache.scala 689:18 697:51 698:20]
+  wire  _T_273 = auto_out_e_ready & tl_out__e_valid; // @[Decoupled.scala 50:35]
+  wire [31:0] _dataArb_io_in_1_bits_addr_T_1 = {s2_vaddr[31:6], 6'h0}; // @[DCache.scala 703:57]
+  wire [31:0] _GEN_361 = {{20'd0}, d_address_inc}; // @[DCache.scala 703:67]
+  wire [31:0] _dataArb_io_in_1_bits_addr_T_2 = _dataArb_io_in_1_bits_addr_T_1 | _GEN_361; // @[DCache.scala 703:67]
+  wire [3:0] _metaArb_io_in_3_bits_data_T_1 = {s2_write,_c_cat_T_49,auto_out_d_bits_param}; // @[Cat.scala 31:58]
+  wire [1:0] _metaArb_io_in_3_bits_data_T_11 = 4'h1 == _metaArb_io_in_3_bits_data_T_1 ? 2'h1 : 2'h0; // @[Mux.scala 81:58]
+  wire [1:0] _metaArb_io_in_3_bits_data_T_13 = 4'h0 == _metaArb_io_in_3_bits_data_T_1 ? 2'h2 :
+    _metaArb_io_in_3_bits_data_T_11; // @[Mux.scala 81:58]
+  wire [1:0] _metaArb_io_in_3_bits_data_T_15 = 4'h4 == _metaArb_io_in_3_bits_data_T_1 ? 2'h2 :
+    _metaArb_io_in_3_bits_data_T_13; // @[Mux.scala 81:58]
+  wire [1:0] metaArb_io_in_3_bits_data_meta_state = 4'hc == _metaArb_io_in_3_bits_data_T_1 ? 2'h3 :
+    _metaArb_io_in_3_bits_data_T_15; // @[Mux.scala 81:58]
+  wire  _GEN_236 = auto_out_d_valid ? 1'h0 : _GEN_36; // @[DCache.scala 730:29 731:26]
+  wire  _GEN_237 = auto_out_d_valid | auto_out_d_valid & grantIsRefill & canAcceptCachedGrant; // @[DCache.scala 696:26 730:29 732:32]
+  wire  _GEN_238 = auto_out_d_valid ? 1'h0 : 1'h1; // @[DCache.scala 730:29 702:33 733:37]
+  wire [31:0] _metaArb_io_in_6_bits_addr_T_1 = {io_cpu_req_bits_addr[31],auto_out_b_bits_address}; // @[Cat.scala 31:58]
+  wire [9:0] counter1_1 = counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire [9:0] _count_T_1 = ~counter1_1; // @[Edges.scala 233:27]
+  wire [9:0] c_count = beats1_1 & _count_T_1; // @[Edges.scala 233:25]
+  reg  s1_release_data_valid; // @[DCache.scala 776:34]
+  wire  releaseRejected = s2_release_data_valid & ~_T_287; // @[DCache.scala 778:44]
+  wire [10:0] _releaseDataBeat_T = {1'h0,c_count}; // @[Cat.scala 31:58]
+  wire [1:0] _releaseDataBeat_T_1 = {1'h0,s2_release_data_valid}; // @[Cat.scala 31:58]
+  wire [1:0] _GEN_362 = {{1'd0}, s1_release_data_valid}; // @[DCache.scala 779:101]
+  wire [1:0] _releaseDataBeat_T_3 = _GEN_362 + _releaseDataBeat_T_1; // @[DCache.scala 779:101]
+  wire [1:0] _releaseDataBeat_T_4 = releaseRejected ? 2'h0 : _releaseDataBeat_T_3; // @[DCache.scala 779:52]
+  wire [10:0] _GEN_363 = {{9'd0}, _releaseDataBeat_T_4}; // @[DCache.scala 779:47]
+  wire [10:0] releaseDataBeat = _releaseDataBeat_T + _GEN_363; // @[DCache.scala 779:47]
+  wire  discard_line = s2_valid_flush_line & s2_req_size[1]; // @[DCache.scala 793:46]
+  wire [3:0] _release_state_T_13 = s2_victim_dirty & ~discard_line ? 4'h1 : 4'h6; // @[DCache.scala 794:27]
+  wire [24:0] _probe_bits_T_2 = {s2_victim_tag,s2_req_addr[11:6]}; // @[Cat.scala 31:58]
+  wire [30:0] res_2_address = {_probe_bits_T_2, 6'h0}; // @[DCache.scala 797:96]
+  wire [3:0] _GEN_246 = s2_want_victimize ? _release_state_T_13 : release_state; // @[DCache.scala 791:25 794:21 208:26]
+  wire [3:0] _release_state_T_14 = releaseDone ? 4'h7 : 4'h3; // @[DCache.scala 808:29]
+  wire [3:0] _release_state_T_15 = releaseDone ? 4'h0 : 4'h5; // @[DCache.scala 812:29]
+  wire [2:0] _GEN_257 = _T_293 ? s2_report_param : 3'h5; // @[DCache.scala 786:17 805:45 807:23]
+  wire [3:0] _GEN_263 = _T_293 ? _release_state_T_14 : _release_state_T_15; // @[DCache.scala 805:45 808:23 812:23]
+  wire [3:0] _GEN_265 = s2_prb_ack_data ? 4'h2 : _GEN_263; // @[DCache.scala 803:36 804:23]
+  wire [2:0] _GEN_268 = s2_prb_ack_data ? 3'h5 : _GEN_257; // @[DCache.scala 786:17 803:36]
+  wire [3:0] _GEN_286 = s2_probe ? _GEN_265 : _GEN_246; // @[DCache.scala 799:21]
+  wire [2:0] _GEN_289 = s2_probe ? _GEN_268 : 3'h5; // @[DCache.scala 786:17 799:21]
+  wire [31:0] _metaArb_io_in_6_bits_addr_T_3 = {io_cpu_req_bits_addr[31],probe_bits_address}; // @[Cat.scala 31:58]
+  wire [3:0] _GEN_296 = metaArb_io_in_6_ready ? 4'h0 : _GEN_286; // @[DCache.scala 820:37 821:23]
+  wire  _GEN_297 = metaArb_io_in_6_ready | s1_probe_x16; // @[DCache.scala 820:37 822:18 163:21]
+  wire [3:0] _GEN_301 = release_state == 4'h4 ? _GEN_296 : _GEN_286; // @[DCache.scala 816:44]
+  wire [3:0] _GEN_303 = releaseDone ? 4'h0 : _GEN_301; // @[DCache.scala 827:{26,42}]
+  wire [3:0] _GEN_305 = release_state == 4'h5 ? _GEN_303 : _GEN_301; // @[DCache.scala 825:47]
+  wire [3:0] _GEN_306 = releaseDone ? 4'h7 : _GEN_305; // @[DCache.scala 832:{26,42}]
+  wire [2:0] _GEN_309 = release_state == 4'h3 ? s2_report_param : _GEN_289; // @[DCache.scala 829:48 831:21]
+  wire [3:0] _GEN_315 = release_state == 4'h3 ? _GEN_306 : _GEN_305; // @[DCache.scala 829:48]
+  wire [3:0] _GEN_316 = releaseDone ? 4'h7 : _GEN_315; // @[DCache.scala 836:{26,42}]
+  wire [2:0] _GEN_318 = release_state == 4'h2 ? s2_report_param : _GEN_309; // @[DCache.scala 834:48 835:21]
+  wire [3:0] _GEN_324 = release_state == 4'h2 ? _GEN_316 : _GEN_315; // @[DCache.scala 834:48]
+  wire  _GEN_333 = _T_287 & c_first | _GEN_233; // @[DCache.scala 854:41 855:26]
+  wire [1:0] newCoh_state = _T_302 ? voluntaryNewCoh_state : probeNewCoh_state; // @[DCache.scala 838:102 851:14]
+  wire [11:0] _dataArb_io_in_2_bits_addr_T_1 = {probe_bits_address[11:6], 6'h0}; // @[DCache.scala 878:55]
+  wire [5:0] _dataArb_io_in_2_bits_addr_T_3 = {releaseDataBeat[3:0], 2'h0}; // @[DCache.scala 878:117]
+  wire [11:0] _GEN_366 = {{6'd0}, _dataArb_io_in_2_bits_addr_T_3}; // @[DCache.scala 878:72]
+  wire  _metaArb_io_in_4_valid_T_1 = release_state == 4'h7; // @[package.scala 15:47]
+  wire [18:0] metaArb_io_in_4_bits_data_meta_tag = probe_bits_address[30:12]; // @[DCache.scala 888:78]
+  wire  _T_306 = metaArb_io_in_4_ready & metaArb_io_in_4_valid; // @[Decoupled.scala 50:35]
+  reg  io_cpu_s2_xcpt_REG; // @[DCache.scala 907:32]
+  reg  doUncachedResp; // @[DCache.scala 922:27]
+  wire [15:0] io_cpu_resp_bits_data_shifted = get_a_mask_bit ? s2_data_corrected[31:16] : s2_data_corrected[15:0]; // @[AMOALU.scala 39:24]
+  wire  _io_cpu_resp_bits_data_T_3 = s2_req_signed & io_cpu_resp_bits_data_shifted[15]; // @[AMOALU.scala 42:76]
+  wire [15:0] _io_cpu_resp_bits_data_T_5 = _io_cpu_resp_bits_data_T_3 ? 16'hffff : 16'h0; // @[Bitwise.scala 74:12]
+  wire [15:0] _io_cpu_resp_bits_data_T_7 = s2_req_size == 2'h1 ? _io_cpu_resp_bits_data_T_5 : s2_data_corrected[31:16]; // @[AMOALU.scala 42:20]
+  wire [31:0] _io_cpu_resp_bits_data_T_8 = {_io_cpu_resp_bits_data_T_7,io_cpu_resp_bits_data_shifted}; // @[Cat.scala 31:58]
+  wire [7:0] io_cpu_resp_bits_data_shifted_1 = get_a_mask_bit_1 ? _io_cpu_resp_bits_data_T_8[15:8] :
+    _io_cpu_resp_bits_data_T_8[7:0]; // @[AMOALU.scala 39:24]
+  wire [7:0] io_cpu_resp_bits_data_zeroed_1 = _s2_write_T_3 ? 8'h0 : io_cpu_resp_bits_data_shifted_1; // @[AMOALU.scala 41:23]
+  wire  _io_cpu_resp_bits_data_T_12 = s2_req_signed & io_cpu_resp_bits_data_zeroed_1[7]; // @[AMOALU.scala 42:76]
+  wire [23:0] _io_cpu_resp_bits_data_T_14 = _io_cpu_resp_bits_data_T_12 ? 24'hffffff : 24'h0; // @[Bitwise.scala 74:12]
+  wire [23:0] _io_cpu_resp_bits_data_T_16 = s2_req_size == 2'h0 | _s2_write_T_3 ? _io_cpu_resp_bits_data_T_14 :
+    _io_cpu_resp_bits_data_T_8[31:8]; // @[AMOALU.scala 42:20]
+  wire [31:0] _io_cpu_resp_bits_data_T_17 = {_io_cpu_resp_bits_data_T_16,io_cpu_resp_bits_data_zeroed_1}; // @[Cat.scala 31:58]
+  wire [31:0] _GEN_367 = {{31'd0}, s2_sc_fail}; // @[DCache.scala 948:41]
+  reg  REG; // @[DCache.scala 982:18]
+  wire  _GEN_351 = REG | resetting; // @[DCache.scala 204:26 982:{27,39}]
+  wire [6:0] flushCounterNext = flushCounter + 6'h1; // @[DCache.scala 983:39]
+  wire  flushDone = flushCounterNext[6]; // @[DCache.scala 984:37]
+  wire  _s1_flush_valid_T = metaArb_io_in_5_ready & metaArb_io_in_5_valid; // @[Decoupled.scala 50:35]
+  wire [11:0] _metaArb_io_in_5_bits_addr_T_1 = {metaArb_io_in_5_bits_idx, 6'h0}; // @[DCache.scala 992:98]
+  wire [6:0] _GEN_353 = resetting ? flushCounterNext : {{1'd0}, flushCounter}; // @[DCache.scala 1025:20 1026:18 205:25]
+  reg [9:0] io_cpu_perf_release_counter; // @[Edges.scala 228:27]
+  wire [9:0] io_cpu_perf_release_counter1 = io_cpu_perf_release_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  io_cpu_perf_release_first = io_cpu_perf_release_counter == 10'h0; // @[Edges.scala 230:25]
+  wire  io_cpu_perf_release_last = io_cpu_perf_release_counter == 10'h1 | beats1_1 == 10'h0; // @[Edges.scala 231:37]
+  wire  _T_322 = ~grantIsCached; // @[DCache.scala 1107:35]
+  wire  _GEN_380 = _T_261 & _T_322; // @[DCache.scala 662:17]
+  TLB tlb ( // @[DCache.scala 117:19]
+    .io_req_valid(tlb_io_req_valid),
+    .io_req_bits_vaddr(tlb_io_req_bits_vaddr),
+    .io_req_bits_size(tlb_io_req_bits_size),
+    .io_req_bits_cmd(tlb_io_req_bits_cmd),
+    .io_req_bits_prv(tlb_io_req_bits_prv),
+    .io_resp_paddr(tlb_io_resp_paddr),
+    .io_resp_pf_ld(tlb_io_resp_pf_ld),
+    .io_resp_pf_st(tlb_io_resp_pf_st),
+    .io_resp_ae_ld(tlb_io_resp_ae_ld),
+    .io_resp_ae_st(tlb_io_resp_ae_st),
+    .io_resp_ma_ld(tlb_io_resp_ma_ld),
+    .io_resp_ma_st(tlb_io_resp_ma_st),
+    .io_resp_cacheable(tlb_io_resp_cacheable),
+    .io_ptw_status_debug(tlb_io_ptw_status_debug),
+    .io_ptw_pmp_0_cfg_l(tlb_io_ptw_pmp_0_cfg_l),
+    .io_ptw_pmp_0_cfg_a(tlb_io_ptw_pmp_0_cfg_a),
+    .io_ptw_pmp_0_cfg_x(tlb_io_ptw_pmp_0_cfg_x),
+    .io_ptw_pmp_0_cfg_w(tlb_io_ptw_pmp_0_cfg_w),
+    .io_ptw_pmp_0_cfg_r(tlb_io_ptw_pmp_0_cfg_r),
+    .io_ptw_pmp_0_addr(tlb_io_ptw_pmp_0_addr),
+    .io_ptw_pmp_0_mask(tlb_io_ptw_pmp_0_mask),
+    .io_ptw_pmp_1_cfg_l(tlb_io_ptw_pmp_1_cfg_l),
+    .io_ptw_pmp_1_cfg_a(tlb_io_ptw_pmp_1_cfg_a),
+    .io_ptw_pmp_1_cfg_x(tlb_io_ptw_pmp_1_cfg_x),
+    .io_ptw_pmp_1_cfg_w(tlb_io_ptw_pmp_1_cfg_w),
+    .io_ptw_pmp_1_cfg_r(tlb_io_ptw_pmp_1_cfg_r),
+    .io_ptw_pmp_1_addr(tlb_io_ptw_pmp_1_addr),
+    .io_ptw_pmp_1_mask(tlb_io_ptw_pmp_1_mask),
+    .io_ptw_pmp_2_cfg_l(tlb_io_ptw_pmp_2_cfg_l),
+    .io_ptw_pmp_2_cfg_a(tlb_io_ptw_pmp_2_cfg_a),
+    .io_ptw_pmp_2_cfg_x(tlb_io_ptw_pmp_2_cfg_x),
+    .io_ptw_pmp_2_cfg_w(tlb_io_ptw_pmp_2_cfg_w),
+    .io_ptw_pmp_2_cfg_r(tlb_io_ptw_pmp_2_cfg_r),
+    .io_ptw_pmp_2_addr(tlb_io_ptw_pmp_2_addr),
+    .io_ptw_pmp_2_mask(tlb_io_ptw_pmp_2_mask),
+    .io_ptw_pmp_3_cfg_l(tlb_io_ptw_pmp_3_cfg_l),
+    .io_ptw_pmp_3_cfg_a(tlb_io_ptw_pmp_3_cfg_a),
+    .io_ptw_pmp_3_cfg_x(tlb_io_ptw_pmp_3_cfg_x),
+    .io_ptw_pmp_3_cfg_w(tlb_io_ptw_pmp_3_cfg_w),
+    .io_ptw_pmp_3_cfg_r(tlb_io_ptw_pmp_3_cfg_r),
+    .io_ptw_pmp_3_addr(tlb_io_ptw_pmp_3_addr),
+    .io_ptw_pmp_3_mask(tlb_io_ptw_pmp_3_mask),
+    .io_ptw_pmp_4_cfg_l(tlb_io_ptw_pmp_4_cfg_l),
+    .io_ptw_pmp_4_cfg_a(tlb_io_ptw_pmp_4_cfg_a),
+    .io_ptw_pmp_4_cfg_x(tlb_io_ptw_pmp_4_cfg_x),
+    .io_ptw_pmp_4_cfg_w(tlb_io_ptw_pmp_4_cfg_w),
+    .io_ptw_pmp_4_cfg_r(tlb_io_ptw_pmp_4_cfg_r),
+    .io_ptw_pmp_4_addr(tlb_io_ptw_pmp_4_addr),
+    .io_ptw_pmp_4_mask(tlb_io_ptw_pmp_4_mask),
+    .io_ptw_pmp_5_cfg_l(tlb_io_ptw_pmp_5_cfg_l),
+    .io_ptw_pmp_5_cfg_a(tlb_io_ptw_pmp_5_cfg_a),
+    .io_ptw_pmp_5_cfg_x(tlb_io_ptw_pmp_5_cfg_x),
+    .io_ptw_pmp_5_cfg_w(tlb_io_ptw_pmp_5_cfg_w),
+    .io_ptw_pmp_5_cfg_r(tlb_io_ptw_pmp_5_cfg_r),
+    .io_ptw_pmp_5_addr(tlb_io_ptw_pmp_5_addr),
+    .io_ptw_pmp_5_mask(tlb_io_ptw_pmp_5_mask),
+    .io_ptw_pmp_6_cfg_l(tlb_io_ptw_pmp_6_cfg_l),
+    .io_ptw_pmp_6_cfg_a(tlb_io_ptw_pmp_6_cfg_a),
+    .io_ptw_pmp_6_cfg_x(tlb_io_ptw_pmp_6_cfg_x),
+    .io_ptw_pmp_6_cfg_w(tlb_io_ptw_pmp_6_cfg_w),
+    .io_ptw_pmp_6_cfg_r(tlb_io_ptw_pmp_6_cfg_r),
+    .io_ptw_pmp_6_addr(tlb_io_ptw_pmp_6_addr),
+    .io_ptw_pmp_6_mask(tlb_io_ptw_pmp_6_mask),
+    .io_ptw_pmp_7_cfg_l(tlb_io_ptw_pmp_7_cfg_l),
+    .io_ptw_pmp_7_cfg_a(tlb_io_ptw_pmp_7_cfg_a),
+    .io_ptw_pmp_7_cfg_x(tlb_io_ptw_pmp_7_cfg_x),
+    .io_ptw_pmp_7_cfg_w(tlb_io_ptw_pmp_7_cfg_w),
+    .io_ptw_pmp_7_cfg_r(tlb_io_ptw_pmp_7_cfg_r),
+    .io_ptw_pmp_7_addr(tlb_io_ptw_pmp_7_addr),
+    .io_ptw_pmp_7_mask(tlb_io_ptw_pmp_7_mask)
+  );
+  TLB pma_checker ( // @[DCache.scala 118:27]
+    .io_req_valid(pma_checker_io_req_valid),
+    .io_req_bits_vaddr(pma_checker_io_req_bits_vaddr),
+    .io_req_bits_size(pma_checker_io_req_bits_size),
+    .io_req_bits_cmd(pma_checker_io_req_bits_cmd),
+    .io_req_bits_prv(pma_checker_io_req_bits_prv),
+    .io_resp_paddr(pma_checker_io_resp_paddr),
+    .io_resp_pf_ld(pma_checker_io_resp_pf_ld),
+    .io_resp_pf_st(pma_checker_io_resp_pf_st),
+    .io_resp_ae_ld(pma_checker_io_resp_ae_ld),
+    .io_resp_ae_st(pma_checker_io_resp_ae_st),
+    .io_resp_ma_ld(pma_checker_io_resp_ma_ld),
+    .io_resp_ma_st(pma_checker_io_resp_ma_st),
+    .io_resp_cacheable(pma_checker_io_resp_cacheable),
+    .io_ptw_status_debug(pma_checker_io_ptw_status_debug),
+    .io_ptw_pmp_0_cfg_l(pma_checker_io_ptw_pmp_0_cfg_l),
+    .io_ptw_pmp_0_cfg_a(pma_checker_io_ptw_pmp_0_cfg_a),
+    .io_ptw_pmp_0_cfg_x(pma_checker_io_ptw_pmp_0_cfg_x),
+    .io_ptw_pmp_0_cfg_w(pma_checker_io_ptw_pmp_0_cfg_w),
+    .io_ptw_pmp_0_cfg_r(pma_checker_io_ptw_pmp_0_cfg_r),
+    .io_ptw_pmp_0_addr(pma_checker_io_ptw_pmp_0_addr),
+    .io_ptw_pmp_0_mask(pma_checker_io_ptw_pmp_0_mask),
+    .io_ptw_pmp_1_cfg_l(pma_checker_io_ptw_pmp_1_cfg_l),
+    .io_ptw_pmp_1_cfg_a(pma_checker_io_ptw_pmp_1_cfg_a),
+    .io_ptw_pmp_1_cfg_x(pma_checker_io_ptw_pmp_1_cfg_x),
+    .io_ptw_pmp_1_cfg_w(pma_checker_io_ptw_pmp_1_cfg_w),
+    .io_ptw_pmp_1_cfg_r(pma_checker_io_ptw_pmp_1_cfg_r),
+    .io_ptw_pmp_1_addr(pma_checker_io_ptw_pmp_1_addr),
+    .io_ptw_pmp_1_mask(pma_checker_io_ptw_pmp_1_mask),
+    .io_ptw_pmp_2_cfg_l(pma_checker_io_ptw_pmp_2_cfg_l),
+    .io_ptw_pmp_2_cfg_a(pma_checker_io_ptw_pmp_2_cfg_a),
+    .io_ptw_pmp_2_cfg_x(pma_checker_io_ptw_pmp_2_cfg_x),
+    .io_ptw_pmp_2_cfg_w(pma_checker_io_ptw_pmp_2_cfg_w),
+    .io_ptw_pmp_2_cfg_r(pma_checker_io_ptw_pmp_2_cfg_r),
+    .io_ptw_pmp_2_addr(pma_checker_io_ptw_pmp_2_addr),
+    .io_ptw_pmp_2_mask(pma_checker_io_ptw_pmp_2_mask),
+    .io_ptw_pmp_3_cfg_l(pma_checker_io_ptw_pmp_3_cfg_l),
+    .io_ptw_pmp_3_cfg_a(pma_checker_io_ptw_pmp_3_cfg_a),
+    .io_ptw_pmp_3_cfg_x(pma_checker_io_ptw_pmp_3_cfg_x),
+    .io_ptw_pmp_3_cfg_w(pma_checker_io_ptw_pmp_3_cfg_w),
+    .io_ptw_pmp_3_cfg_r(pma_checker_io_ptw_pmp_3_cfg_r),
+    .io_ptw_pmp_3_addr(pma_checker_io_ptw_pmp_3_addr),
+    .io_ptw_pmp_3_mask(pma_checker_io_ptw_pmp_3_mask),
+    .io_ptw_pmp_4_cfg_l(pma_checker_io_ptw_pmp_4_cfg_l),
+    .io_ptw_pmp_4_cfg_a(pma_checker_io_ptw_pmp_4_cfg_a),
+    .io_ptw_pmp_4_cfg_x(pma_checker_io_ptw_pmp_4_cfg_x),
+    .io_ptw_pmp_4_cfg_w(pma_checker_io_ptw_pmp_4_cfg_w),
+    .io_ptw_pmp_4_cfg_r(pma_checker_io_ptw_pmp_4_cfg_r),
+    .io_ptw_pmp_4_addr(pma_checker_io_ptw_pmp_4_addr),
+    .io_ptw_pmp_4_mask(pma_checker_io_ptw_pmp_4_mask),
+    .io_ptw_pmp_5_cfg_l(pma_checker_io_ptw_pmp_5_cfg_l),
+    .io_ptw_pmp_5_cfg_a(pma_checker_io_ptw_pmp_5_cfg_a),
+    .io_ptw_pmp_5_cfg_x(pma_checker_io_ptw_pmp_5_cfg_x),
+    .io_ptw_pmp_5_cfg_w(pma_checker_io_ptw_pmp_5_cfg_w),
+    .io_ptw_pmp_5_cfg_r(pma_checker_io_ptw_pmp_5_cfg_r),
+    .io_ptw_pmp_5_addr(pma_checker_io_ptw_pmp_5_addr),
+    .io_ptw_pmp_5_mask(pma_checker_io_ptw_pmp_5_mask),
+    .io_ptw_pmp_6_cfg_l(pma_checker_io_ptw_pmp_6_cfg_l),
+    .io_ptw_pmp_6_cfg_a(pma_checker_io_ptw_pmp_6_cfg_a),
+    .io_ptw_pmp_6_cfg_x(pma_checker_io_ptw_pmp_6_cfg_x),
+    .io_ptw_pmp_6_cfg_w(pma_checker_io_ptw_pmp_6_cfg_w),
+    .io_ptw_pmp_6_cfg_r(pma_checker_io_ptw_pmp_6_cfg_r),
+    .io_ptw_pmp_6_addr(pma_checker_io_ptw_pmp_6_addr),
+    .io_ptw_pmp_6_mask(pma_checker_io_ptw_pmp_6_mask),
+    .io_ptw_pmp_7_cfg_l(pma_checker_io_ptw_pmp_7_cfg_l),
+    .io_ptw_pmp_7_cfg_a(pma_checker_io_ptw_pmp_7_cfg_a),
+    .io_ptw_pmp_7_cfg_x(pma_checker_io_ptw_pmp_7_cfg_x),
+    .io_ptw_pmp_7_cfg_w(pma_checker_io_ptw_pmp_7_cfg_w),
+    .io_ptw_pmp_7_cfg_r(pma_checker_io_ptw_pmp_7_cfg_r),
+    .io_ptw_pmp_7_addr(pma_checker_io_ptw_pmp_7_addr),
+    .io_ptw_pmp_7_mask(pma_checker_io_ptw_pmp_7_mask)
+  );
+  MaxPeriodFibonacciLFSR lfsr_prng ( // @[PRNG.scala 91:22]
+    .clock(lfsr_prng_clock),
+    .reset(lfsr_prng_reset),
+    .io_increment(lfsr_prng_io_increment),
+    .io_out_0(lfsr_prng_io_out_0),
+    .io_out_1(lfsr_prng_io_out_1),
+    .io_out_2(lfsr_prng_io_out_2),
+    .io_out_3(lfsr_prng_io_out_3),
+    .io_out_4(lfsr_prng_io_out_4),
+    .io_out_5(lfsr_prng_io_out_5),
+    .io_out_6(lfsr_prng_io_out_6),
+    .io_out_7(lfsr_prng_io_out_7),
+    .io_out_8(lfsr_prng_io_out_8),
+    .io_out_9(lfsr_prng_io_out_9),
+    .io_out_10(lfsr_prng_io_out_10),
+    .io_out_11(lfsr_prng_io_out_11),
+    .io_out_12(lfsr_prng_io_out_12),
+    .io_out_13(lfsr_prng_io_out_13),
+    .io_out_14(lfsr_prng_io_out_14),
+    .io_out_15(lfsr_prng_io_out_15)
+  );
+  DCacheModuleImpl_Anon_1 metaArb ( // @[DCache.scala 122:23]
+    .io_in_0_valid(metaArb_io_in_0_valid),
+    .io_in_0_bits_addr(metaArb_io_in_0_bits_addr),
+    .io_in_0_bits_idx(metaArb_io_in_0_bits_idx),
+    .io_in_2_valid(metaArb_io_in_2_valid),
+    .io_in_2_bits_addr(metaArb_io_in_2_bits_addr),
+    .io_in_2_bits_idx(metaArb_io_in_2_bits_idx),
+    .io_in_2_bits_data(metaArb_io_in_2_bits_data),
+    .io_in_3_valid(metaArb_io_in_3_valid),
+    .io_in_3_bits_addr(metaArb_io_in_3_bits_addr),
+    .io_in_3_bits_idx(metaArb_io_in_3_bits_idx),
+    .io_in_3_bits_data(metaArb_io_in_3_bits_data),
+    .io_in_4_ready(metaArb_io_in_4_ready),
+    .io_in_4_valid(metaArb_io_in_4_valid),
+    .io_in_4_bits_addr(metaArb_io_in_4_bits_addr),
+    .io_in_4_bits_idx(metaArb_io_in_4_bits_idx),
+    .io_in_4_bits_data(metaArb_io_in_4_bits_data),
+    .io_in_5_ready(metaArb_io_in_5_ready),
+    .io_in_5_valid(metaArb_io_in_5_valid),
+    .io_in_5_bits_addr(metaArb_io_in_5_bits_addr),
+    .io_in_5_bits_idx(metaArb_io_in_5_bits_idx),
+    .io_in_6_ready(metaArb_io_in_6_ready),
+    .io_in_6_valid(metaArb_io_in_6_valid),
+    .io_in_6_bits_addr(metaArb_io_in_6_bits_addr),
+    .io_in_6_bits_idx(metaArb_io_in_6_bits_idx),
+    .io_in_6_bits_data(metaArb_io_in_6_bits_data),
+    .io_in_7_ready(metaArb_io_in_7_ready),
+    .io_in_7_valid(metaArb_io_in_7_valid),
+    .io_in_7_bits_addr(metaArb_io_in_7_bits_addr),
+    .io_in_7_bits_idx(metaArb_io_in_7_bits_idx),
+    .io_in_7_bits_data(metaArb_io_in_7_bits_data),
+    .io_out_valid(metaArb_io_out_valid),
+    .io_out_bits_write(metaArb_io_out_bits_write),
+    .io_out_bits_addr(metaArb_io_out_bits_addr),
+    .io_out_bits_idx(metaArb_io_out_bits_idx),
+    .io_out_bits_data(metaArb_io_out_bits_data)
+  );
+  tag_array tag_array ( // @[DescribedSRAM.scala 19:26]
+    .RW0_addr(tag_array_RW0_addr),
+    .RW0_en(tag_array_RW0_en),
+    .RW0_clk(tag_array_RW0_clk),
+    .RW0_wmode(tag_array_RW0_wmode),
+    .RW0_wdata_0(tag_array_RW0_wdata_0),
+    .RW0_rdata_0(tag_array_RW0_rdata_0), // <no_sram>
+    .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr), // <no_sram>
+    .tag_array_ext_RW0_en(tag_array_ext_RW0_en), // <no_sram>
+    .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk), // <no_sram>
+    .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode), // <no_sram>
+    .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata), // <no_sram>
+    .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata) // <no_sram>
+  );
+  DCacheDataArray data ( // @[DCache.scala 132:20]
+    .clock(data_clock),
+    .io_req_valid(data_io_req_valid),
+    .io_req_bits_addr(data_io_req_bits_addr),
+    .io_req_bits_write(data_io_req_bits_write),
+    .io_req_bits_wdata(data_io_req_bits_wdata),
+    .io_req_bits_eccMask(data_io_req_bits_eccMask),
+    .io_resp_0(data_io_resp_0), // <no_sram>
+    .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask) // <no_sram>
+  );
+  DCacheModuleImpl_Anon_2 dataArb ( // @[DCache.scala 133:23]
+    .io_in_0_valid(dataArb_io_in_0_valid),
+    .io_in_0_bits_addr(dataArb_io_in_0_bits_addr),
+    .io_in_0_bits_write(dataArb_io_in_0_bits_write),
+    .io_in_0_bits_wdata(dataArb_io_in_0_bits_wdata),
+    .io_in_0_bits_eccMask(dataArb_io_in_0_bits_eccMask),
+    .io_in_1_ready(dataArb_io_in_1_ready),
+    .io_in_1_valid(dataArb_io_in_1_valid),
+    .io_in_1_bits_addr(dataArb_io_in_1_bits_addr),
+    .io_in_1_bits_write(dataArb_io_in_1_bits_write),
+    .io_in_1_bits_wdata(dataArb_io_in_1_bits_wdata),
+    .io_in_2_ready(dataArb_io_in_2_ready),
+    .io_in_2_valid(dataArb_io_in_2_valid),
+    .io_in_2_bits_addr(dataArb_io_in_2_bits_addr),
+    .io_in_2_bits_wdata(dataArb_io_in_2_bits_wdata),
+    .io_in_3_ready(dataArb_io_in_3_ready),
+    .io_in_3_valid(dataArb_io_in_3_valid),
+    .io_in_3_bits_addr(dataArb_io_in_3_bits_addr),
+    .io_in_3_bits_wdata(dataArb_io_in_3_bits_wdata),
+    .io_in_3_bits_wordMask(dataArb_io_in_3_bits_wordMask),
+    .io_out_valid(dataArb_io_out_valid),
+    .io_out_bits_addr(dataArb_io_out_bits_addr),
+    .io_out_bits_write(dataArb_io_out_bits_write),
+    .io_out_bits_wdata(dataArb_io_out_bits_wdata),
+    .io_out_bits_eccMask(dataArb_io_out_bits_eccMask)
+  );
+  AMOALU amoalu ( // @[DCache.scala 956:26]
+    .io_mask(amoalu_io_mask),
+    .io_cmd(amoalu_io_cmd),
+    .io_lhs(amoalu_io_lhs),
+    .io_rhs(amoalu_io_rhs),
+    .io_out(amoalu_io_out)
+  );
+  assign auto_out_a_valid = s2_valid_uncached_pending | _tl_out_a_valid_T_12; // @[DCache.scala 579:32]
+  assign auto_out_a_bits_opcode = _s2_valid_cached_miss_T ? 3'h6 : _tl_out_a_bits_T_8_opcode; // @[DCache.scala 583:23]
+  assign auto_out_a_bits_param = _s2_valid_cached_miss_T ? tl_out_a_bits_a_param : _tl_out_a_bits_T_8_param; // @[DCache.scala 583:23]
+  assign auto_out_a_bits_size = _s2_valid_cached_miss_T ? 4'h6 : _tl_out_a_bits_T_8_size; // @[DCache.scala 583:23]
+  assign auto_out_a_bits_source = _s2_valid_cached_miss_T ? 1'h0 : _tl_out_a_bits_T_8_source; // @[DCache.scala 583:23]
+  assign auto_out_a_bits_address = _s2_valid_cached_miss_T ? tl_out_a_bits_a_address : _tl_out_a_bits_T_8_address; // @[DCache.scala 583:23]
+  assign auto_out_a_bits_mask = _s2_valid_cached_miss_T ? 4'hf : _tl_out_a_bits_T_8_mask; // @[DCache.scala 583:23]
+  assign auto_out_a_bits_data = _s2_valid_cached_miss_T ? 32'h0 : _tl_out_a_bits_T_8_data; // @[DCache.scala 583:23]
+  assign auto_out_b_ready = metaArb_io_in_6_ready & ~(block_probe_for_core_progress | block_probe_for_ordering |
+    s1_valid | s2_valid); // @[DCache.scala 745:44]
+  assign auto_out_c_valid = release_state == 4'h3 | _GEN_304; // @[DCache.scala 829:48 830:22]
+  assign auto_out_c_bits_opcode = _T_302 ? _GEN_325 : _GEN_317; // @[DCache.scala 838:102]
+  assign auto_out_c_bits_param = _T_302 ? s2_shrink_param : _GEN_318; // @[DCache.scala 838:102]
+  assign auto_out_c_bits_size = _T_302 ? 4'h6 : probe_bits_size; // @[DCache.scala 838:102]
+  assign auto_out_c_bits_source = probe_bits_source; // @[Nodes.scala 1207:84 DCache.scala 859:26]
+  assign auto_out_c_bits_address = probe_bits_address; // @[Nodes.scala 1207:84 DCache.scala 860:27]
+  assign auto_out_c_bits_data = {s2_data_corrected_hi,s2_data_corrected_lo}; // @[Cat.scala 31:58]
+  assign auto_out_d_ready = grantIsUncachedData & (blockUncachedGrant | s1_valid) ? 1'h0 : _GEN_235; // @[DCache.scala 727:68 728:22]
+  assign auto_out_e_valid = grantIsRefill & ~dataArb_io_in_1_ready ? 1'h0 : auto_out_d_valid & d_first & grantIsCached
+     & canAcceptCachedGrant; // @[DCache.scala 689:18 697:51 698:20]
+  assign auto_out_e_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign io_cpu_req_ready = grantIsUncachedData & (blockUncachedGrant | s1_valid) ? _GEN_236 : _GEN_36; // @[DCache.scala 727:68]
+  assign io_cpu_s2_nack = s2_valid_no_xcpt & ~s2_dont_nack_uncached & ~s2_dont_nack_misc & ~
+    s2_valid_hit_pre_data_ecc_and_waw; // @[DCache.scala 420:86]
+  assign io_cpu_resp_valid = s2_valid_hit_pre_data_ecc_and_waw | doUncachedResp; // @[DCache.scala 923:51]
+  assign io_cpu_resp_bits_addr = doUncachedResp ? s2_uncached_resp_addr : s2_req_addr; // @[DCache.scala 892:20 925:25 928:27]
+  assign io_cpu_resp_bits_tag = s2_req_tag; // @[DCache.scala 892:20]
+  assign io_cpu_resp_bits_cmd = s2_req_cmd; // @[DCache.scala 892:20]
+  assign io_cpu_resp_bits_size = s2_req_size; // @[DCache.scala 892:20]
+  assign io_cpu_resp_bits_signed = s2_req_signed; // @[DCache.scala 892:20]
+  assign io_cpu_resp_bits_dprv = s2_req_dprv; // @[DCache.scala 892:20]
+  assign io_cpu_resp_bits_dv = 1'h0; // @[DCache.scala 892:20]
+  assign io_cpu_resp_bits_data = _io_cpu_resp_bits_data_T_17 | _GEN_367; // @[DCache.scala 948:41]
+  assign io_cpu_resp_bits_mask = 4'h0; // @[DCache.scala 892:20]
+  assign io_cpu_resp_bits_replay = doUncachedResp; // @[DCache.scala 925:25 894:27 927:29]
+  assign io_cpu_resp_bits_has_data = _s2_read_T_6 | _s2_write_T_21; // @[Consts.scala 84:68]
+  assign io_cpu_resp_bits_data_word_bypass = {s2_data_corrected_hi,s2_data_corrected_lo}; // @[Cat.scala 31:58]
+  assign io_cpu_resp_bits_data_raw = {s2_data_corrected_hi,s2_data_corrected_lo}; // @[Cat.scala 31:58]
+  assign io_cpu_resp_bits_store_data = pstore1_data; // @[DCache.scala 951:31]
+  assign io_cpu_replay_next = _T_261 & grantIsUncachedData; // @[DCache.scala 924:41]
+  assign io_cpu_s2_xcpt_ma_ld = io_cpu_s2_xcpt_REG & s2_tlb_xcpt_ma_ld; // @[DCache.scala 907:24]
+  assign io_cpu_s2_xcpt_ma_st = io_cpu_s2_xcpt_REG & s2_tlb_xcpt_ma_st; // @[DCache.scala 907:24]
+  assign io_cpu_s2_xcpt_pf_ld = io_cpu_s2_xcpt_REG & s2_tlb_xcpt_pf_ld; // @[DCache.scala 907:24]
+  assign io_cpu_s2_xcpt_pf_st = io_cpu_s2_xcpt_REG & s2_tlb_xcpt_pf_st; // @[DCache.scala 907:24]
+  assign io_cpu_s2_xcpt_gf_ld = 1'h0; // @[DCache.scala 907:24]
+  assign io_cpu_s2_xcpt_gf_st = 1'h0; // @[DCache.scala 907:24]
+  assign io_cpu_s2_xcpt_ae_ld = io_cpu_s2_xcpt_REG & s2_tlb_xcpt_ae_ld; // @[DCache.scala 907:24]
+  assign io_cpu_s2_xcpt_ae_st = io_cpu_s2_xcpt_REG & s2_tlb_xcpt_ae_st; // @[DCache.scala 907:24]
+  assign io_cpu_ordered = ~(s1_valid | s2_valid | cached_grant_wait | _s2_valid_cached_miss_T_2); // @[DCache.scala 904:21]
+  assign io_cpu_perf_release = io_cpu_perf_release_last & _T_287; // @[Edges.scala 232:22]
+  assign io_cpu_perf_grant = auto_out_d_valid & d_last; // @[DCache.scala 1052:39]
+  assign tlb_io_req_valid = s1_valid_masked & s1_cmd_uses_tlb; // @[DCache.scala 253:71]
+  assign tlb_io_req_bits_vaddr = s1_tlb_req_vaddr; // @[DCache.scala 254:19]
+  assign tlb_io_req_bits_size = s1_tlb_req_size; // @[DCache.scala 254:19]
+  assign tlb_io_req_bits_cmd = s1_tlb_req_cmd; // @[DCache.scala 254:19]
+  assign tlb_io_req_bits_prv = s1_tlb_req_prv; // @[DCache.scala 254:19]
+  assign tlb_io_ptw_status_debug = io_ptw_status_debug; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_0_cfg_l = io_ptw_pmp_0_cfg_l; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_0_cfg_a = io_ptw_pmp_0_cfg_a; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_0_cfg_x = io_ptw_pmp_0_cfg_x; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_0_cfg_w = io_ptw_pmp_0_cfg_w; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_0_cfg_r = io_ptw_pmp_0_cfg_r; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_0_addr = io_ptw_pmp_0_addr; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_0_mask = io_ptw_pmp_0_mask; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_1_cfg_l = io_ptw_pmp_1_cfg_l; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_1_cfg_a = io_ptw_pmp_1_cfg_a; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_1_cfg_x = io_ptw_pmp_1_cfg_x; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_1_cfg_w = io_ptw_pmp_1_cfg_w; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_1_cfg_r = io_ptw_pmp_1_cfg_r; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_1_addr = io_ptw_pmp_1_addr; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_1_mask = io_ptw_pmp_1_mask; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_2_cfg_l = io_ptw_pmp_2_cfg_l; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_2_cfg_a = io_ptw_pmp_2_cfg_a; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_2_cfg_x = io_ptw_pmp_2_cfg_x; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_2_cfg_w = io_ptw_pmp_2_cfg_w; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_2_cfg_r = io_ptw_pmp_2_cfg_r; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_2_addr = io_ptw_pmp_2_addr; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_2_mask = io_ptw_pmp_2_mask; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_3_cfg_l = io_ptw_pmp_3_cfg_l; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_3_cfg_a = io_ptw_pmp_3_cfg_a; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_3_cfg_x = io_ptw_pmp_3_cfg_x; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_3_cfg_w = io_ptw_pmp_3_cfg_w; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_3_cfg_r = io_ptw_pmp_3_cfg_r; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_3_addr = io_ptw_pmp_3_addr; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_3_mask = io_ptw_pmp_3_mask; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_4_cfg_l = io_ptw_pmp_4_cfg_l; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_4_cfg_a = io_ptw_pmp_4_cfg_a; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_4_cfg_x = io_ptw_pmp_4_cfg_x; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_4_cfg_w = io_ptw_pmp_4_cfg_w; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_4_cfg_r = io_ptw_pmp_4_cfg_r; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_4_addr = io_ptw_pmp_4_addr; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_4_mask = io_ptw_pmp_4_mask; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_5_cfg_l = io_ptw_pmp_5_cfg_l; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_5_cfg_a = io_ptw_pmp_5_cfg_a; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_5_cfg_x = io_ptw_pmp_5_cfg_x; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_5_cfg_w = io_ptw_pmp_5_cfg_w; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_5_cfg_r = io_ptw_pmp_5_cfg_r; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_5_addr = io_ptw_pmp_5_addr; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_5_mask = io_ptw_pmp_5_mask; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_6_cfg_l = io_ptw_pmp_6_cfg_l; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_6_cfg_a = io_ptw_pmp_6_cfg_a; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_6_cfg_x = io_ptw_pmp_6_cfg_x; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_6_cfg_w = io_ptw_pmp_6_cfg_w; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_6_cfg_r = io_ptw_pmp_6_cfg_r; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_6_addr = io_ptw_pmp_6_addr; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_6_mask = io_ptw_pmp_6_mask; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_7_cfg_l = io_ptw_pmp_7_cfg_l; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_7_cfg_a = io_ptw_pmp_7_cfg_a; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_7_cfg_x = io_ptw_pmp_7_cfg_x; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_7_cfg_w = io_ptw_pmp_7_cfg_w; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_7_cfg_r = io_ptw_pmp_7_cfg_r; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_7_addr = io_ptw_pmp_7_addr; // @[DCache.scala 251:10]
+  assign tlb_io_ptw_pmp_7_mask = io_ptw_pmp_7_mask; // @[DCache.scala 251:10]
+  assign pma_checker_io_req_valid = 1'h0;
+  assign pma_checker_io_req_bits_vaddr = 32'h0;
+  assign pma_checker_io_req_bits_size = s1_req_size; // @[DCache.scala 271:27]
+  assign pma_checker_io_req_bits_cmd = s1_req_cmd; // @[DCache.scala 271:27]
+  assign pma_checker_io_req_bits_prv = 2'h0;
+  assign pma_checker_io_ptw_status_debug = 1'h0;
+  assign pma_checker_io_ptw_pmp_0_cfg_l = 1'h0;
+  assign pma_checker_io_ptw_pmp_0_cfg_a = 2'h0;
+  assign pma_checker_io_ptw_pmp_0_cfg_x = 1'h0;
+  assign pma_checker_io_ptw_pmp_0_cfg_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_0_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_0_addr = 29'h0;
+  assign pma_checker_io_ptw_pmp_0_mask = 31'h0;
+  assign pma_checker_io_ptw_pmp_1_cfg_l = 1'h0;
+  assign pma_checker_io_ptw_pmp_1_cfg_a = 2'h0;
+  assign pma_checker_io_ptw_pmp_1_cfg_x = 1'h0;
+  assign pma_checker_io_ptw_pmp_1_cfg_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_1_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_1_addr = 29'h0;
+  assign pma_checker_io_ptw_pmp_1_mask = 31'h0;
+  assign pma_checker_io_ptw_pmp_2_cfg_l = 1'h0;
+  assign pma_checker_io_ptw_pmp_2_cfg_a = 2'h0;
+  assign pma_checker_io_ptw_pmp_2_cfg_x = 1'h0;
+  assign pma_checker_io_ptw_pmp_2_cfg_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_2_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_2_addr = 29'h0;
+  assign pma_checker_io_ptw_pmp_2_mask = 31'h0;
+  assign pma_checker_io_ptw_pmp_3_cfg_l = 1'h0;
+  assign pma_checker_io_ptw_pmp_3_cfg_a = 2'h0;
+  assign pma_checker_io_ptw_pmp_3_cfg_x = 1'h0;
+  assign pma_checker_io_ptw_pmp_3_cfg_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_3_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_3_addr = 29'h0;
+  assign pma_checker_io_ptw_pmp_3_mask = 31'h0;
+  assign pma_checker_io_ptw_pmp_4_cfg_l = 1'h0;
+  assign pma_checker_io_ptw_pmp_4_cfg_a = 2'h0;
+  assign pma_checker_io_ptw_pmp_4_cfg_x = 1'h0;
+  assign pma_checker_io_ptw_pmp_4_cfg_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_4_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_4_addr = 29'h0;
+  assign pma_checker_io_ptw_pmp_4_mask = 31'h0;
+  assign pma_checker_io_ptw_pmp_5_cfg_l = 1'h0;
+  assign pma_checker_io_ptw_pmp_5_cfg_a = 2'h0;
+  assign pma_checker_io_ptw_pmp_5_cfg_x = 1'h0;
+  assign pma_checker_io_ptw_pmp_5_cfg_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_5_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_5_addr = 29'h0;
+  assign pma_checker_io_ptw_pmp_5_mask = 31'h0;
+  assign pma_checker_io_ptw_pmp_6_cfg_l = 1'h0;
+  assign pma_checker_io_ptw_pmp_6_cfg_a = 2'h0;
+  assign pma_checker_io_ptw_pmp_6_cfg_x = 1'h0;
+  assign pma_checker_io_ptw_pmp_6_cfg_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_6_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_6_addr = 29'h0;
+  assign pma_checker_io_ptw_pmp_6_mask = 31'h0;
+  assign pma_checker_io_ptw_pmp_7_cfg_l = 1'h0;
+  assign pma_checker_io_ptw_pmp_7_cfg_a = 2'h0;
+  assign pma_checker_io_ptw_pmp_7_cfg_x = 1'h0;
+  assign pma_checker_io_ptw_pmp_7_cfg_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_7_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_7_addr = 29'h0;
+  assign pma_checker_io_ptw_pmp_7_mask = 31'h0;
+  assign lfsr_prng_clock = clock;
+  assign lfsr_prng_reset = reset;
+  assign lfsr_prng_io_increment = _T_261 & _GEN_211; // @[DCache.scala 649:26 Replacement.scala 38:11]
+  assign metaArb_io_in_0_valid = resetting; // @[DCache.scala 1020:26]
+  assign metaArb_io_in_0_bits_addr = metaArb_io_in_5_bits_addr; // @[DCache.scala 1021:25]
+  assign metaArb_io_in_0_bits_idx = metaArb_io_in_5_bits_idx; // @[DCache.scala 1021:25]
+  assign metaArb_io_in_2_valid = s2_valid_hit_pre_data_ecc_and_waw & s2_update_meta; // @[DCache.scala 437:63]
+  assign metaArb_io_in_2_bits_addr = {io_cpu_req_bits_addr[31:12],s2_vaddr[11:0]}; // @[Cat.scala 31:58]
+  assign metaArb_io_in_2_bits_idx = s2_vaddr[11:6]; // @[DCache.scala 440:40]
+  assign metaArb_io_in_2_bits_data = {s2_grow_param,metaArb_io_in_2_bits_data_meta_tag}; // @[DCache.scala 442:97]
+  assign metaArb_io_in_3_valid = grantIsCached & d_done & ~auto_out_d_bits_denied; // @[DCache.scala 716:53]
+  assign metaArb_io_in_3_bits_addr = {io_cpu_req_bits_addr[31:12],s2_vaddr[11:0]}; // @[Cat.scala 31:58]
+  assign metaArb_io_in_3_bits_idx = s2_vaddr[11:6]; // @[DCache.scala 719:40]
+  assign metaArb_io_in_3_bits_data = {metaArb_io_in_3_bits_data_meta_state,metaArb_io_in_2_bits_data_meta_tag}; // @[DCache.scala 721:134]
+  assign metaArb_io_in_4_valid = _T_299 | _metaArb_io_in_4_valid_T_1; // @[package.scala 72:59]
+  assign metaArb_io_in_4_bits_addr = {io_cpu_req_bits_addr[31:12],probe_bits_address[11:0]}; // @[Cat.scala 31:58]
+  assign metaArb_io_in_4_bits_idx = probe_bits_address[11:6]; // @[DCache.scala 1174:47]
+  assign metaArb_io_in_4_bits_data = {newCoh_state,metaArb_io_in_4_bits_data_meta_tag}; // @[DCache.scala 888:97]
+  assign metaArb_io_in_5_valid = 1'h0; // @[DCache.scala 989:38]
+  assign metaArb_io_in_5_bits_addr = {io_cpu_req_bits_addr[31:12],_metaArb_io_in_5_bits_addr_T_1}; // @[Cat.scala 31:58]
+  assign metaArb_io_in_5_bits_idx = flushCounter; // @[DCache.scala 991:44]
+  assign metaArb_io_in_6_valid = release_state == 4'h4 | auto_out_b_valid & (~block_probe_for_core_progress |
+    lrscBackingOff); // @[DCache.scala 744:26 816:44 817:30]
+  assign metaArb_io_in_6_bits_addr = release_state == 4'h4 ? _metaArb_io_in_6_bits_addr_T_3 :
+    _metaArb_io_in_6_bits_addr_T_1; // @[DCache.scala 748:30 816:44 819:34]
+  assign metaArb_io_in_6_bits_idx = release_state == 4'h4 ? probe_bits_address[11:6] : auto_out_b_bits_address[11:6]; // @[DCache.scala 747:29 816:44 818:33]
+  assign metaArb_io_in_6_bits_data = metaArb_io_in_4_bits_data; // @[DCache.scala 750:30]
+  assign metaArb_io_in_7_valid = io_cpu_req_valid; // @[DCache.scala 241:26]
+  assign metaArb_io_in_7_bits_addr = io_cpu_req_bits_addr; // @[DCache.scala 244:30]
+  assign metaArb_io_in_7_bits_idx = dataArb_io_in_3_bits_addr[11:6]; // @[DCache.scala 243:58]
+  assign metaArb_io_in_7_bits_data = metaArb_io_in_4_bits_data; // @[DCache.scala 246:30]
+  assign tag_array_RW0_clk = clock; // @[DCache.scala 285:50]
+  assign tag_array_RW0_wdata_0 = metaArb_io_out_bits_data; // @[compatibility.scala 134:{12,12}]
+  assign data_clock = clock;
+  assign data_io_req_valid = dataArb_io_out_valid; // @[DCache.scala 135:15]
+  assign data_io_req_bits_addr = dataArb_io_out_bits_addr; // @[DCache.scala 135:15]
+  assign data_io_req_bits_write = dataArb_io_out_bits_write; // @[DCache.scala 135:15]
+  assign data_io_req_bits_wdata = dataArb_io_out_bits_wdata; // @[DCache.scala 135:15]
+  assign data_io_req_bits_eccMask = dataArb_io_out_bits_eccMask; // @[DCache.scala 135:15]
+  assign dataArb_io_in_0_valid = pstore_drain_structural | _pstore_drain_T_10; // @[DCache.scala 492:48]
+  assign dataArb_io_in_0_bits_addr = _dataArb_io_in_0_bits_addr_T[11:0]; // @[DCache.scala 524:30]
+  assign dataArb_io_in_0_bits_write = pstore_drain_structural | _pstore_drain_T_10; // @[DCache.scala 492:48]
+  assign dataArb_io_in_0_bits_wdata = {dataArb_io_in_0_bits_wdata_hi,dataArb_io_in_0_bits_wdata_lo}; // @[Cat.scala 31:58]
+  assign dataArb_io_in_0_bits_eccMask = {dataArb_io_in_0_bits_eccMask_hi,dataArb_io_in_0_bits_eccMask_lo}; // @[Cat.scala 31:58]
+  assign dataArb_io_in_1_valid = grantIsUncachedData & (blockUncachedGrant | s1_valid) ? _GEN_237 : auto_out_d_valid &
+    grantIsRefill & canAcceptCachedGrant; // @[DCache.scala 696:26 727:68]
+  assign dataArb_io_in_1_bits_addr = _dataArb_io_in_1_bits_addr_T_2[11:0]; // @[DCache.scala 703:32]
+  assign dataArb_io_in_1_bits_write = grantIsUncachedData & (blockUncachedGrant | s1_valid) ? _GEN_238 : 1'h1; // @[DCache.scala 702:33 727:68]
+  assign dataArb_io_in_1_bits_wdata = {tl_d_data_encoded_hi,tl_d_data_encoded_lo}; // @[Cat.scala 31:58]
+  assign dataArb_io_in_2_valid = inWriteback & releaseDataBeat < 11'h10; // @[DCache.scala 875:41]
+  assign dataArb_io_in_2_bits_addr = _dataArb_io_in_2_bits_addr_T_1 | _GEN_366; // @[DCache.scala 878:72]
+  assign dataArb_io_in_2_bits_wdata = dataArb_io_in_1_bits_wdata; // @[DCache.scala 876:25]
+  assign dataArb_io_in_3_valid = io_cpu_req_valid & res; // @[DCache.scala 222:46]
+  assign dataArb_io_in_3_bits_addr = _dataArb_io_in_3_bits_addr_T_2[11:0]; // @[DCache.scala 225:30]
+  assign dataArb_io_in_3_bits_wdata = dataArb_io_in_1_bits_wdata; // @[DCache.scala 223:25]
+  assign dataArb_io_in_3_bits_wordMask = 1'h1; // @[DCache.scala 226:34]
+  assign amoalu_io_mask = pstore1_mask; // @[DCache.scala 957:38]
+  assign amoalu_io_cmd = pstore1_cmd; // @[DCache.scala 958:21]
+  assign amoalu_io_lhs = {s2_data_corrected_hi,s2_data_corrected_lo}; // @[Cat.scala 31:58]
+  assign amoalu_io_rhs = pstore1_data; // @[DCache.scala 960:37]
+  assign tag_array_RW0_en = s0_clk_en | _T_19;
+  assign tag_array_RW0_wmode = metaArb_io_out_bits_write;
+  assign tag_array_RW0_addr = _T_19 ? _GEN_42 : _GEN_42;
+  always @(posedge clock) begin
+    if (reset) begin // @[DCache.scala 162:21]
+      s1_valid <= 1'h0; // @[DCache.scala 162:21]
+    end else begin
+      s1_valid <= s1_valid_x12; // @[DCache.scala 162:21]
+    end
+    if (reset) begin // @[DCache.scala 643:38]
+      blockProbeAfterGrantCount <= 3'h0; // @[DCache.scala 643:38]
+    end else if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        if (d_last) begin // @[DCache.scala 653:20]
+          blockProbeAfterGrantCount <= 3'h7; // @[DCache.scala 656:35]
+        end else begin
+          blockProbeAfterGrantCount <= _GEN_185;
+        end
+      end else begin
+        blockProbeAfterGrantCount <= _GEN_185;
+      end
+    end else begin
+      blockProbeAfterGrantCount <= _GEN_185;
+    end
+    if (reset) begin // @[DCache.scala 447:22]
+      lrscCount <= 7'h0; // @[DCache.scala 447:22]
+    end else if (s1_probe) begin // @[DCache.scala 459:19]
+      lrscCount <= 7'h0; // @[DCache.scala 459:31]
+    end else if (s2_valid_masked & lrscValid) begin // @[DCache.scala 458:43]
+      lrscCount <= 7'h3; // @[DCache.scala 458:55]
+    end else if (_lrscBackingOff_T) begin // @[DCache.scala 457:24]
+      lrscCount <= _lrscCount_T_2; // @[DCache.scala 457:36]
+    end else begin
+      lrscCount <= _GEN_122;
+    end
+    if (reset) begin // @[DCache.scala 163:21]
+      s1_probe <= 1'h0; // @[DCache.scala 163:21]
+    end else if (release_state == 4'h4) begin // @[DCache.scala 816:44]
+      s1_probe <= _GEN_297;
+    end else begin
+      s1_probe <= s1_probe_x16; // @[DCache.scala 163:21]
+    end
+    if (reset) begin // @[DCache.scala 308:21]
+      s2_probe <= 1'h0; // @[DCache.scala 308:21]
+    end else begin
+      s2_probe <= s1_probe; // @[DCache.scala 308:21]
+    end
+    if (reset) begin // @[DCache.scala 208:26]
+      release_state <= 4'h0; // @[DCache.scala 208:26]
+    end else if (_T_306) begin // @[DCache.scala 889:34]
+      release_state <= 4'h0; // @[DCache.scala 889:50]
+    end else if (_T_302) begin // @[DCache.scala 838:102]
+      if (releaseDone) begin // @[DCache.scala 853:26]
+        release_state <= 4'h6; // @[DCache.scala 853:42]
+      end else begin
+        release_state <= _GEN_324;
+      end
+    end else begin
+      release_state <= _GEN_324;
+    end
+    if (reset) begin // @[DCache.scala 206:29]
+      release_ack_wait <= 1'h0; // @[DCache.scala 206:29]
+    end else if (_T_302) begin // @[DCache.scala 838:102]
+      release_ack_wait <= _GEN_333;
+    end else if (_T_261) begin // @[DCache.scala 649:26]
+      if (!(grantIsCached)) begin // @[DCache.scala 650:26]
+        release_ack_wait <= _GEN_207;
+      end
+    end
+    if (_T_302) begin // @[DCache.scala 838:102]
+      if (_T_287 & c_first) begin // @[DCache.scala 854:41]
+        release_ack_addr <= probe_bits_address; // @[DCache.scala 856:26]
+      end
+    end
+    if (reset) begin // @[DCache.scala 642:28]
+      grantInProgress <= 1'h0; // @[DCache.scala 642:28]
+    end else if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        if (d_last) begin // @[DCache.scala 653:20]
+          grantInProgress <= 1'h0; // @[DCache.scala 655:25]
+        end else begin
+          grantInProgress <= 1'h1; // @[DCache.scala 651:23]
+        end
+      end
+    end
+    if (reset) begin // @[DCache.scala 306:21]
+      s2_valid <= 1'h0; // @[DCache.scala 306:21]
+    end else begin
+      s2_valid <= s2_valid_x44; // @[DCache.scala 306:21]
+    end
+    if (s2_want_victimize) begin // @[DCache.scala 791:25]
+      probe_bits_param <= 2'h0; // @[DCache.scala 797:18]
+    end else if (s1_probe_x16) begin // @[Reg.scala 17:18]
+      probe_bits_param <= auto_out_b_bits_param; // @[Reg.scala 17:22]
+    end
+    if (s2_want_victimize) begin // @[DCache.scala 791:25]
+      probe_bits_size <= 4'h0; // @[DCache.scala 797:18]
+    end else if (s1_probe_x16) begin // @[Reg.scala 17:18]
+      probe_bits_size <= auto_out_b_bits_size; // @[Reg.scala 17:22]
+    end
+    if (s2_want_victimize) begin // @[DCache.scala 791:25]
+      probe_bits_source <= 1'h0; // @[DCache.scala 797:18]
+    end else if (s1_probe_x16) begin // @[Reg.scala 17:18]
+      probe_bits_source <= auto_out_b_bits_source; // @[Reg.scala 17:22]
+    end
+    if (s2_want_victimize) begin // @[DCache.scala 791:25]
+      probe_bits_address <= res_2_address; // @[DCache.scala 797:18]
+    end else if (s1_probe_x16) begin // @[Reg.scala 17:18]
+      probe_bits_address <= auto_out_b_bits_address; // @[Reg.scala 17:22]
+    end
+    if (s1_probe) begin // @[Reg.scala 17:18]
+      if (_T_27 & ~s1_flush_valid) begin // @[DCache.scala 294:41]
+        s2_probe_state_state <= s1_meta_uncorrected_0_coh_state;
+      end else begin
+        s2_probe_state_state <= 2'h0;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_T_287) begin // @[Edges.scala 234:17]
+      if (c_first) begin // @[Edges.scala 235:21]
+        if (beats1_opdata_1) begin // @[Edges.scala 220:14]
+          counter_1 <= beats1_decode_1;
+        end else begin
+          counter_1 <= 10'h0;
+        end
+      end else begin
+        counter_1 <= counter1_1;
+      end
+    end
+    s2_release_data_valid <= s1_release_data_valid & ~releaseRejected; // @[DCache.scala 777:64]
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_req_cmd <= io_cpu_req_bits_cmd; // @[Reg.scala 17:22]
+    end
+    if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_cmd <= _GEN_53;
+      end else if (grantIsUncached) begin // @[DCache.scala 659:35]
+        if (grantIsUncachedData) begin // @[DCache.scala 666:34]
+          s2_req_cmd <= 5'h0; // @[DCache.scala 670:22]
+        end else begin
+          s2_req_cmd <= _GEN_53;
+        end
+      end else begin
+        s2_req_cmd <= _GEN_53;
+      end
+    end else begin
+      s2_req_cmd <= _GEN_53;
+    end
+    if (reset) begin // @[DCache.scala 479:29]
+      pstore1_held <= 1'h0; // @[DCache.scala 479:29]
+    end else begin
+      pstore1_held <= pstore1_valid & pstore2_valid & ~pstore_drain; // @[DCache.scala 496:16]
+    end
+    if (_pstore1_cmd_T) begin // @[Reg.scala 17:18]
+      pstore1_addr <= s1_vaddr; // @[Reg.scala 17:22]
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_req_addr <= s0_req_addr; // @[Reg.scala 17:22]
+    end
+    if (_pstore1_cmd_T) begin // @[Reg.scala 17:18]
+      if (_s1_write_T_1) begin // @[DCache.scala 302:20]
+        pstore1_mask <= io_cpu_s1_data_mask;
+      end else begin
+        pstore1_mask <= s1_mask_xwr;
+      end
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_req_size <= io_cpu_req_bits_size; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[DCache.scala 476:30]
+      pstore2_valid <= 1'h0; // @[DCache.scala 476:30]
+    end else begin
+      pstore2_valid <= pstore2_valid & _pstore1_held_T_9 | advance_pstore1; // @[DCache.scala 498:17]
+    end
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_addr <= pstore1_addr; // @[Reg.scala 17:22]
+    end
+    if (advance_pstore1) begin // @[DCache.scala 507:45]
+      mask <= _pstore2_storegen_mask_mask_T_2; // @[DCache.scala 509:12]
+    end
+    s2_not_nacked_in_s1 <= ~s1_nack; // @[DCache.scala 310:37]
+    if (_T_43) begin // @[Reg.scala 17:18]
+      if (_T_27 & ~s1_flush_valid) begin // @[DCache.scala 294:41]
+        s2_hit_state_state <= s1_meta_uncorrected_0_coh_state;
+      end else begin
+        s2_hit_state_state <= 2'h0;
+      end
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_req_tag <= io_cpu_req_bits_tag; // @[Reg.scala 17:22]
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_req_signed <= io_cpu_req_bits_signed; // @[Reg.scala 17:22]
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_req_dprv <= io_cpu_req_bits_dprv; // @[Reg.scala 17:22]
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_tlb_req_vaddr <= s0_req_addr; // @[Reg.scala 17:22]
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_tlb_req_size <= io_cpu_req_bits_size; // @[Reg.scala 17:22]
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_tlb_req_cmd <= io_cpu_req_bits_cmd; // @[Reg.scala 17:22]
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_tlb_req_prv <= io_cpu_req_bits_dprv; // @[Reg.scala 17:22]
+    end
+    s1_flush_valid <= _s1_flush_valid_T & _T_29 & _s2_cannot_victimize_T & _io_cpu_req_ready_T & _tl_out_a_valid_T_7; // @[DCache.scala 988:124]
+    if (reset) begin // @[DCache.scala 203:30]
+      cached_grant_wait <= 1'h0; // @[DCache.scala 203:30]
+    end else if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        if (d_last) begin // @[DCache.scala 653:20]
+          cached_grant_wait <= 1'h0; // @[DCache.scala 654:27]
+        end else begin
+          cached_grant_wait <= _GEN_182;
+        end
+      end else begin
+        cached_grant_wait <= _GEN_182;
+      end
+    end else begin
+      cached_grant_wait <= _GEN_182;
+    end
+    if (reset) begin // @[DCache.scala 204:26]
+      resetting <= 1'h0; // @[DCache.scala 204:26]
+    end else if (resetting) begin // @[DCache.scala 1025:20]
+      if (flushDone) begin // @[DCache.scala 1027:22]
+        resetting <= 1'h0; // @[DCache.scala 1028:17]
+      end else begin
+        resetting <= _GEN_351;
+      end
+    end else begin
+      resetting <= _GEN_351;
+    end
+    if (reset) begin // @[DCache.scala 205:25]
+      flushCounter <= 6'h0; // @[DCache.scala 205:25]
+    end else begin
+      flushCounter <= _GEN_353[5:0];
+    end
+    if (reset) begin // @[DCache.scala 216:33]
+      uncachedInFlight_0 <= 1'h0; // @[DCache.scala 216:33]
+    end else if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        uncachedInFlight_0 <= _GEN_169;
+      end else if (grantIsUncached) begin // @[DCache.scala 659:35]
+        uncachedInFlight_0 <= _GEN_190;
+      end else begin
+        uncachedInFlight_0 <= _GEN_169;
+      end
+    end else begin
+      uncachedInFlight_0 <= _GEN_169;
+    end
+    if (_T_253) begin // @[DCache.scala 606:26]
+      if (s2_uncached) begin // @[DCache.scala 607:24]
+        if (a_sel) begin // @[DCache.scala 609:18]
+          uncachedReqs_0_addr <= s2_req_addr; // @[DCache.scala 611:13]
+        end
+      end
+    end
+    if (_T_253) begin // @[DCache.scala 606:26]
+      if (s2_uncached) begin // @[DCache.scala 607:24]
+        if (a_sel) begin // @[DCache.scala 609:18]
+          uncachedReqs_0_tag <= s2_req_tag; // @[DCache.scala 611:13]
+        end
+      end
+    end
+    if (_T_253) begin // @[DCache.scala 606:26]
+      if (s2_uncached) begin // @[DCache.scala 607:24]
+        if (a_sel) begin // @[DCache.scala 609:18]
+          uncachedReqs_0_size <= s2_req_size; // @[DCache.scala 611:13]
+        end
+      end
+    end
+    if (_T_253) begin // @[DCache.scala 606:26]
+      if (s2_uncached) begin // @[DCache.scala 607:24]
+        if (a_sel) begin // @[DCache.scala 609:18]
+          uncachedReqs_0_signed <= s2_req_signed; // @[DCache.scala 611:13]
+        end
+      end
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_did_read <= _s1_did_read_T_54; // @[Reg.scala 17:22]
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_read_mask <= dataArb_io_in_3_bits_wordMask; // @[Reg.scala 17:22]
+    end
+    if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_addr <= _GEN_51;
+      end else if (grantIsUncached) begin // @[DCache.scala 659:35]
+        if (grantIsUncachedData) begin // @[DCache.scala 666:34]
+          s2_req_addr <= {{1'd0}, _s2_req_addr_T_1}; // @[DCache.scala 674:23]
+        end else begin
+          s2_req_addr <= _GEN_51;
+        end
+      end else begin
+        s2_req_addr <= _GEN_51;
+      end
+    end else begin
+      s2_req_addr <= _GEN_51;
+    end
+    if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_tag <= _GEN_52;
+      end else if (grantIsUncached) begin // @[DCache.scala 659:35]
+        if (grantIsUncachedData) begin // @[DCache.scala 666:34]
+          s2_req_tag <= uncachedReqs_0_tag; // @[DCache.scala 673:22]
+        end else begin
+          s2_req_tag <= _GEN_52;
+        end
+      end else begin
+        s2_req_tag <= _GEN_52;
+      end
+    end else begin
+      s2_req_tag <= _GEN_52;
+    end
+    if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_size <= _GEN_54;
+      end else if (grantIsUncached) begin // @[DCache.scala 659:35]
+        if (grantIsUncachedData) begin // @[DCache.scala 666:34]
+          s2_req_size <= uncachedReqs_0_size; // @[DCache.scala 671:23]
+        end else begin
+          s2_req_size <= _GEN_54;
+        end
+      end else begin
+        s2_req_size <= _GEN_54;
+      end
+    end else begin
+      s2_req_size <= _GEN_54;
+    end
+    if (_T_261) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_signed <= _GEN_55;
+      end else if (grantIsUncached) begin // @[DCache.scala 659:35]
+        if (grantIsUncachedData) begin // @[DCache.scala 666:34]
+          s2_req_signed <= uncachedReqs_0_signed; // @[DCache.scala 672:25]
+        end else begin
+          s2_req_signed <= _GEN_55;
+        end
+      end else begin
+        s2_req_signed <= _GEN_55;
+      end
+    end else begin
+      s2_req_signed <= _GEN_55;
+    end
+    if (s1_valid_not_nacked | s1_flush_valid) begin // @[DCache.scala 320:48]
+      s2_req_dprv <= s1_req_dprv; // @[DCache.scala 321:12]
+    end
+    if (s1_valid_not_nacked | s1_flush_valid) begin // @[DCache.scala 320:48]
+      s2_tlb_xcpt_pf_ld <= tlb_io_resp_pf_ld; // @[DCache.scala 323:17]
+    end
+    if (s1_valid_not_nacked | s1_flush_valid) begin // @[DCache.scala 320:48]
+      s2_tlb_xcpt_pf_st <= tlb_io_resp_pf_st; // @[DCache.scala 323:17]
+    end
+    if (s1_valid_not_nacked | s1_flush_valid) begin // @[DCache.scala 320:48]
+      s2_tlb_xcpt_ae_ld <= tlb_io_resp_ae_ld; // @[DCache.scala 323:17]
+    end
+    if (s1_valid_not_nacked | s1_flush_valid) begin // @[DCache.scala 320:48]
+      s2_tlb_xcpt_ae_st <= tlb_io_resp_ae_st; // @[DCache.scala 323:17]
+    end
+    if (s1_valid_not_nacked | s1_flush_valid) begin // @[DCache.scala 320:48]
+      s2_tlb_xcpt_ma_ld <= tlb_io_resp_ma_ld; // @[DCache.scala 323:17]
+    end
+    if (s1_valid_not_nacked | s1_flush_valid) begin // @[DCache.scala 320:48]
+      s2_tlb_xcpt_ma_st <= tlb_io_resp_ma_st; // @[DCache.scala 323:17]
+    end
+    if (s1_valid_not_nacked | s1_flush_valid) begin // @[DCache.scala 320:48]
+      s2_pma_cacheable <= tlb_io_resp_cacheable; // @[DCache.scala 324:12]
+    end
+    if (_T_261) begin // @[DCache.scala 649:26]
+      if (!(grantIsCached)) begin // @[DCache.scala 650:26]
+        if (grantIsUncached) begin // @[DCache.scala 659:35]
+          if (grantIsUncachedData) begin // @[DCache.scala 666:34]
+            s2_uncached_resp_addr <= uncachedReqs_0_addr; // @[DCache.scala 679:33]
+          end
+        end
+      end
+    end
+    if (_T_43) begin // @[Reg.scala 17:18]
+      s2_vaddr_r <= s1_vaddr; // @[Reg.scala 17:22]
+    end
+    s2_flush_valid_pre_tag_ecc <= s1_flush_valid; // @[DCache.scala 330:43]
+    if (s1_meta_clk_en) begin // @[Reg.scala 17:18]
+      s2_meta_corrected_r <= tag_array_RW0_rdata_0; // @[Reg.scala 17:22]
+    end
+    if (grantIsUncachedData & (blockUncachedGrant | s1_valid)) begin // @[DCache.scala 727:68]
+      if (auto_out_d_valid) begin // @[DCache.scala 730:29]
+        blockUncachedGrant <= _T_281; // @[DCache.scala 734:28]
+      end else begin
+        blockUncachedGrant <= dataArb_io_out_valid; // @[DCache.scala 726:24]
+      end
+    end else begin
+      blockUncachedGrant <= dataArb_io_out_valid; // @[DCache.scala 726:24]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_T_261) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (beats1_opdata) begin // @[Edges.scala 220:14]
+          counter <= beats1_decode;
+        end else begin
+          counter <= 10'h0;
+        end
+      end else begin
+        counter <= counter1;
+      end
+    end
+    if (en) begin // @[Reg.scala 17:18]
+      s2_data <= _s2_data_T_6; // @[Reg.scala 17:22]
+    end
+    if (s2_valid_hit_pre_data_ecc_and_waw & _c_cat_T_48 & _io_cpu_req_ready_T_1 | s2_valid_cached_miss) begin // @[DCache.scala 453:99]
+      lrscAddr <= s2_req_addr[31:6]; // @[DCache.scala 455:14]
+    end
+    if (_pstore1_cmd_T) begin // @[Reg.scala 17:18]
+      pstore1_cmd <= s1_req_cmd; // @[Reg.scala 17:22]
+    end
+    if (_pstore1_cmd_T) begin // @[Reg.scala 17:18]
+      pstore1_data <= io_cpu_s1_data_data; // @[Reg.scala 17:22]
+    end
+    if (_pstore1_cmd_T) begin // @[Reg.scala 17:18]
+      pstore1_rmw_r <= _pstore1_rmw_T_52; // @[Reg.scala 17:22]
+    end
+    pstore_drain_on_miss_REG <= io_cpu_s2_nack; // @[DCache.scala 478:56]
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_storegen_data_r <= pstore1_storegen_data[7:0]; // @[Reg.scala 17:22]
+    end
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_storegen_data_r_1 <= pstore1_storegen_data[15:8]; // @[Reg.scala 17:22]
+    end
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_storegen_data_r_2 <= pstore1_storegen_data[23:16]; // @[Reg.scala 17:22]
+    end
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_storegen_data_r_3 <= pstore1_storegen_data[31:24]; // @[Reg.scala 17:22]
+    end
+    s1_release_data_valid <= dataArb_io_in_2_ready & dataArb_io_in_2_valid; // @[Decoupled.scala 50:35]
+    io_cpu_s2_xcpt_REG <= tlb_io_req_valid & _s1_valid_not_nacked_T; // @[DCache.scala 906:65]
+    doUncachedResp <= io_cpu_replay_next; // @[DCache.scala 922:27]
+    REG <= reset; // @[compatibility.scala 290:56]
+    if (reset) begin // @[Edges.scala 228:27]
+      io_cpu_perf_release_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_T_287) begin // @[Edges.scala 234:17]
+      if (io_cpu_perf_release_first) begin // @[Edges.scala 235:21]
+        if (beats1_opdata_1) begin // @[Edges.scala 220:14]
+          io_cpu_perf_release_counter <= beats1_decode_1;
+        end else begin
+          io_cpu_perf_release_counter <= 10'h0;
+        end
+      end else begin
+        io_cpu_perf_release_counter <= io_cpu_perf_release_counter1;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~_dataArb_io_in_3_valid_T_52 | res) & ~reset) begin
+          $fatal; // @[DCache.scala 1160:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~_dataArb_io_in_3_valid_T_52 | res)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at DCache.scala:1160 assert(!needsRead(req) || res)\n"); // @[DCache.scala 1160:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(s1_valid_masked & _s1_write_T_1) | &_T_37) & _dataArb_io_in_3_valid_T_56) begin
+          $fatal; // @[DCache.scala 304:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_dataArb_io_in_3_valid_T_56 & ~(~(s1_valid_masked & _s1_write_T_1) | &_T_37)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at DCache.scala:304 assert(!(s1_valid_masked && s1_req.cmd === M_PWR) || (s1_mask_xwr | ~io.cpu.s1_data.mask).andR)\n"
+            ); // @[DCache.scala 304:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~_dataArb_io_in_3_valid_T_52 | res) & ~reset) begin
+          $fatal; // @[DCache.scala 1160:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~_dataArb_io_in_3_valid_T_52 | res)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at DCache.scala:1160 assert(!needsRead(req) || res)\n"); // @[DCache.scala 1160:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(pstore1_rmw_r | _T_244 == pstore1_valid) & _dataArb_io_in_3_valid_T_56) begin
+          $fatal; // @[DCache.scala 485:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_dataArb_io_in_3_valid_T_56 & ~(pstore1_rmw_r | _T_244 == pstore1_valid)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at DCache.scala:485 assert(pstore1_rmw || pstore1_valid_not_rmw(io.cpu.s2_kill) === pstore1_valid)\n"
+            ); // @[DCache.scala 485:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_io_cpu_req_ready_T_1 & (_T_261 & grantIsCached & _dataArb_io_in_3_valid_T_56)) begin
+          $fatal; // @[DCache.scala 652:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_261 & grantIsCached & _dataArb_io_in_3_valid_T_56 & _io_cpu_req_ready_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: A GrantData was unexpected by the dcache.\n    at DCache.scala:652 assert(cached_grant_wait, \"A GrantData was unexpected by the dcache.\")\n"
+            ); // @[DCache.scala 652:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_a_source_T & (_T_261 & _T_322 & grantIsUncached & _T_266 & _dataArb_io_in_3_valid_T_56)) begin
+          $fatal; // @[DCache.scala 662:17]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_261 & _T_322 & grantIsUncached & _T_266 & _dataArb_io_in_3_valid_T_56 & _a_source_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: An AccessAck was unexpected by the dcache.\n    at DCache.scala:662 assert(f, \"An AccessAck was unexpected by the dcache.\") // TODO must handle Ack coming back on same cycle!\n"
+            ); // @[DCache.scala 662:17]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_tl_out_a_valid_T_7 & (_GEN_380 & _tl_d_data_encoded_T_8 & grantIsVoluntary & _dataArb_io_in_3_valid_T_56)
+          ) begin
+          $fatal; // @[DCache.scala 683:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_GEN_380 & _tl_d_data_encoded_T_8 & grantIsVoluntary & _dataArb_io_in_3_valid_T_56 & _tl_out_a_valid_T_7
+          ) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: A ReleaseAck was unexpected by the dcache.\n    at DCache.scala:683 assert(release_ack_wait, \"A ReleaseAck was unexpected by the dcache.\") // TODO should handle Ack coming back on same cycle!\n"
+            ); // @[DCache.scala 683:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_273 == (_T_261 & d_first & grantIsCached)) & _dataArb_io_in_3_valid_T_56) begin
+          $fatal; // @[DCache.scala 691:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_dataArb_io_in_3_valid_T_56 & ~(_T_273 == (_T_261 & d_first & grantIsCached))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at DCache.scala:691 assert(tl_out.e.fire() === (tl_out.d.fire() && d_first && grantIsCached))\n"
+            ); // @[DCache.scala 691:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(s2_valid_flush_line | s2_flush_valid_pre_tag_ecc | io_cpu_s2_nack) & (s2_want_victimize &
+          _dataArb_io_in_3_valid_T_56)) begin
+          $fatal; // @[DCache.scala 792:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (s2_want_victimize & _dataArb_io_in_3_valid_T_56 & ~(s2_valid_flush_line | s2_flush_valid_pre_tag_ecc |
+          io_cpu_s2_nack)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at DCache.scala:792 assert(s2_valid_flush_line || s2_flush_valid || io.cpu.s2_nack)\n"
+            ); // @[DCache.scala 792:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_io_cpu_s2_nack_T_4 & (doUncachedResp & _dataArb_io_in_3_valid_T_56)) begin
+          $fatal; // @[DCache.scala 926:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (doUncachedResp & _dataArb_io_in_3_valid_T_56 & ~_io_cpu_s2_nack_T_4) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at DCache.scala:926 assert(!s2_valid_hit)\n"); // @[DCache.scala 926:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  s1_valid = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  blockProbeAfterGrantCount = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  lrscCount = _RAND_2[6:0];
+  _RAND_3 = {1{`RANDOM}};
+  s1_probe = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  s2_probe = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  release_state = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  release_ack_wait = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  release_ack_addr = _RAND_7[30:0];
+  _RAND_8 = {1{`RANDOM}};
+  grantInProgress = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  s2_valid = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  probe_bits_param = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  probe_bits_size = _RAND_11[3:0];
+  _RAND_12 = {1{`RANDOM}};
+  probe_bits_source = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  probe_bits_address = _RAND_13[30:0];
+  _RAND_14 = {1{`RANDOM}};
+  s2_probe_state_state = _RAND_14[1:0];
+  _RAND_15 = {1{`RANDOM}};
+  counter_1 = _RAND_15[9:0];
+  _RAND_16 = {1{`RANDOM}};
+  s2_release_data_valid = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  s1_req_cmd = _RAND_17[4:0];
+  _RAND_18 = {1{`RANDOM}};
+  s2_req_cmd = _RAND_18[4:0];
+  _RAND_19 = {1{`RANDOM}};
+  pstore1_held = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  pstore1_addr = _RAND_20[31:0];
+  _RAND_21 = {1{`RANDOM}};
+  s1_req_addr = _RAND_21[31:0];
+  _RAND_22 = {1{`RANDOM}};
+  pstore1_mask = _RAND_22[3:0];
+  _RAND_23 = {1{`RANDOM}};
+  s1_req_size = _RAND_23[1:0];
+  _RAND_24 = {1{`RANDOM}};
+  pstore2_valid = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  pstore2_addr = _RAND_25[31:0];
+  _RAND_26 = {1{`RANDOM}};
+  mask = _RAND_26[3:0];
+  _RAND_27 = {1{`RANDOM}};
+  s2_not_nacked_in_s1 = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  s2_hit_state_state = _RAND_28[1:0];
+  _RAND_29 = {1{`RANDOM}};
+  s1_req_tag = _RAND_29[5:0];
+  _RAND_30 = {1{`RANDOM}};
+  s1_req_signed = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  s1_req_dprv = _RAND_31[1:0];
+  _RAND_32 = {1{`RANDOM}};
+  s1_tlb_req_vaddr = _RAND_32[31:0];
+  _RAND_33 = {1{`RANDOM}};
+  s1_tlb_req_size = _RAND_33[1:0];
+  _RAND_34 = {1{`RANDOM}};
+  s1_tlb_req_cmd = _RAND_34[4:0];
+  _RAND_35 = {1{`RANDOM}};
+  s1_tlb_req_prv = _RAND_35[1:0];
+  _RAND_36 = {1{`RANDOM}};
+  s1_flush_valid = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  cached_grant_wait = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  resetting = _RAND_38[0:0];
+  _RAND_39 = {1{`RANDOM}};
+  flushCounter = _RAND_39[5:0];
+  _RAND_40 = {1{`RANDOM}};
+  uncachedInFlight_0 = _RAND_40[0:0];
+  _RAND_41 = {1{`RANDOM}};
+  uncachedReqs_0_addr = _RAND_41[31:0];
+  _RAND_42 = {1{`RANDOM}};
+  uncachedReqs_0_tag = _RAND_42[5:0];
+  _RAND_43 = {1{`RANDOM}};
+  uncachedReqs_0_size = _RAND_43[1:0];
+  _RAND_44 = {1{`RANDOM}};
+  uncachedReqs_0_signed = _RAND_44[0:0];
+  _RAND_45 = {1{`RANDOM}};
+  s1_did_read = _RAND_45[0:0];
+  _RAND_46 = {1{`RANDOM}};
+  s1_read_mask = _RAND_46[0:0];
+  _RAND_47 = {1{`RANDOM}};
+  s2_req_addr = _RAND_47[31:0];
+  _RAND_48 = {1{`RANDOM}};
+  s2_req_tag = _RAND_48[5:0];
+  _RAND_49 = {1{`RANDOM}};
+  s2_req_size = _RAND_49[1:0];
+  _RAND_50 = {1{`RANDOM}};
+  s2_req_signed = _RAND_50[0:0];
+  _RAND_51 = {1{`RANDOM}};
+  s2_req_dprv = _RAND_51[1:0];
+  _RAND_52 = {1{`RANDOM}};
+  s2_tlb_xcpt_pf_ld = _RAND_52[0:0];
+  _RAND_53 = {1{`RANDOM}};
+  s2_tlb_xcpt_pf_st = _RAND_53[0:0];
+  _RAND_54 = {1{`RANDOM}};
+  s2_tlb_xcpt_ae_ld = _RAND_54[0:0];
+  _RAND_55 = {1{`RANDOM}};
+  s2_tlb_xcpt_ae_st = _RAND_55[0:0];
+  _RAND_56 = {1{`RANDOM}};
+  s2_tlb_xcpt_ma_ld = _RAND_56[0:0];
+  _RAND_57 = {1{`RANDOM}};
+  s2_tlb_xcpt_ma_st = _RAND_57[0:0];
+  _RAND_58 = {1{`RANDOM}};
+  s2_pma_cacheable = _RAND_58[0:0];
+  _RAND_59 = {1{`RANDOM}};
+  s2_uncached_resp_addr = _RAND_59[31:0];
+  _RAND_60 = {1{`RANDOM}};
+  s2_vaddr_r = _RAND_60[31:0];
+  _RAND_61 = {1{`RANDOM}};
+  s2_flush_valid_pre_tag_ecc = _RAND_61[0:0];
+  _RAND_62 = {1{`RANDOM}};
+  s2_meta_corrected_r = _RAND_62[20:0];
+  _RAND_63 = {1{`RANDOM}};
+  blockUncachedGrant = _RAND_63[0:0];
+  _RAND_64 = {1{`RANDOM}};
+  counter = _RAND_64[9:0];
+  _RAND_65 = {1{`RANDOM}};
+  s2_data = _RAND_65[31:0];
+  _RAND_66 = {1{`RANDOM}};
+  lrscAddr = _RAND_66[25:0];
+  _RAND_67 = {1{`RANDOM}};
+  pstore1_cmd = _RAND_67[4:0];
+  _RAND_68 = {1{`RANDOM}};
+  pstore1_data = _RAND_68[31:0];
+  _RAND_69 = {1{`RANDOM}};
+  pstore1_rmw_r = _RAND_69[0:0];
+  _RAND_70 = {1{`RANDOM}};
+  pstore_drain_on_miss_REG = _RAND_70[0:0];
+  _RAND_71 = {1{`RANDOM}};
+  pstore2_storegen_data_r = _RAND_71[7:0];
+  _RAND_72 = {1{`RANDOM}};
+  pstore2_storegen_data_r_1 = _RAND_72[7:0];
+  _RAND_73 = {1{`RANDOM}};
+  pstore2_storegen_data_r_2 = _RAND_73[7:0];
+  _RAND_74 = {1{`RANDOM}};
+  pstore2_storegen_data_r_3 = _RAND_74[7:0];
+  _RAND_75 = {1{`RANDOM}};
+  s1_release_data_valid = _RAND_75[0:0];
+  _RAND_76 = {1{`RANDOM}};
+  io_cpu_s2_xcpt_REG = _RAND_76[0:0];
+  _RAND_77 = {1{`RANDOM}};
+  doUncachedResp = _RAND_77[0:0];
+  _RAND_78 = {1{`RANDOM}};
+  REG = _RAND_78[0:0];
+  _RAND_79 = {1{`RANDOM}};
+  io_cpu_perf_release_counter = _RAND_79[9:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ICache(
+  input         clock,
+  input         reset,
+  output        auto_slave_in_a_ready,
+  input         auto_slave_in_a_valid,
+  input  [2:0]  auto_slave_in_a_bits_opcode,
+  input  [1:0]  auto_slave_in_a_bits_size,
+  input  [7:0]  auto_slave_in_a_bits_source,
+  input  [27:0] auto_slave_in_a_bits_address,
+  input  [3:0]  auto_slave_in_a_bits_mask,
+  input  [31:0] auto_slave_in_a_bits_data,
+  input         auto_slave_in_d_ready,
+  output        auto_slave_in_d_valid,
+  output [2:0]  auto_slave_in_d_bits_opcode,
+  output [1:0]  auto_slave_in_d_bits_size,
+  output [7:0]  auto_slave_in_d_bits_source,
+  output [31:0] auto_slave_in_d_bits_data,
+  input         auto_master_out_a_ready,
+  output        auto_master_out_a_valid,
+  output [30:0] auto_master_out_a_bits_address,
+  output        auto_master_out_d_ready,
+  input         auto_master_out_d_valid,
+  input  [2:0]  auto_master_out_d_bits_opcode,
+  input  [3:0]  auto_master_out_d_bits_size,
+  input  [31:0] auto_master_out_d_bits_data,
+  input         auto_master_out_d_bits_corrupt,
+  output        io_req_ready,
+  input         io_req_valid,
+  input  [31:0] io_req_bits_addr,
+  input  [30:0] io_s1_paddr,
+  input  [31:0] io_s2_vaddr,
+  input         io_s1_kill,
+  input         io_s2_kill,
+  output        io_resp_valid,
+  output [31:0] io_resp_bits_data,
+  output        io_resp_bits_ae,
+  input         io_invalidate, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [255:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+`endif // RANDOMIZE_REG_INIT
+  wire  repl_way_v0_prng_clock; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_reset; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_increment; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_0; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_1; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_2; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_3; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_4; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_5; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_6; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_7; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_8; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_9; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_10; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_11; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_12; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_13; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_14; // @[PRNG.scala 91:22]
+  wire  repl_way_v0_prng_io_out_15; // @[PRNG.scala 91:22]
+  wire [6:0] tag_array_RW0_addr; // @[DescribedSRAM.scala 19:26]
+  wire  tag_array_RW0_en; // @[DescribedSRAM.scala 19:26]
+  wire  tag_array_RW0_clk; // @[DescribedSRAM.scala 19:26]
+  wire  tag_array_RW0_wmode; // @[DescribedSRAM.scala 19:26]
+  wire [18:0] tag_array_RW0_wdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [18:0] tag_array_RW0_wdata_1; // @[DescribedSRAM.scala 19:26]
+  wire [18:0] tag_array_RW0_rdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [18:0] tag_array_RW0_rdata_1; // @[DescribedSRAM.scala 19:26]
+  wire  tag_array_RW0_wmask_0; // @[DescribedSRAM.scala 19:26]
+  wire  tag_array_RW0_wmask_1; // @[DescribedSRAM.scala 19:26]
+  wire [10:0] data_arrays_0_RW0_addr; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_en; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_clk; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmode; // @[DescribedSRAM.scala 19:26]
+  wire [31:0] data_arrays_0_RW0_wdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [31:0] data_arrays_0_RW0_wdata_1; // @[DescribedSRAM.scala 19:26]
+  wire [31:0] data_arrays_0_RW0_rdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [31:0] data_arrays_0_RW0_rdata_1; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_0; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_1; // @[DescribedSRAM.scala 19:26]
+  reg  scratchpadOn; // @[ICache.scala 149:29]
+  reg [6:0] scratchpadMax; // @[ICache.scala 150:42]
+  reg  s1_slaveValid; // @[ICache.scala 161:30]
+  reg  s2_slaveValid; // @[ICache.scala 162:30]
+  reg  s3_slaveValid; // @[ICache.scala 163:30]
+  reg  respValid; // @[ICache.scala 350:32]
+  wire  tl_in_a_ready = ~(auto_master_out_d_valid | s1_slaveValid | s2_slaveValid | s3_slaveValid | respValid); // @[ICache.scala 351:23]
+  wire  s0_slaveValid = tl_in_a_ready & auto_slave_in_a_valid; // @[Decoupled.scala 50:35]
+  wire  s0_valid = io_req_ready & io_req_valid; // @[Decoupled.scala 50:35]
+  reg  s1_valid; // @[ICache.scala 168:21]
+  reg [255:0] vb_array; // @[ICache.scala 230:21]
+  wire [6:0] s1_idx = io_s1_paddr[12:6]; // @[ICache.scala 485:21]
+  wire [7:0] _s1_vb_T = {1'h0,s1_idx}; // @[Cat.scala 31:58]
+  wire [255:0] _s1_vb_T_1 = vb_array >> _s1_vb_T; // @[ICache.scala 258:25]
+  wire  s1_vb = _s1_vb_T_1[0] & ~s1_slaveValid; // @[ICache.scala 258:48]
+  wire [17:0] tag = tag_array_RW0_rdata_0[17:0]; // @[package.scala 154:13]
+  wire [17:0] s1_tag = io_s1_paddr[30:13]; // @[ICache.scala 253:30]
+  wire  tagMatch = s1_vb & tag == s1_tag; // @[ICache.scala 261:26]
+  reg [13:0] s1s3_slaveAddr; // @[ICache.scala 248:27]
+  wire [7:0] _GEN_77 = {{1'd0}, scratchpadMax}; // @[ICache.scala 151:77]
+  wire  _scratchpadHit_T_3 = scratchpadOn & s1s3_slaveAddr[13:6] <= _GEN_77; // @[ICache.scala 151:69]
+  wire  _scratchpadHit_T_6 = _scratchpadHit_T_3 & ~s1s3_slaveAddr[13]; // @[ICache.scala 256:58]
+  wire  _scratchpadHit_T_11 = io_s1_paddr >= 31'h8000000 & io_s1_paddr < 31'h8004000; // @[ICache.scala 155:83]
+  wire  _scratchpadHit_T_14 = scratchpadOn & io_s1_paddr[13:6] <= _GEN_77; // @[ICache.scala 151:69]
+  wire  _scratchpadHit_T_15 = _scratchpadHit_T_11 & _scratchpadHit_T_14; // @[ICache.scala 156:66]
+  wire  _scratchpadHit_T_18 = _scratchpadHit_T_15 & ~io_s1_paddr[13]; // @[ICache.scala 257:39]
+  wire  scratchpadHit = s1_slaveValid ? _scratchpadHit_T_6 : _scratchpadHit_T_18; // @[ICache.scala 255:10]
+  wire  s1_tag_hit_0 = tagMatch | scratchpadHit; // @[ICache.scala 264:31]
+  wire [7:0] _s1_vb_T_4 = {1'h1,s1_idx}; // @[Cat.scala 31:58]
+  wire [255:0] _s1_vb_T_5 = vb_array >> _s1_vb_T_4; // @[ICache.scala 258:25]
+  wire  s1_vb_1 = _s1_vb_T_5[0] & ~s1_slaveValid; // @[ICache.scala 258:48]
+  wire [17:0] tag_1 = tag_array_RW0_rdata_1[17:0]; // @[package.scala 154:13]
+  wire  tagMatch_1 = s1_vb_1 & tag_1 == s1_tag; // @[ICache.scala 261:26]
+  wire  s1_hit = s1_tag_hit_0 | tagMatch_1 | (s1_slaveValid | _scratchpadHit_T_11); // @[ICache.scala 171:40]
+  reg  s2_valid; // @[ICache.scala 173:25]
+  reg  s2_hit; // @[ICache.scala 174:23]
+  reg  invalidated; // @[ICache.scala 176:24]
+  reg  refill_valid; // @[ICache.scala 177:29]
+  wire  s2_miss = s2_valid & ~s2_hit & ~io_s2_kill; // @[ICache.scala 181:37]
+  reg  s2_request_refill_REG; // @[ICache.scala 183:45]
+  wire  s2_request_refill = s2_miss & s2_request_refill_REG; // @[ICache.scala 183:35]
+  wire  refill_fire = auto_master_out_a_ready & s2_request_refill; // @[Decoupled.scala 50:35]
+  wire  s1_can_request_refill = ~(s2_miss | refill_valid); // @[ICache.scala 182:31]
+  wire  _refill_paddr_T = s1_valid & s1_can_request_refill; // @[ICache.scala 184:54]
+  reg [30:0] refill_paddr; // @[Reg.scala 16:16]
+  wire [17:0] refill_tag = refill_paddr[30:13]; // @[ICache.scala 186:33]
+  wire [6:0] refill_idx = refill_paddr[12:6]; // @[ICache.scala 485:21]
+  wire  tl_out_d_ready = ~s3_slaveValid; // @[ICache.scala 195:21]
+  wire  _refill_one_beat_T = tl_out_d_ready & auto_master_out_d_valid; // @[Decoupled.scala 50:35]
+  wire  refill_one_beat_opdata = auto_master_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  refill_one_beat = _refill_one_beat_T & refill_one_beat_opdata; // @[ICache.scala 188:41]
+  wire [26:0] _beats1_decode_T_1 = 27'hfff << auto_master_out_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _beats1_decode_T_3 = ~_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] beats1_decode = _beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire [9:0] beats1 = refill_one_beat_opdata ? beats1_decode : 10'h0; // @[Edges.scala 220:14]
+  reg [9:0] counter; // @[Edges.scala 228:27]
+  wire [9:0] counter1 = counter - 10'h1; // @[Edges.scala 229:28]
+  wire  first = counter == 10'h0; // @[Edges.scala 230:25]
+  wire  last = counter == 10'h1 | beats1 == 10'h0; // @[Edges.scala 231:37]
+  wire  d_done = last & _refill_one_beat_T; // @[Edges.scala 232:22]
+  wire [9:0] _count_T = ~counter1; // @[Edges.scala 233:27]
+  wire [9:0] refill_cnt = beats1 & _count_T; // @[Edges.scala 233:25]
+  wire  refill_done = refill_one_beat & d_done; // @[ICache.scala 194:37]
+  wire [7:0] repl_way_v0_lo = {repl_way_v0_prng_io_out_7,repl_way_v0_prng_io_out_6,repl_way_v0_prng_io_out_5,
+    repl_way_v0_prng_io_out_4,repl_way_v0_prng_io_out_3,repl_way_v0_prng_io_out_2,repl_way_v0_prng_io_out_1,
+    repl_way_v0_prng_io_out_0}; // @[PRNG.scala 95:17]
+  wire [15:0] _repl_way_v0_T = {repl_way_v0_prng_io_out_15,repl_way_v0_prng_io_out_14,repl_way_v0_prng_io_out_13,
+    repl_way_v0_prng_io_out_12,repl_way_v0_prng_io_out_11,repl_way_v0_prng_io_out_10,repl_way_v0_prng_io_out_9,
+    repl_way_v0_prng_io_out_8,repl_way_v0_lo}; // @[PRNG.scala 95:17]
+  wire  repl_way_v0 = _repl_way_v0_T[0]; // @[ICache.scala 200:35]
+  wire [7:0] _repl_way_T_1 = {repl_way_v0,refill_idx}; // @[Cat.scala 31:58]
+  wire  _repl_way_T_3 = scratchpadOn & _repl_way_T_1 <= _GEN_77; // @[ICache.scala 151:69]
+  wire  repl_way = repl_way_v0 | _repl_way_T_3; // @[ICache.scala 204:13]
+  wire [7:0] _repl_way_T_5 = {repl_way,refill_idx}; // @[Cat.scala 31:58]
+  wire  _repl_way_T_7 = scratchpadOn & _repl_way_T_5 <= _GEN_77; // @[ICache.scala 151:69]
+  wire  _repl_way_T_10 = ~reset; // @[ICache.scala 206:11]
+  wire  _tag_rdata_T_2 = ~refill_done & s0_valid; // @[ICache.scala 217:83]
+  reg  accruedRefillError; // @[ICache.scala 218:31]
+  wire  refillError = auto_master_out_d_bits_corrupt | refill_cnt > 10'h0 & accruedRefillError; // @[ICache.scala 219:43]
+  wire [30:0] _io_errors_bus_bits_T_1 = {refill_paddr[30:6], 6'h0}; // @[ICache.scala 228:57]
+  wire  _vb_array_T_1 = ~invalidated; // @[ICache.scala 234:75]
+  wire [255:0] _vb_array_T_3 = 256'h1 << _repl_way_T_5; // @[ICache.scala 234:32]
+  wire [255:0] _vb_array_T_4 = vb_array | _vb_array_T_3; // @[ICache.scala 234:32]
+  wire [255:0] _vb_array_T_5 = ~vb_array; // @[ICache.scala 234:32]
+  wire [255:0] _vb_array_T_6 = _vb_array_T_5 | _vb_array_T_3; // @[ICache.scala 234:32]
+  wire [255:0] _vb_array_T_7 = ~_vb_array_T_6; // @[ICache.scala 234:32]
+  wire  opdata = ~auto_slave_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire  _T_23 = scratchpadOn & auto_slave_in_a_bits_address[13:6] <= _GEN_77; // @[ICache.scala 151:69]
+  wire  _GEN_58 = ~_T_23 | io_invalidate; // @[ICache.scala 360:65 362:26]
+  wire  _GEN_60 = opdata ? _GEN_58 : io_invalidate; // @[ICache.scala 358:41]
+  wire  invalidate = s0_slaveValid ? _GEN_60 : io_invalidate; // @[ICache.scala 354:30]
+  wire  _GEN_22 = invalidate | invalidated; // @[ICache.scala 237:21 239:17 176:24]
+  reg [31:0] s1s3_slaveData; // @[ICache.scala 249:27]
+  wire  tl_error = tag_array_RW0_rdata_0[18]; // @[package.scala 154:13]
+  wire  s1_tl_error_0 = tagMatch & tl_error; // @[ICache.scala 263:32]
+  wire  tl_error_1 = tag_array_RW0_rdata_1[18]; // @[package.scala 154:13]
+  wire  s1_tl_error_1 = tagMatch_1 & tl_error_1; // @[ICache.scala 263:32]
+  wire  _T_3 = s1_valid | s1_slaveValid; // @[ICache.scala 266:21]
+  wire [1:0] _T_9 = s1_tag_hit_0 + tagMatch_1; // @[Bitwise.scala 48:55]
+  wire  s0_ren = s0_valid | s0_slaveValid; // @[ICache.scala 283:52]
+  wire  wen = refill_one_beat & _vb_array_T_1 | s3_slaveValid; // @[ICache.scala 284:49]
+  wire [10:0] _mem_idx_T = {refill_idx, 4'h0}; // @[ICache.scala 285:52]
+  wire [10:0] _GEN_84 = {{1'd0}, refill_cnt}; // @[ICache.scala 285:79]
+  wire [10:0] _mem_idx_T_1 = _mem_idx_T | _GEN_84; // @[ICache.scala 285:79]
+  wire [10:0] _mem_idx_T_5 = s0_slaveValid ? auto_slave_in_a_bits_address[12:2] : io_req_bits_addr[12:2]; // @[ICache.scala 287:22]
+  wire [10:0] _mem_idx_T_6 = s3_slaveValid ? s1s3_slaveAddr[12:2] : _mem_idx_T_5; // @[ICache.scala 286:22]
+  wire  way = s3_slaveValid ? s1s3_slaveAddr[13] : repl_way; // @[ICache.scala 291:20]
+  wire  _dout_T_1 = ~wen & s0_ren; // @[ICache.scala 294:46]
+  wire [31:0] s1_dout_0 = data_arrays_0_RW0_rdata_0; // @[ICache.scala 295:71 296:15]
+  wire [31:0] s1_dout_1 = data_arrays_0_RW0_rdata_1; // @[ICache.scala 295:71 296:15]
+  reg [2:0] s1_a_opcode; // @[Reg.scala 16:16]
+  wire  s1s2_full_word_write_opdata = ~s1_a_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] s1_a_mask; // @[Reg.scala 16:16]
+  wire  s1s2_full_word_write = s1s2_full_word_write_opdata & &s1_a_mask; // @[ICache.scala 353:59]
+  wire  s1_dont_read = s1_slaveValid & s1s2_full_word_write; // @[ICache.scala 302:36]
+  reg  s2_tag_hit_0; // @[Reg.scala 16:16]
+  reg  s2_tag_hit_1; // @[Reg.scala 16:16]
+  reg [31:0] s2_dout_0; // @[Reg.scala 16:16]
+  reg [31:0] s2_dout_1; // @[Reg.scala 16:16]
+  wire [31:0] _s2_way_mux_T = s2_tag_hit_0 ? s2_dout_0 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _s2_way_mux_T_1 = s2_tag_hit_1 ? s2_dout_1 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] s2_way_mux = _s2_way_mux_T | _s2_way_mux_T_1; // @[Mux.scala 27:73]
+  wire [1:0] _s2_tl_error_T = {s1_tl_error_1,s1_tl_error_0}; // @[ICache.scala 312:43]
+  wire  _s2_tl_error_T_1 = |_s2_tl_error_T; // @[ICache.scala 312:50]
+  reg  s2_tl_error; // @[Reg.scala 16:16]
+  reg [1:0] s1_a_size; // @[Reg.scala 16:16]
+  reg [7:0] s1_a_source; // @[Reg.scala 16:16]
+  wire  enable = auto_slave_in_a_bits_address[13] < 1'h1; // @[ICache.scala 158:43]
+  wire [7:0] _GEN_57 = ~_T_23 ? auto_slave_in_a_bits_address[13:6] : {{1'd0}, scratchpadMax}; // @[ICache.scala 360:65 361:33 150:42]
+  wire [7:0] _GEN_59 = opdata ? _GEN_57 : {{1'd0}, scratchpadMax}; // @[ICache.scala 358:41 150:42]
+  wire [27:0] _GEN_62 = s0_slaveValid ? auto_slave_in_a_bits_address : {{14'd0}, s1s3_slaveAddr}; // @[ICache.scala 354:30 356:26 248:27]
+  wire [7:0] _GEN_64 = s0_slaveValid ? _GEN_59 : {{1'd0}, scratchpadMax}; // @[ICache.scala 354:30 150:42]
+  reg [31:0] REG; // @[ICache.scala 379:44]
+  reg [31:0] REG_1; // @[ICache.scala 379:36]
+  wire  _s1s3_slaveData_T_2 = ~(s1s2_full_word_write_opdata & s1_a_mask[0]); // @[ICache.scala 395:32]
+  wire [31:0] _s1s3_slaveData_T_3 = _s1s3_slaveData_T_2 ? s2_way_mux : s1s3_slaveData; // @[ICache.scala 396:62]
+  wire  _s1s3_slaveData_T_7 = ~(s1s2_full_word_write_opdata & s1_a_mask[1]); // @[ICache.scala 395:32]
+  wire [31:0] _s1s3_slaveData_T_8 = _s1s3_slaveData_T_7 ? s2_way_mux : s1s3_slaveData; // @[ICache.scala 396:62]
+  wire  _s1s3_slaveData_T_12 = ~(s1s2_full_word_write_opdata & s1_a_mask[2]); // @[ICache.scala 395:32]
+  wire [31:0] _s1s3_slaveData_T_13 = _s1s3_slaveData_T_12 ? s2_way_mux : s1s3_slaveData; // @[ICache.scala 396:62]
+  wire  _s1s3_slaveData_T_17 = ~(s1s2_full_word_write_opdata & s1_a_mask[3]); // @[ICache.scala 395:32]
+  wire [31:0] _s1s3_slaveData_T_18 = _s1s3_slaveData_T_17 ? s2_way_mux : s1s3_slaveData; // @[ICache.scala 396:62]
+  wire [31:0] _s1s3_slaveData_T_20 = {_s1s3_slaveData_T_18[31:24],_s1s3_slaveData_T_13[23:16],_s1s3_slaveData_T_8[15:8],
+    _s1s3_slaveData_T_3[7:0]}; // @[Cat.scala 31:58]
+  wire  _T_55 = _io_errors_bus_bits_T_1 >= 31'h8000000 & _io_errors_bus_bits_T_1 < 31'h8004000; // @[ICache.scala 155:83]
+  wire  _GEN_75 = refill_fire | refill_valid; // @[ICache.scala 476:22 177:29 476:37]
+  MaxPeriodFibonacciLFSR repl_way_v0_prng ( // @[PRNG.scala 91:22]
+    .clock(repl_way_v0_prng_clock),
+    .reset(repl_way_v0_prng_reset),
+    .io_increment(repl_way_v0_prng_io_increment),
+    .io_out_0(repl_way_v0_prng_io_out_0),
+    .io_out_1(repl_way_v0_prng_io_out_1),
+    .io_out_2(repl_way_v0_prng_io_out_2),
+    .io_out_3(repl_way_v0_prng_io_out_3),
+    .io_out_4(repl_way_v0_prng_io_out_4),
+    .io_out_5(repl_way_v0_prng_io_out_5),
+    .io_out_6(repl_way_v0_prng_io_out_6),
+    .io_out_7(repl_way_v0_prng_io_out_7),
+    .io_out_8(repl_way_v0_prng_io_out_8),
+    .io_out_9(repl_way_v0_prng_io_out_9),
+    .io_out_10(repl_way_v0_prng_io_out_10),
+    .io_out_11(repl_way_v0_prng_io_out_11),
+    .io_out_12(repl_way_v0_prng_io_out_12),
+    .io_out_13(repl_way_v0_prng_io_out_13),
+    .io_out_14(repl_way_v0_prng_io_out_14),
+    .io_out_15(repl_way_v0_prng_io_out_15)
+  );
+  tag_array_0 tag_array ( // @[DescribedSRAM.scala 19:26]
+    .RW0_addr(tag_array_RW0_addr),
+    .RW0_en(tag_array_RW0_en),
+    .RW0_clk(tag_array_RW0_clk),
+    .RW0_wmode(tag_array_RW0_wmode),
+    .RW0_wdata_0(tag_array_RW0_wdata_0),
+    .RW0_wdata_1(tag_array_RW0_wdata_1),
+    .RW0_rdata_0(tag_array_RW0_rdata_0),
+    .RW0_rdata_1(tag_array_RW0_rdata_1),
+    .RW0_wmask_0(tag_array_RW0_wmask_0),
+    .RW0_wmask_1(tag_array_RW0_wmask_1), // <no_sram>
+    .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+    .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+    .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+    .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+    .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+    .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+    .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask) // <no_sram>
+  );
+  data_arrays_0_0 data_arrays_0 ( // @[DescribedSRAM.scala 19:26]
+    .RW0_addr(data_arrays_0_RW0_addr),
+    .RW0_en(data_arrays_0_RW0_en),
+    .RW0_clk(data_arrays_0_RW0_clk),
+    .RW0_wmode(data_arrays_0_RW0_wmode),
+    .RW0_wdata_0(data_arrays_0_RW0_wdata_0),
+    .RW0_wdata_1(data_arrays_0_RW0_wdata_1),
+    .RW0_rdata_0(data_arrays_0_RW0_rdata_0),
+    .RW0_rdata_1(data_arrays_0_RW0_rdata_1),
+    .RW0_wmask_0(data_arrays_0_RW0_wmask_0),
+    .RW0_wmask_1(data_arrays_0_RW0_wmask_1), // <no_sram>
+    .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+  );
+  assign auto_slave_in_a_ready = ~(auto_master_out_d_valid | s1_slaveValid | s2_slaveValid | s3_slaveValid | respValid); // @[ICache.scala 351:23]
+  assign auto_slave_in_d_valid = respValid; // @[Nodes.scala 1210:84 ICache.scala 399:20]
+  assign auto_slave_in_d_bits_opcode = s1s2_full_word_write_opdata ? 3'h0 : 3'h1; // @[ICache.scala 400:25]
+  assign auto_slave_in_d_bits_size = s1_a_size; // @[ICache.scala 400:25]
+  assign auto_slave_in_d_bits_source = s1_a_source; // @[ICache.scala 400:25]
+  assign auto_slave_in_d_bits_data = s1s3_slaveData; // @[Nodes.scala 1210:84 ICache.scala 403:24]
+  assign auto_master_out_a_valid = s2_miss & s2_request_refill_REG; // @[ICache.scala 183:35]
+  assign auto_master_out_a_bits_address = {refill_paddr[30:6], 6'h0}; // @[ICache.scala 420:64]
+  assign auto_master_out_d_ready = ~s3_slaveValid; // @[ICache.scala 195:21]
+  assign io_req_ready = ~(refill_one_beat | s0_slaveValid | s3_slaveValid); // @[ICache.scala 190:19]
+  assign io_resp_valid = s2_valid & s2_hit; // @[ICache.scala 338:33]
+  assign io_resp_bits_data = _s2_way_mux_T | _s2_way_mux_T_1; // @[Mux.scala 27:73]
+  assign io_resp_bits_ae = s2_tl_error; // @[ICache.scala 336:23]
+  assign repl_way_v0_prng_clock = clock;
+  assign repl_way_v0_prng_reset = reset;
+  assign repl_way_v0_prng_io_increment = auto_master_out_a_ready & s2_request_refill; // @[Decoupled.scala 50:35]
+  assign tag_array_RW0_clk = clock; // @[ICache.scala 220:22]
+  assign tag_array_RW0_wdata_0 = {refillError,refill_tag}; // @[Cat.scala 31:58]
+  assign tag_array_RW0_wdata_1 = {refillError,refill_tag}; // @[Cat.scala 31:58]
+  assign tag_array_RW0_wmask_0 = ~repl_way; // @[ICache.scala 223:88]
+  assign tag_array_RW0_wmask_1 = repl_way_v0 | _repl_way_T_3; // @[ICache.scala 204:13]
+  assign data_arrays_0_RW0_clk = clock; // @[ICache.scala 289:16]
+  assign data_arrays_0_RW0_wdata_0 = s3_slaveValid ? s1s3_slaveData : auto_master_out_d_bits_data; // @[ICache.scala 290:21]
+  assign data_arrays_0_RW0_wdata_1 = s3_slaveValid ? s1s3_slaveData : auto_master_out_d_bits_data; // @[ICache.scala 290:21]
+  assign data_arrays_0_RW0_wmask_0 = ~way; // @[ICache.scala 292:93]
+  assign data_arrays_0_RW0_wmask_1 = s3_slaveValid ? s1s3_slaveAddr[13] : repl_way; // @[ICache.scala 291:20]
+  assign tag_array_RW0_en = _tag_rdata_T_2 | refill_done;
+  assign tag_array_RW0_wmode = refill_one_beat & d_done; // @[ICache.scala 194:37]
+  assign tag_array_RW0_addr = refill_done ? refill_idx : io_req_bits_addr[12:6];
+  assign data_arrays_0_RW0_en = _dout_T_1 | wen;
+  assign data_arrays_0_RW0_wmode = refill_one_beat & _vb_array_T_1 | s3_slaveValid; // @[ICache.scala 284:49]
+  assign data_arrays_0_RW0_addr = refill_one_beat ? _mem_idx_T_1 : _mem_idx_T_6; // @[ICache.scala 285:22]
+  always @(posedge clock) begin
+    if (reset) begin // @[ICache.scala 149:29]
+      scratchpadOn <= 1'h0; // @[ICache.scala 149:29]
+    end else if (s0_slaveValid) begin // @[ICache.scala 354:30]
+      if (opdata) begin // @[ICache.scala 358:41]
+        scratchpadOn <= enable; // @[ICache.scala 364:26]
+      end
+    end
+    scratchpadMax <= _GEN_64[6:0];
+    if (reset) begin // @[ICache.scala 161:30]
+      s1_slaveValid <= 1'h0; // @[ICache.scala 161:30]
+    end else begin
+      s1_slaveValid <= s0_slaveValid; // @[ICache.scala 161:30]
+    end
+    if (reset) begin // @[ICache.scala 162:30]
+      s2_slaveValid <= 1'h0; // @[ICache.scala 162:30]
+    end else begin
+      s2_slaveValid <= s1_slaveValid; // @[ICache.scala 162:30]
+    end
+    s3_slaveValid <= s2_slaveValid & s1s2_full_word_write_opdata; // @[ICache.scala 393:30]
+    if (reset) begin // @[ICache.scala 350:32]
+      respValid <= 1'h0; // @[ICache.scala 350:32]
+    end else begin
+      respValid <= s2_slaveValid | respValid & ~auto_slave_in_d_ready; // @[ICache.scala 391:19]
+    end
+    if (reset) begin // @[ICache.scala 168:21]
+      s1_valid <= 1'h0; // @[ICache.scala 168:21]
+    end else begin
+      s1_valid <= s0_valid; // @[ICache.scala 191:12]
+    end
+    if (reset) begin // @[ICache.scala 230:21]
+      vb_array <= 256'h0; // @[ICache.scala 230:21]
+    end else if (invalidate) begin // @[ICache.scala 237:21]
+      vb_array <= 256'h0; // @[ICache.scala 238:14]
+    end else if (refill_one_beat) begin // @[ICache.scala 231:26]
+      if (refill_done & ~invalidated) begin // @[ICache.scala 234:32]
+        vb_array <= _vb_array_T_4;
+      end else begin
+        vb_array <= _vb_array_T_7;
+      end
+    end
+    s1s3_slaveAddr <= _GEN_62[13:0];
+    if (reset) begin // @[ICache.scala 173:25]
+      s2_valid <= 1'h0; // @[ICache.scala 173:25]
+    end else begin
+      s2_valid <= s1_valid & ~io_s1_kill; // @[ICache.scala 173:25]
+    end
+    s2_hit <= s1_hit; // @[ICache.scala 174:23]
+    if (~refill_valid) begin // @[ICache.scala 475:24]
+      invalidated <= 1'h0; // @[ICache.scala 475:38]
+    end else begin
+      invalidated <= _GEN_22;
+    end
+    if (reset) begin // @[ICache.scala 177:29]
+      refill_valid <= 1'h0; // @[ICache.scala 177:29]
+    end else if (refill_done) begin // @[ICache.scala 477:22]
+      refill_valid <= 1'h0; // @[ICache.scala 477:37]
+    end else begin
+      refill_valid <= _GEN_75;
+    end
+    s2_request_refill_REG <= ~(s2_miss | refill_valid); // @[ICache.scala 182:31]
+    if (_refill_paddr_T) begin // @[Reg.scala 17:18]
+      refill_paddr <= io_s1_paddr; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_refill_one_beat_T) begin // @[Edges.scala 234:17]
+      if (first) begin // @[Edges.scala 235:21]
+        if (refill_one_beat_opdata) begin // @[Edges.scala 220:14]
+          counter <= beats1_decode;
+        end else begin
+          counter <= 10'h0;
+        end
+      end else begin
+        counter <= counter1;
+      end
+    end
+    if (refill_one_beat) begin // @[ICache.scala 231:26]
+      accruedRefillError <= refillError; // @[ICache.scala 232:24]
+    end
+    if (s2_slaveValid) begin // @[ICache.scala 393:30]
+      s1s3_slaveData <= _s1s3_slaveData_T_20; // @[ICache.scala 396:26]
+    end else if (s0_slaveValid) begin // @[ICache.scala 354:30]
+      s1s3_slaveData <= auto_slave_in_a_bits_data; // @[ICache.scala 357:26]
+    end
+    if (s0_slaveValid) begin // @[Reg.scala 17:18]
+      s1_a_opcode <= auto_slave_in_a_bits_opcode; // @[Reg.scala 17:22]
+    end
+    if (s0_slaveValid) begin // @[Reg.scala 17:18]
+      s1_a_mask <= auto_slave_in_a_bits_mask; // @[Reg.scala 17:22]
+    end
+    if (_T_3) begin // @[Reg.scala 17:18]
+      if (s1_dont_read) begin // @[ICache.scala 305:33]
+        s2_tag_hit_0 <= 1'h0;
+      end else begin
+        s2_tag_hit_0 <= s1_tag_hit_0;
+      end
+    end
+    if (_T_3) begin // @[Reg.scala 17:18]
+      if (s1_dont_read) begin // @[ICache.scala 305:33]
+        s2_tag_hit_1 <= 1'h0;
+      end else begin
+        s2_tag_hit_1 <= tagMatch_1;
+      end
+    end
+    if (_T_3) begin // @[Reg.scala 17:18]
+      s2_dout_0 <= s1_dout_0; // @[Reg.scala 17:22]
+    end
+    if (_T_3) begin // @[Reg.scala 17:18]
+      s2_dout_1 <= s1_dout_1; // @[Reg.scala 17:22]
+    end
+    if (_T_3) begin // @[Reg.scala 17:18]
+      s2_tl_error <= _s2_tl_error_T_1; // @[Reg.scala 17:22]
+    end
+    if (s0_slaveValid) begin // @[Reg.scala 17:18]
+      s1_a_size <= auto_slave_in_a_bits_size; // @[Reg.scala 17:22]
+    end
+    if (s0_slaveValid) begin // @[Reg.scala 17:18]
+      s1_a_source <= auto_slave_in_a_bits_source; // @[Reg.scala 17:22]
+    end
+    REG <= io_req_bits_addr; // @[ICache.scala 379:44]
+    REG_1 <= REG; // @[ICache.scala 379:36]
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~_repl_way_T_7) & ~reset) begin
+          $fatal; // @[ICache.scala 206:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~_repl_way_T_7)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at ICache.scala:206 assert(!lineInScratchpad(Cat(v, refill_idx)))\n"); // @[ICache.scala 206:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(s1_valid | s1_slaveValid) | _T_9 <= 2'h1) & _repl_way_T_10) begin
+          $fatal; // @[ICache.scala 266:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_repl_way_T_10 & ~(~(s1_valid | s1_slaveValid) | _T_9 <= 2'h1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at ICache.scala:266 assert(!(s1_valid || s1_slaveValid) || PopCount(s1_tag_hit zip s1_tag_disparity map { case (h, d) => h && !d }) <= 1)\n"
+            ); // @[ICache.scala 266:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~s2_valid | REG_1 == io_s2_vaddr) & _repl_way_T_10) begin
+          $fatal; // @[ICache.scala 379:15]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_repl_way_T_10 & ~(~s2_valid | REG_1 == io_s2_vaddr)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at ICache.scala:379 assert(!s2_valid || RegNext(RegNext(s0_vaddr)) === io.s2_vaddr)\n"
+            ); // @[ICache.scala 379:15]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(s2_request_refill & _T_55)) & _repl_way_T_10) begin
+          $fatal; // @[ICache.scala 473:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_repl_way_T_10 & ~(~(s2_request_refill & _T_55))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at ICache.scala:473 assert(!(tl_out.a.valid && addrMaybeInScratchpad(tl_out.a.bits.address)))\n"
+            ); // @[ICache.scala 473:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  scratchpadOn = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  scratchpadMax = _RAND_1[6:0];
+  _RAND_2 = {1{`RANDOM}};
+  s1_slaveValid = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  s2_slaveValid = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  s3_slaveValid = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  respValid = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  s1_valid = _RAND_6[0:0];
+  _RAND_7 = {8{`RANDOM}};
+  vb_array = _RAND_7[255:0];
+  _RAND_8 = {1{`RANDOM}};
+  s1s3_slaveAddr = _RAND_8[13:0];
+  _RAND_9 = {1{`RANDOM}};
+  s2_valid = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  s2_hit = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  invalidated = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  refill_valid = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  s2_request_refill_REG = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  refill_paddr = _RAND_14[30:0];
+  _RAND_15 = {1{`RANDOM}};
+  counter = _RAND_15[9:0];
+  _RAND_16 = {1{`RANDOM}};
+  accruedRefillError = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  s1s3_slaveData = _RAND_17[31:0];
+  _RAND_18 = {1{`RANDOM}};
+  s1_a_opcode = _RAND_18[2:0];
+  _RAND_19 = {1{`RANDOM}};
+  s1_a_mask = _RAND_19[3:0];
+  _RAND_20 = {1{`RANDOM}};
+  s2_tag_hit_0 = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  s2_tag_hit_1 = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  s2_dout_0 = _RAND_22[31:0];
+  _RAND_23 = {1{`RANDOM}};
+  s2_dout_1 = _RAND_23[31:0];
+  _RAND_24 = {1{`RANDOM}};
+  s2_tl_error = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  s1_a_size = _RAND_25[1:0];
+  _RAND_26 = {1{`RANDOM}};
+  s1_a_source = _RAND_26[7:0];
+  _RAND_27 = {1{`RANDOM}};
+  REG = _RAND_27[31:0];
+  _RAND_28 = {1{`RANDOM}};
+  REG_1 = _RAND_28[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ShiftQueue(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input         io_enq_bits_btb_taken,
+  input         io_enq_bits_btb_bridx,
+  input  [4:0]  io_enq_bits_btb_entry,
+  input  [7:0]  io_enq_bits_btb_bht_history,
+  input  [31:0] io_enq_bits_pc,
+  input  [31:0] io_enq_bits_data,
+  input  [1:0]  io_enq_bits_mask,
+  input         io_enq_bits_xcpt_ae_inst,
+  input         io_enq_bits_replay,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output        io_deq_bits_btb_taken,
+  output        io_deq_bits_btb_bridx,
+  output [4:0]  io_deq_bits_btb_entry,
+  output [7:0]  io_deq_bits_btb_bht_history,
+  output [31:0] io_deq_bits_pc,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_xcpt_ae_inst,
+  output        io_deq_bits_replay,
+  output [4:0]  io_mask
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+`endif // RANDOMIZE_REG_INIT
+  reg  valid_0; // @[ShiftQueue.scala 21:30]
+  reg  valid_1; // @[ShiftQueue.scala 21:30]
+  reg  valid_2; // @[ShiftQueue.scala 21:30]
+  reg  valid_3; // @[ShiftQueue.scala 21:30]
+  reg  valid_4; // @[ShiftQueue.scala 21:30]
+  reg  elts_0_btb_taken; // @[ShiftQueue.scala 22:25]
+  reg  elts_0_btb_bridx; // @[ShiftQueue.scala 22:25]
+  reg [4:0] elts_0_btb_entry; // @[ShiftQueue.scala 22:25]
+  reg [7:0] elts_0_btb_bht_history; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_0_pc; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_0_data; // @[ShiftQueue.scala 22:25]
+  reg  elts_0_xcpt_ae_inst; // @[ShiftQueue.scala 22:25]
+  reg  elts_0_replay; // @[ShiftQueue.scala 22:25]
+  reg  elts_1_btb_taken; // @[ShiftQueue.scala 22:25]
+  reg  elts_1_btb_bridx; // @[ShiftQueue.scala 22:25]
+  reg [4:0] elts_1_btb_entry; // @[ShiftQueue.scala 22:25]
+  reg [7:0] elts_1_btb_bht_history; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_1_pc; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_1_data; // @[ShiftQueue.scala 22:25]
+  reg  elts_1_xcpt_ae_inst; // @[ShiftQueue.scala 22:25]
+  reg  elts_1_replay; // @[ShiftQueue.scala 22:25]
+  reg  elts_2_btb_taken; // @[ShiftQueue.scala 22:25]
+  reg  elts_2_btb_bridx; // @[ShiftQueue.scala 22:25]
+  reg [4:0] elts_2_btb_entry; // @[ShiftQueue.scala 22:25]
+  reg [7:0] elts_2_btb_bht_history; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_2_pc; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_2_data; // @[ShiftQueue.scala 22:25]
+  reg  elts_2_xcpt_ae_inst; // @[ShiftQueue.scala 22:25]
+  reg  elts_2_replay; // @[ShiftQueue.scala 22:25]
+  reg  elts_3_btb_taken; // @[ShiftQueue.scala 22:25]
+  reg  elts_3_btb_bridx; // @[ShiftQueue.scala 22:25]
+  reg [4:0] elts_3_btb_entry; // @[ShiftQueue.scala 22:25]
+  reg [7:0] elts_3_btb_bht_history; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_3_pc; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_3_data; // @[ShiftQueue.scala 22:25]
+  reg  elts_3_xcpt_ae_inst; // @[ShiftQueue.scala 22:25]
+  reg  elts_3_replay; // @[ShiftQueue.scala 22:25]
+  reg  elts_4_btb_taken; // @[ShiftQueue.scala 22:25]
+  reg  elts_4_btb_bridx; // @[ShiftQueue.scala 22:25]
+  reg [4:0] elts_4_btb_entry; // @[ShiftQueue.scala 22:25]
+  reg [7:0] elts_4_btb_bht_history; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_4_pc; // @[ShiftQueue.scala 22:25]
+  reg [31:0] elts_4_data; // @[ShiftQueue.scala 22:25]
+  reg  elts_4_xcpt_ae_inst; // @[ShiftQueue.scala 22:25]
+  reg  elts_4_replay; // @[ShiftQueue.scala 22:25]
+  wire  _wen_T = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  _wen_T_2 = _wen_T & valid_0; // @[ShiftQueue.scala 30:45]
+  wire  _wen_T_3 = valid_1 | _wen_T & valid_0; // @[ShiftQueue.scala 30:28]
+  wire  _wen_T_6 = ~valid_0; // @[ShiftQueue.scala 31:48]
+  wire  _wen_T_7 = _wen_T & ~valid_0; // @[ShiftQueue.scala 31:45]
+  wire  wen = io_deq_ready ? _wen_T_3 : _wen_T_7; // @[ShiftQueue.scala 29:10]
+  wire  _valid_0_T_6 = _wen_T | valid_0; // @[ShiftQueue.scala 37:45]
+  wire  _wen_T_10 = _wen_T & valid_1; // @[ShiftQueue.scala 30:45]
+  wire  _wen_T_11 = valid_2 | _wen_T & valid_1; // @[ShiftQueue.scala 30:28]
+  wire  _wen_T_15 = _wen_T_2 & ~valid_1; // @[ShiftQueue.scala 31:45]
+  wire  wen_1 = io_deq_ready ? _wen_T_11 : _wen_T_15; // @[ShiftQueue.scala 29:10]
+  wire  _valid_1_T_6 = _wen_T_2 | valid_1; // @[ShiftQueue.scala 37:45]
+  wire  _wen_T_18 = _wen_T & valid_2; // @[ShiftQueue.scala 30:45]
+  wire  _wen_T_19 = valid_3 | _wen_T & valid_2; // @[ShiftQueue.scala 30:28]
+  wire  _wen_T_23 = _wen_T_10 & ~valid_2; // @[ShiftQueue.scala 31:45]
+  wire  wen_2 = io_deq_ready ? _wen_T_19 : _wen_T_23; // @[ShiftQueue.scala 29:10]
+  wire  _valid_2_T_6 = _wen_T_10 | valid_2; // @[ShiftQueue.scala 37:45]
+  wire  _wen_T_26 = _wen_T & valid_3; // @[ShiftQueue.scala 30:45]
+  wire  _wen_T_27 = valid_4 | _wen_T & valid_3; // @[ShiftQueue.scala 30:28]
+  wire  _wen_T_31 = _wen_T_18 & ~valid_3; // @[ShiftQueue.scala 31:45]
+  wire  wen_3 = io_deq_ready ? _wen_T_27 : _wen_T_31; // @[ShiftQueue.scala 29:10]
+  wire  _valid_3_T_6 = _wen_T_18 | valid_3; // @[ShiftQueue.scala 37:45]
+  wire  _wen_T_34 = _wen_T & valid_4; // @[ShiftQueue.scala 30:45]
+  wire  _wen_T_39 = _wen_T_26 & ~valid_4; // @[ShiftQueue.scala 31:45]
+  wire  wen_4 = io_deq_ready ? _wen_T_34 : _wen_T_39; // @[ShiftQueue.scala 29:10]
+  wire  _valid_4_T_6 = _wen_T_26 | valid_4; // @[ShiftQueue.scala 37:45]
+  wire [1:0] io_mask_lo = {valid_1,valid_0}; // @[ShiftQueue.scala 53:20]
+  wire [2:0] io_mask_hi = {valid_4,valid_3,valid_2}; // @[ShiftQueue.scala 53:20]
+  assign io_enq_ready = ~valid_4; // @[ShiftQueue.scala 40:19]
+  assign io_deq_valid = io_enq_valid | valid_0; // @[ShiftQueue.scala 41:16 45:{25,40}]
+  assign io_deq_bits_btb_taken = _wen_T_6 ? io_enq_bits_btb_taken : elts_0_btb_taken; // @[ShiftQueue.scala 42:15 46:{22,36}]
+  assign io_deq_bits_btb_bridx = _wen_T_6 ? io_enq_bits_btb_bridx : elts_0_btb_bridx; // @[ShiftQueue.scala 42:15 46:{22,36}]
+  assign io_deq_bits_btb_entry = _wen_T_6 ? io_enq_bits_btb_entry : elts_0_btb_entry; // @[ShiftQueue.scala 42:15 46:{22,36}]
+  assign io_deq_bits_btb_bht_history = _wen_T_6 ? io_enq_bits_btb_bht_history : elts_0_btb_bht_history; // @[ShiftQueue.scala 42:15 46:{22,36}]
+  assign io_deq_bits_pc = _wen_T_6 ? io_enq_bits_pc : elts_0_pc; // @[ShiftQueue.scala 42:15 46:{22,36}]
+  assign io_deq_bits_data = _wen_T_6 ? io_enq_bits_data : elts_0_data; // @[ShiftQueue.scala 42:15 46:{22,36}]
+  assign io_deq_bits_xcpt_ae_inst = _wen_T_6 ? io_enq_bits_xcpt_ae_inst : elts_0_xcpt_ae_inst; // @[ShiftQueue.scala 42:15 46:{22,36}]
+  assign io_deq_bits_replay = _wen_T_6 ? io_enq_bits_replay : elts_0_replay; // @[ShiftQueue.scala 42:15 46:{22,36}]
+  assign io_mask = {io_mask_hi,io_mask_lo}; // @[ShiftQueue.scala 53:20]
+  always @(posedge clock) begin
+    if (reset) begin // @[ShiftQueue.scala 21:30]
+      valid_0 <= 1'h0; // @[ShiftQueue.scala 21:30]
+    end else if (io_deq_ready) begin // @[ShiftQueue.scala 35:10]
+      valid_0 <= _wen_T_3;
+    end else begin
+      valid_0 <= _valid_0_T_6;
+    end
+    if (reset) begin // @[ShiftQueue.scala 21:30]
+      valid_1 <= 1'h0; // @[ShiftQueue.scala 21:30]
+    end else if (io_deq_ready) begin // @[ShiftQueue.scala 35:10]
+      valid_1 <= _wen_T_11;
+    end else begin
+      valid_1 <= _valid_1_T_6;
+    end
+    if (reset) begin // @[ShiftQueue.scala 21:30]
+      valid_2 <= 1'h0; // @[ShiftQueue.scala 21:30]
+    end else if (io_deq_ready) begin // @[ShiftQueue.scala 35:10]
+      valid_2 <= _wen_T_19;
+    end else begin
+      valid_2 <= _valid_2_T_6;
+    end
+    if (reset) begin // @[ShiftQueue.scala 21:30]
+      valid_3 <= 1'h0; // @[ShiftQueue.scala 21:30]
+    end else if (io_deq_ready) begin // @[ShiftQueue.scala 35:10]
+      valid_3 <= _wen_T_27;
+    end else begin
+      valid_3 <= _valid_3_T_6;
+    end
+    if (reset) begin // @[ShiftQueue.scala 21:30]
+      valid_4 <= 1'h0; // @[ShiftQueue.scala 21:30]
+    end else if (io_deq_ready) begin // @[ShiftQueue.scala 35:10]
+      valid_4 <= _wen_T_34;
+    end else begin
+      valid_4 <= _valid_4_T_6;
+    end
+    if (wen) begin // @[ShiftQueue.scala 32:16]
+      if (valid_1) begin // @[ShiftQueue.scala 27:57]
+        elts_0_btb_taken <= elts_1_btb_taken;
+      end else begin
+        elts_0_btb_taken <= io_enq_bits_btb_taken;
+      end
+    end
+    if (wen) begin // @[ShiftQueue.scala 32:16]
+      if (valid_1) begin // @[ShiftQueue.scala 27:57]
+        elts_0_btb_bridx <= elts_1_btb_bridx;
+      end else begin
+        elts_0_btb_bridx <= io_enq_bits_btb_bridx;
+      end
+    end
+    if (wen) begin // @[ShiftQueue.scala 32:16]
+      if (valid_1) begin // @[ShiftQueue.scala 27:57]
+        elts_0_btb_entry <= elts_1_btb_entry;
+      end else begin
+        elts_0_btb_entry <= io_enq_bits_btb_entry;
+      end
+    end
+    if (wen) begin // @[ShiftQueue.scala 32:16]
+      if (valid_1) begin // @[ShiftQueue.scala 27:57]
+        elts_0_btb_bht_history <= elts_1_btb_bht_history;
+      end else begin
+        elts_0_btb_bht_history <= io_enq_bits_btb_bht_history;
+      end
+    end
+    if (wen) begin // @[ShiftQueue.scala 32:16]
+      if (valid_1) begin // @[ShiftQueue.scala 27:57]
+        elts_0_pc <= elts_1_pc;
+      end else begin
+        elts_0_pc <= io_enq_bits_pc;
+      end
+    end
+    if (wen) begin // @[ShiftQueue.scala 32:16]
+      if (valid_1) begin // @[ShiftQueue.scala 27:57]
+        elts_0_data <= elts_1_data;
+      end else begin
+        elts_0_data <= io_enq_bits_data;
+      end
+    end
+    if (wen) begin // @[ShiftQueue.scala 32:16]
+      if (valid_1) begin // @[ShiftQueue.scala 27:57]
+        elts_0_xcpt_ae_inst <= elts_1_xcpt_ae_inst;
+      end else begin
+        elts_0_xcpt_ae_inst <= io_enq_bits_xcpt_ae_inst;
+      end
+    end
+    if (wen) begin // @[ShiftQueue.scala 32:16]
+      if (valid_1) begin // @[ShiftQueue.scala 27:57]
+        elts_0_replay <= elts_1_replay;
+      end else begin
+        elts_0_replay <= io_enq_bits_replay;
+      end
+    end
+    if (wen_1) begin // @[ShiftQueue.scala 32:16]
+      if (valid_2) begin // @[ShiftQueue.scala 27:57]
+        elts_1_btb_taken <= elts_2_btb_taken;
+      end else begin
+        elts_1_btb_taken <= io_enq_bits_btb_taken;
+      end
+    end
+    if (wen_1) begin // @[ShiftQueue.scala 32:16]
+      if (valid_2) begin // @[ShiftQueue.scala 27:57]
+        elts_1_btb_bridx <= elts_2_btb_bridx;
+      end else begin
+        elts_1_btb_bridx <= io_enq_bits_btb_bridx;
+      end
+    end
+    if (wen_1) begin // @[ShiftQueue.scala 32:16]
+      if (valid_2) begin // @[ShiftQueue.scala 27:57]
+        elts_1_btb_entry <= elts_2_btb_entry;
+      end else begin
+        elts_1_btb_entry <= io_enq_bits_btb_entry;
+      end
+    end
+    if (wen_1) begin // @[ShiftQueue.scala 32:16]
+      if (valid_2) begin // @[ShiftQueue.scala 27:57]
+        elts_1_btb_bht_history <= elts_2_btb_bht_history;
+      end else begin
+        elts_1_btb_bht_history <= io_enq_bits_btb_bht_history;
+      end
+    end
+    if (wen_1) begin // @[ShiftQueue.scala 32:16]
+      if (valid_2) begin // @[ShiftQueue.scala 27:57]
+        elts_1_pc <= elts_2_pc;
+      end else begin
+        elts_1_pc <= io_enq_bits_pc;
+      end
+    end
+    if (wen_1) begin // @[ShiftQueue.scala 32:16]
+      if (valid_2) begin // @[ShiftQueue.scala 27:57]
+        elts_1_data <= elts_2_data;
+      end else begin
+        elts_1_data <= io_enq_bits_data;
+      end
+    end
+    if (wen_1) begin // @[ShiftQueue.scala 32:16]
+      if (valid_2) begin // @[ShiftQueue.scala 27:57]
+        elts_1_xcpt_ae_inst <= elts_2_xcpt_ae_inst;
+      end else begin
+        elts_1_xcpt_ae_inst <= io_enq_bits_xcpt_ae_inst;
+      end
+    end
+    if (wen_1) begin // @[ShiftQueue.scala 32:16]
+      if (valid_2) begin // @[ShiftQueue.scala 27:57]
+        elts_1_replay <= elts_2_replay;
+      end else begin
+        elts_1_replay <= io_enq_bits_replay;
+      end
+    end
+    if (wen_2) begin // @[ShiftQueue.scala 32:16]
+      if (valid_3) begin // @[ShiftQueue.scala 27:57]
+        elts_2_btb_taken <= elts_3_btb_taken;
+      end else begin
+        elts_2_btb_taken <= io_enq_bits_btb_taken;
+      end
+    end
+    if (wen_2) begin // @[ShiftQueue.scala 32:16]
+      if (valid_3) begin // @[ShiftQueue.scala 27:57]
+        elts_2_btb_bridx <= elts_3_btb_bridx;
+      end else begin
+        elts_2_btb_bridx <= io_enq_bits_btb_bridx;
+      end
+    end
+    if (wen_2) begin // @[ShiftQueue.scala 32:16]
+      if (valid_3) begin // @[ShiftQueue.scala 27:57]
+        elts_2_btb_entry <= elts_3_btb_entry;
+      end else begin
+        elts_2_btb_entry <= io_enq_bits_btb_entry;
+      end
+    end
+    if (wen_2) begin // @[ShiftQueue.scala 32:16]
+      if (valid_3) begin // @[ShiftQueue.scala 27:57]
+        elts_2_btb_bht_history <= elts_3_btb_bht_history;
+      end else begin
+        elts_2_btb_bht_history <= io_enq_bits_btb_bht_history;
+      end
+    end
+    if (wen_2) begin // @[ShiftQueue.scala 32:16]
+      if (valid_3) begin // @[ShiftQueue.scala 27:57]
+        elts_2_pc <= elts_3_pc;
+      end else begin
+        elts_2_pc <= io_enq_bits_pc;
+      end
+    end
+    if (wen_2) begin // @[ShiftQueue.scala 32:16]
+      if (valid_3) begin // @[ShiftQueue.scala 27:57]
+        elts_2_data <= elts_3_data;
+      end else begin
+        elts_2_data <= io_enq_bits_data;
+      end
+    end
+    if (wen_2) begin // @[ShiftQueue.scala 32:16]
+      if (valid_3) begin // @[ShiftQueue.scala 27:57]
+        elts_2_xcpt_ae_inst <= elts_3_xcpt_ae_inst;
+      end else begin
+        elts_2_xcpt_ae_inst <= io_enq_bits_xcpt_ae_inst;
+      end
+    end
+    if (wen_2) begin // @[ShiftQueue.scala 32:16]
+      if (valid_3) begin // @[ShiftQueue.scala 27:57]
+        elts_2_replay <= elts_3_replay;
+      end else begin
+        elts_2_replay <= io_enq_bits_replay;
+      end
+    end
+    if (wen_3) begin // @[ShiftQueue.scala 32:16]
+      if (valid_4) begin // @[ShiftQueue.scala 27:57]
+        elts_3_btb_taken <= elts_4_btb_taken;
+      end else begin
+        elts_3_btb_taken <= io_enq_bits_btb_taken;
+      end
+    end
+    if (wen_3) begin // @[ShiftQueue.scala 32:16]
+      if (valid_4) begin // @[ShiftQueue.scala 27:57]
+        elts_3_btb_bridx <= elts_4_btb_bridx;
+      end else begin
+        elts_3_btb_bridx <= io_enq_bits_btb_bridx;
+      end
+    end
+    if (wen_3) begin // @[ShiftQueue.scala 32:16]
+      if (valid_4) begin // @[ShiftQueue.scala 27:57]
+        elts_3_btb_entry <= elts_4_btb_entry;
+      end else begin
+        elts_3_btb_entry <= io_enq_bits_btb_entry;
+      end
+    end
+    if (wen_3) begin // @[ShiftQueue.scala 32:16]
+      if (valid_4) begin // @[ShiftQueue.scala 27:57]
+        elts_3_btb_bht_history <= elts_4_btb_bht_history;
+      end else begin
+        elts_3_btb_bht_history <= io_enq_bits_btb_bht_history;
+      end
+    end
+    if (wen_3) begin // @[ShiftQueue.scala 32:16]
+      if (valid_4) begin // @[ShiftQueue.scala 27:57]
+        elts_3_pc <= elts_4_pc;
+      end else begin
+        elts_3_pc <= io_enq_bits_pc;
+      end
+    end
+    if (wen_3) begin // @[ShiftQueue.scala 32:16]
+      if (valid_4) begin // @[ShiftQueue.scala 27:57]
+        elts_3_data <= elts_4_data;
+      end else begin
+        elts_3_data <= io_enq_bits_data;
+      end
+    end
+    if (wen_3) begin // @[ShiftQueue.scala 32:16]
+      if (valid_4) begin // @[ShiftQueue.scala 27:57]
+        elts_3_xcpt_ae_inst <= elts_4_xcpt_ae_inst;
+      end else begin
+        elts_3_xcpt_ae_inst <= io_enq_bits_xcpt_ae_inst;
+      end
+    end
+    if (wen_3) begin // @[ShiftQueue.scala 32:16]
+      if (valid_4) begin // @[ShiftQueue.scala 27:57]
+        elts_3_replay <= elts_4_replay;
+      end else begin
+        elts_3_replay <= io_enq_bits_replay;
+      end
+    end
+    if (wen_4) begin // @[ShiftQueue.scala 32:16]
+      elts_4_btb_taken <= io_enq_bits_btb_taken; // @[ShiftQueue.scala 32:26]
+    end
+    if (wen_4) begin // @[ShiftQueue.scala 32:16]
+      elts_4_btb_bridx <= io_enq_bits_btb_bridx; // @[ShiftQueue.scala 32:26]
+    end
+    if (wen_4) begin // @[ShiftQueue.scala 32:16]
+      elts_4_btb_entry <= io_enq_bits_btb_entry; // @[ShiftQueue.scala 32:26]
+    end
+    if (wen_4) begin // @[ShiftQueue.scala 32:16]
+      elts_4_btb_bht_history <= io_enq_bits_btb_bht_history; // @[ShiftQueue.scala 32:26]
+    end
+    if (wen_4) begin // @[ShiftQueue.scala 32:16]
+      elts_4_pc <= io_enq_bits_pc; // @[ShiftQueue.scala 32:26]
+    end
+    if (wen_4) begin // @[ShiftQueue.scala 32:16]
+      elts_4_data <= io_enq_bits_data; // @[ShiftQueue.scala 32:26]
+    end
+    if (wen_4) begin // @[ShiftQueue.scala 32:16]
+      elts_4_xcpt_ae_inst <= io_enq_bits_xcpt_ae_inst; // @[ShiftQueue.scala 32:26]
+    end
+    if (wen_4) begin // @[ShiftQueue.scala 32:16]
+      elts_4_replay <= io_enq_bits_replay; // @[ShiftQueue.scala 32:26]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  valid_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  valid_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  valid_2 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  valid_3 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  valid_4 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  elts_0_btb_taken = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  elts_0_btb_bridx = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  elts_0_btb_entry = _RAND_7[4:0];
+  _RAND_8 = {1{`RANDOM}};
+  elts_0_btb_bht_history = _RAND_8[7:0];
+  _RAND_9 = {1{`RANDOM}};
+  elts_0_pc = _RAND_9[31:0];
+  _RAND_10 = {1{`RANDOM}};
+  elts_0_data = _RAND_10[31:0];
+  _RAND_11 = {1{`RANDOM}};
+  elts_0_xcpt_ae_inst = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  elts_0_replay = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  elts_1_btb_taken = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  elts_1_btb_bridx = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  elts_1_btb_entry = _RAND_15[4:0];
+  _RAND_16 = {1{`RANDOM}};
+  elts_1_btb_bht_history = _RAND_16[7:0];
+  _RAND_17 = {1{`RANDOM}};
+  elts_1_pc = _RAND_17[31:0];
+  _RAND_18 = {1{`RANDOM}};
+  elts_1_data = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  elts_1_xcpt_ae_inst = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  elts_1_replay = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  elts_2_btb_taken = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  elts_2_btb_bridx = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  elts_2_btb_entry = _RAND_23[4:0];
+  _RAND_24 = {1{`RANDOM}};
+  elts_2_btb_bht_history = _RAND_24[7:0];
+  _RAND_25 = {1{`RANDOM}};
+  elts_2_pc = _RAND_25[31:0];
+  _RAND_26 = {1{`RANDOM}};
+  elts_2_data = _RAND_26[31:0];
+  _RAND_27 = {1{`RANDOM}};
+  elts_2_xcpt_ae_inst = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  elts_2_replay = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  elts_3_btb_taken = _RAND_29[0:0];
+  _RAND_30 = {1{`RANDOM}};
+  elts_3_btb_bridx = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  elts_3_btb_entry = _RAND_31[4:0];
+  _RAND_32 = {1{`RANDOM}};
+  elts_3_btb_bht_history = _RAND_32[7:0];
+  _RAND_33 = {1{`RANDOM}};
+  elts_3_pc = _RAND_33[31:0];
+  _RAND_34 = {1{`RANDOM}};
+  elts_3_data = _RAND_34[31:0];
+  _RAND_35 = {1{`RANDOM}};
+  elts_3_xcpt_ae_inst = _RAND_35[0:0];
+  _RAND_36 = {1{`RANDOM}};
+  elts_3_replay = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  elts_4_btb_taken = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  elts_4_btb_bridx = _RAND_38[0:0];
+  _RAND_39 = {1{`RANDOM}};
+  elts_4_btb_entry = _RAND_39[4:0];
+  _RAND_40 = {1{`RANDOM}};
+  elts_4_btb_bht_history = _RAND_40[7:0];
+  _RAND_41 = {1{`RANDOM}};
+  elts_4_pc = _RAND_41[31:0];
+  _RAND_42 = {1{`RANDOM}};
+  elts_4_data = _RAND_42[31:0];
+  _RAND_43 = {1{`RANDOM}};
+  elts_4_xcpt_ae_inst = _RAND_43[0:0];
+  _RAND_44 = {1{`RANDOM}};
+  elts_4_replay = _RAND_44[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLB_1(
+  input  [31:0] io_req_bits_vaddr,
+  input  [1:0]  io_req_bits_prv,
+  output [30:0] io_resp_paddr,
+  output        io_resp_ae_inst,
+  output        io_resp_cacheable,
+  input         io_ptw_status_debug,
+  input         io_ptw_pmp_0_cfg_l,
+  input  [1:0]  io_ptw_pmp_0_cfg_a,
+  input         io_ptw_pmp_0_cfg_x,
+  input         io_ptw_pmp_0_cfg_w,
+  input         io_ptw_pmp_0_cfg_r,
+  input  [28:0] io_ptw_pmp_0_addr,
+  input  [30:0] io_ptw_pmp_0_mask,
+  input         io_ptw_pmp_1_cfg_l,
+  input  [1:0]  io_ptw_pmp_1_cfg_a,
+  input         io_ptw_pmp_1_cfg_x,
+  input         io_ptw_pmp_1_cfg_w,
+  input         io_ptw_pmp_1_cfg_r,
+  input  [28:0] io_ptw_pmp_1_addr,
+  input  [30:0] io_ptw_pmp_1_mask,
+  input         io_ptw_pmp_2_cfg_l,
+  input  [1:0]  io_ptw_pmp_2_cfg_a,
+  input         io_ptw_pmp_2_cfg_x,
+  input         io_ptw_pmp_2_cfg_w,
+  input         io_ptw_pmp_2_cfg_r,
+  input  [28:0] io_ptw_pmp_2_addr,
+  input  [30:0] io_ptw_pmp_2_mask,
+  input         io_ptw_pmp_3_cfg_l,
+  input  [1:0]  io_ptw_pmp_3_cfg_a,
+  input         io_ptw_pmp_3_cfg_x,
+  input         io_ptw_pmp_3_cfg_w,
+  input         io_ptw_pmp_3_cfg_r,
+  input  [28:0] io_ptw_pmp_3_addr,
+  input  [30:0] io_ptw_pmp_3_mask,
+  input         io_ptw_pmp_4_cfg_l,
+  input  [1:0]  io_ptw_pmp_4_cfg_a,
+  input         io_ptw_pmp_4_cfg_x,
+  input         io_ptw_pmp_4_cfg_w,
+  input         io_ptw_pmp_4_cfg_r,
+  input  [28:0] io_ptw_pmp_4_addr,
+  input  [30:0] io_ptw_pmp_4_mask,
+  input         io_ptw_pmp_5_cfg_l,
+  input  [1:0]  io_ptw_pmp_5_cfg_a,
+  input         io_ptw_pmp_5_cfg_x,
+  input         io_ptw_pmp_5_cfg_w,
+  input         io_ptw_pmp_5_cfg_r,
+  input  [28:0] io_ptw_pmp_5_addr,
+  input  [30:0] io_ptw_pmp_5_mask,
+  input         io_ptw_pmp_6_cfg_l,
+  input  [1:0]  io_ptw_pmp_6_cfg_a,
+  input         io_ptw_pmp_6_cfg_x,
+  input         io_ptw_pmp_6_cfg_w,
+  input         io_ptw_pmp_6_cfg_r,
+  input  [28:0] io_ptw_pmp_6_addr,
+  input  [30:0] io_ptw_pmp_6_mask,
+  input         io_ptw_pmp_7_cfg_l,
+  input  [1:0]  io_ptw_pmp_7_cfg_a,
+  input         io_ptw_pmp_7_cfg_x,
+  input         io_ptw_pmp_7_cfg_w,
+  input         io_ptw_pmp_7_cfg_r,
+  input  [28:0] io_ptw_pmp_7_addr,
+  input  [30:0] io_ptw_pmp_7_mask
+);
+  wire [1:0] pmp_io_prv; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_0_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_0_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_0_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_1_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_1_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_1_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_2_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_2_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_2_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_3_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_3_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_3_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_4_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_4_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_4_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_5_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_5_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_5_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_6_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_6_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_6_mask; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_l; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_pmp_7_cfg_a; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_x; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_r; // @[TLB.scala 233:19]
+  wire [28:0] pmp_io_pmp_7_addr; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_pmp_7_mask; // @[TLB.scala 233:19]
+  wire [30:0] pmp_io_addr; // @[TLB.scala 233:19]
+  wire  pmp_io_r; // @[TLB.scala 233:19]
+  wire  pmp_io_w; // @[TLB.scala 233:19]
+  wire  pmp_io_x; // @[TLB.scala 233:19]
+  wire [19:0] vpn = io_req_bits_vaddr[31:12]; // @[TLB.scala 187:30]
+  wire [19:0] mpu_ppn = io_req_bits_vaddr[31:12]; // @[TLB.scala 230:144]
+  wire [31:0] mpu_physaddr = {mpu_ppn,io_req_bits_vaddr[11:0]}; // @[Cat.scala 31:58]
+  wire [2:0] mpu_priv = {io_ptw_status_debug,io_req_bits_prv}; // @[Cat.scala 31:58]
+  wire [31:0] _legal_address_T = mpu_physaddr ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_1 = {1'b0,$signed(_legal_address_T)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_3 = $signed(_legal_address_T_1) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_4 = $signed(_legal_address_T_3) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_5 = mpu_physaddr ^ 32'h10013000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_6 = {1'b0,$signed(_legal_address_T_5)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_8 = $signed(_legal_address_T_6) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_9 = $signed(_legal_address_T_8) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_10 = mpu_physaddr ^ 32'h10023000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_11 = {1'b0,$signed(_legal_address_T_10)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_13 = $signed(_legal_address_T_11) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_14 = $signed(_legal_address_T_13) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_15 = mpu_physaddr ^ 32'h10033000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_16 = {1'b0,$signed(_legal_address_T_15)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_18 = $signed(_legal_address_T_16) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_19 = $signed(_legal_address_T_18) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_20 = mpu_physaddr ^ 32'h10043000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_21 = {1'b0,$signed(_legal_address_T_20)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_23 = $signed(_legal_address_T_21) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_24 = $signed(_legal_address_T_23) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_25 = mpu_physaddr ^ 32'h10053000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_26 = {1'b0,$signed(_legal_address_T_25)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_28 = $signed(_legal_address_T_26) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_29 = $signed(_legal_address_T_28) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_30 = mpu_physaddr ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_31 = {1'b0,$signed(_legal_address_T_30)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_33 = $signed(_legal_address_T_31) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_34 = $signed(_legal_address_T_33) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_35 = mpu_physaddr ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_36 = {1'b0,$signed(_legal_address_T_35)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_38 = $signed(_legal_address_T_36) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_39 = $signed(_legal_address_T_38) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_40 = mpu_physaddr ^ 32'h10034000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_41 = {1'b0,$signed(_legal_address_T_40)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_43 = $signed(_legal_address_T_41) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_44 = $signed(_legal_address_T_43) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_45 = mpu_physaddr ^ 32'h10024000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_46 = {1'b0,$signed(_legal_address_T_45)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_48 = $signed(_legal_address_T_46) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_49 = $signed(_legal_address_T_48) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_50 = mpu_physaddr ^ 32'h10012000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_51 = {1'b0,$signed(_legal_address_T_50)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_53 = $signed(_legal_address_T_51) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_54 = $signed(_legal_address_T_53) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_55 = mpu_physaddr ^ 32'h10015000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_56 = {1'b0,$signed(_legal_address_T_55)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_58 = $signed(_legal_address_T_56) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_59 = $signed(_legal_address_T_58) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_60 = mpu_physaddr ^ 32'h10025000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_61 = {1'b0,$signed(_legal_address_T_60)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_63 = $signed(_legal_address_T_61) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_64 = $signed(_legal_address_T_63) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_65 = mpu_physaddr ^ 32'h10035000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_66 = {1'b0,$signed(_legal_address_T_65)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_68 = $signed(_legal_address_T_66) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_69 = $signed(_legal_address_T_68) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_70 = mpu_physaddr ^ 32'h10016000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_71 = {1'b0,$signed(_legal_address_T_70)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_73 = $signed(_legal_address_T_71) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_74 = $signed(_legal_address_T_73) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_75 = mpu_physaddr ^ 32'h10026000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_76 = {1'b0,$signed(_legal_address_T_75)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_78 = $signed(_legal_address_T_76) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_79 = $signed(_legal_address_T_78) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_80 = mpu_physaddr ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_81 = {1'b0,$signed(_legal_address_T_80)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_83 = $signed(_legal_address_T_81) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_84 = $signed(_legal_address_T_83) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_85 = mpu_physaddr ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_86 = {1'b0,$signed(_legal_address_T_85)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_88 = $signed(_legal_address_T_86) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_89 = $signed(_legal_address_T_88) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [32:0] _legal_address_T_91 = {1'b0,$signed(mpu_physaddr)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_93 = $signed(_legal_address_T_91) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_94 = $signed(_legal_address_T_93) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_95 = mpu_physaddr ^ 32'h8000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_96 = {1'b0,$signed(_legal_address_T_95)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_98 = $signed(_legal_address_T_96) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_99 = $signed(_legal_address_T_98) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_100 = mpu_physaddr ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_101 = {1'b0,$signed(_legal_address_T_100)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_103 = $signed(_legal_address_T_101) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_104 = $signed(_legal_address_T_103) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_105 = mpu_physaddr ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_106 = {1'b0,$signed(_legal_address_T_105)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_108 = $signed(_legal_address_T_106) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_109 = $signed(_legal_address_T_108) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _legal_address_T_110 = mpu_physaddr ^ 32'h40000000; // @[Parameters.scala 137:31]
+  wire [32:0] _legal_address_T_111 = {1'b0,$signed(_legal_address_T_110)}; // @[Parameters.scala 137:49]
+  wire [32:0] _legal_address_T_113 = $signed(_legal_address_T_111) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_114 = $signed(_legal_address_T_113) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  legal_address = _legal_address_T_4 | _legal_address_T_9 | _legal_address_T_14 | _legal_address_T_19 |
+    _legal_address_T_24 | _legal_address_T_29 | _legal_address_T_34 | _legal_address_T_39 | _legal_address_T_44 |
+    _legal_address_T_49 | _legal_address_T_54 | _legal_address_T_59 | _legal_address_T_64 | _legal_address_T_69 |
+    _legal_address_T_74 | _legal_address_T_79 | _legal_address_T_84 | _legal_address_T_89 | _legal_address_T_94 |
+    _legal_address_T_99 | _legal_address_T_104 | _legal_address_T_109 | _legal_address_T_114; // @[TLB.scala 238:67]
+  wire [32:0] _cacheable_T_8 = $signed(_legal_address_T_111) & 33'sh40000000; // @[Parameters.scala 137:52]
+  wire  _cacheable_T_9 = $signed(_cacheable_T_8) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  cacheable = legal_address & _cacheable_T_9; // @[TLB.scala 240:19]
+  wire [32:0] _homogeneous_T_98 = $signed(_legal_address_T_36) & 33'sh60000000; // @[Parameters.scala 137:52]
+  wire  _homogeneous_T_99 = $signed(_homogeneous_T_98) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [32:0] _homogeneous_T_116 = $signed(_legal_address_T_111) & 33'sh60000000; // @[Parameters.scala 137:52]
+  wire  _homogeneous_T_117 = $signed(_homogeneous_T_116) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  deny_access_to_debug = mpu_priv <= 3'h3 & _legal_address_T_94; // @[TLB.scala 243:48]
+  wire  _prot_r_T_6 = ~deny_access_to_debug; // @[TLB.scala 244:44]
+  wire [32:0] _prot_x_T_3 = $signed(_legal_address_T_91) & 33'sh76040000; // @[Parameters.scala 137:52]
+  wire  _prot_x_T_4 = $signed(_prot_x_T_3) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _prot_x_T_16 = _prot_x_T_4 | _homogeneous_T_99 | _homogeneous_T_117; // @[Parameters.scala 615:89]
+  wire  _prot_x_T_43 = legal_address & _prot_x_T_16; // @[TLB.scala 240:19]
+  wire  prot_x = _prot_x_T_43 & _prot_r_T_6 & pmp_io_x; // @[TLB.scala 249:65]
+  wire [18:0] ppn = vpn[18:0]; // @[TLB.scala 310:125]
+  wire [1:0] _px_array_T_1 = prot_x ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [6:0] px_array = {_px_array_T_1,5'h0}; // @[Cat.scala 31:58]
+  wire [1:0] _c_array_T_1 = cacheable ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [6:0] c_array = {_c_array_T_1,5'h0}; // @[Cat.scala 31:58]
+  wire [6:0] _io_resp_ae_inst_T = ~px_array; // @[TLB.scala 427:23]
+  wire [6:0] _io_resp_ae_inst_T_1 = _io_resp_ae_inst_T & 7'h40; // @[TLB.scala 427:33]
+  wire [6:0] _io_resp_cacheable_T = c_array & 7'h40; // @[TLB.scala 431:33]
+  PMPChecker pmp ( // @[TLB.scala 233:19]
+    .io_prv(pmp_io_prv),
+    .io_pmp_0_cfg_l(pmp_io_pmp_0_cfg_l),
+    .io_pmp_0_cfg_a(pmp_io_pmp_0_cfg_a),
+    .io_pmp_0_cfg_x(pmp_io_pmp_0_cfg_x),
+    .io_pmp_0_cfg_w(pmp_io_pmp_0_cfg_w),
+    .io_pmp_0_cfg_r(pmp_io_pmp_0_cfg_r),
+    .io_pmp_0_addr(pmp_io_pmp_0_addr),
+    .io_pmp_0_mask(pmp_io_pmp_0_mask),
+    .io_pmp_1_cfg_l(pmp_io_pmp_1_cfg_l),
+    .io_pmp_1_cfg_a(pmp_io_pmp_1_cfg_a),
+    .io_pmp_1_cfg_x(pmp_io_pmp_1_cfg_x),
+    .io_pmp_1_cfg_w(pmp_io_pmp_1_cfg_w),
+    .io_pmp_1_cfg_r(pmp_io_pmp_1_cfg_r),
+    .io_pmp_1_addr(pmp_io_pmp_1_addr),
+    .io_pmp_1_mask(pmp_io_pmp_1_mask),
+    .io_pmp_2_cfg_l(pmp_io_pmp_2_cfg_l),
+    .io_pmp_2_cfg_a(pmp_io_pmp_2_cfg_a),
+    .io_pmp_2_cfg_x(pmp_io_pmp_2_cfg_x),
+    .io_pmp_2_cfg_w(pmp_io_pmp_2_cfg_w),
+    .io_pmp_2_cfg_r(pmp_io_pmp_2_cfg_r),
+    .io_pmp_2_addr(pmp_io_pmp_2_addr),
+    .io_pmp_2_mask(pmp_io_pmp_2_mask),
+    .io_pmp_3_cfg_l(pmp_io_pmp_3_cfg_l),
+    .io_pmp_3_cfg_a(pmp_io_pmp_3_cfg_a),
+    .io_pmp_3_cfg_x(pmp_io_pmp_3_cfg_x),
+    .io_pmp_3_cfg_w(pmp_io_pmp_3_cfg_w),
+    .io_pmp_3_cfg_r(pmp_io_pmp_3_cfg_r),
+    .io_pmp_3_addr(pmp_io_pmp_3_addr),
+    .io_pmp_3_mask(pmp_io_pmp_3_mask),
+    .io_pmp_4_cfg_l(pmp_io_pmp_4_cfg_l),
+    .io_pmp_4_cfg_a(pmp_io_pmp_4_cfg_a),
+    .io_pmp_4_cfg_x(pmp_io_pmp_4_cfg_x),
+    .io_pmp_4_cfg_w(pmp_io_pmp_4_cfg_w),
+    .io_pmp_4_cfg_r(pmp_io_pmp_4_cfg_r),
+    .io_pmp_4_addr(pmp_io_pmp_4_addr),
+    .io_pmp_4_mask(pmp_io_pmp_4_mask),
+    .io_pmp_5_cfg_l(pmp_io_pmp_5_cfg_l),
+    .io_pmp_5_cfg_a(pmp_io_pmp_5_cfg_a),
+    .io_pmp_5_cfg_x(pmp_io_pmp_5_cfg_x),
+    .io_pmp_5_cfg_w(pmp_io_pmp_5_cfg_w),
+    .io_pmp_5_cfg_r(pmp_io_pmp_5_cfg_r),
+    .io_pmp_5_addr(pmp_io_pmp_5_addr),
+    .io_pmp_5_mask(pmp_io_pmp_5_mask),
+    .io_pmp_6_cfg_l(pmp_io_pmp_6_cfg_l),
+    .io_pmp_6_cfg_a(pmp_io_pmp_6_cfg_a),
+    .io_pmp_6_cfg_x(pmp_io_pmp_6_cfg_x),
+    .io_pmp_6_cfg_w(pmp_io_pmp_6_cfg_w),
+    .io_pmp_6_cfg_r(pmp_io_pmp_6_cfg_r),
+    .io_pmp_6_addr(pmp_io_pmp_6_addr),
+    .io_pmp_6_mask(pmp_io_pmp_6_mask),
+    .io_pmp_7_cfg_l(pmp_io_pmp_7_cfg_l),
+    .io_pmp_7_cfg_a(pmp_io_pmp_7_cfg_a),
+    .io_pmp_7_cfg_x(pmp_io_pmp_7_cfg_x),
+    .io_pmp_7_cfg_w(pmp_io_pmp_7_cfg_w),
+    .io_pmp_7_cfg_r(pmp_io_pmp_7_cfg_r),
+    .io_pmp_7_addr(pmp_io_pmp_7_addr),
+    .io_pmp_7_mask(pmp_io_pmp_7_mask),
+    .io_addr(pmp_io_addr),
+    .io_r(pmp_io_r),
+    .io_w(pmp_io_w),
+    .io_x(pmp_io_x)
+  );
+  assign io_resp_paddr = {ppn,io_req_bits_vaddr[11:0]}; // @[Cat.scala 31:58]
+  assign io_resp_ae_inst = |_io_resp_ae_inst_T_1; // @[TLB.scala 427:41]
+  assign io_resp_cacheable = |_io_resp_cacheable_T; // @[TLB.scala 431:41]
+  assign pmp_io_prv = mpu_priv[1:0]; // @[TLB.scala 237:14]
+  assign pmp_io_pmp_0_cfg_l = io_ptw_pmp_0_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_cfg_a = io_ptw_pmp_0_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_cfg_x = io_ptw_pmp_0_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_cfg_w = io_ptw_pmp_0_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_cfg_r = io_ptw_pmp_0_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_addr = io_ptw_pmp_0_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_0_mask = io_ptw_pmp_0_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_l = io_ptw_pmp_1_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_a = io_ptw_pmp_1_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_x = io_ptw_pmp_1_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_w = io_ptw_pmp_1_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_cfg_r = io_ptw_pmp_1_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_addr = io_ptw_pmp_1_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_1_mask = io_ptw_pmp_1_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_l = io_ptw_pmp_2_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_a = io_ptw_pmp_2_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_x = io_ptw_pmp_2_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_w = io_ptw_pmp_2_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_cfg_r = io_ptw_pmp_2_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_addr = io_ptw_pmp_2_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_2_mask = io_ptw_pmp_2_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_l = io_ptw_pmp_3_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_a = io_ptw_pmp_3_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_x = io_ptw_pmp_3_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_w = io_ptw_pmp_3_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_cfg_r = io_ptw_pmp_3_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_addr = io_ptw_pmp_3_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_3_mask = io_ptw_pmp_3_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_l = io_ptw_pmp_4_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_a = io_ptw_pmp_4_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_x = io_ptw_pmp_4_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_w = io_ptw_pmp_4_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_cfg_r = io_ptw_pmp_4_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_addr = io_ptw_pmp_4_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_4_mask = io_ptw_pmp_4_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_l = io_ptw_pmp_5_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_a = io_ptw_pmp_5_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_x = io_ptw_pmp_5_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_w = io_ptw_pmp_5_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_cfg_r = io_ptw_pmp_5_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_addr = io_ptw_pmp_5_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_5_mask = io_ptw_pmp_5_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_l = io_ptw_pmp_6_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_a = io_ptw_pmp_6_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_x = io_ptw_pmp_6_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_w = io_ptw_pmp_6_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_cfg_r = io_ptw_pmp_6_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_addr = io_ptw_pmp_6_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_6_mask = io_ptw_pmp_6_mask; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_l = io_ptw_pmp_7_cfg_l; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_a = io_ptw_pmp_7_cfg_a; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_x = io_ptw_pmp_7_cfg_x; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_w = io_ptw_pmp_7_cfg_w; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_cfg_r = io_ptw_pmp_7_cfg_r; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_addr = io_ptw_pmp_7_addr; // @[TLB.scala 236:14]
+  assign pmp_io_pmp_7_mask = io_ptw_pmp_7_mask; // @[TLB.scala 236:14]
+  assign pmp_io_addr = mpu_physaddr[30:0]; // @[TLB.scala 234:15]
+endmodule
+module BTB(
+  input         clock,
+  input         reset,
+  input  [31:0] io_req_bits_addr,
+  output        io_resp_valid,
+  output        io_resp_bits_taken,
+  output        io_resp_bits_bridx,
+  output [31:0] io_resp_bits_target,
+  output [4:0]  io_resp_bits_entry,
+  output [7:0]  io_resp_bits_bht_history,
+  output        io_resp_bits_bht_value,
+  input         io_btb_update_valid,
+  input  [4:0]  io_btb_update_bits_prediction_entry,
+  input  [31:0] io_btb_update_bits_pc,
+  input         io_btb_update_bits_isValid,
+  input  [31:0] io_btb_update_bits_br_pc,
+  input  [1:0]  io_btb_update_bits_cfiType,
+  input         io_bht_update_valid,
+  input  [7:0]  io_bht_update_bits_prediction_history,
+  input  [31:0] io_bht_update_bits_pc,
+  input         io_bht_update_bits_branch,
+  input         io_bht_update_bits_taken,
+  input         io_bht_update_bits_mispredict,
+  input         io_bht_advance_valid,
+  input         io_bht_advance_bits_bht_value,
+  input         io_ras_update_valid,
+  input  [1:0]  io_ras_update_bits_cfiType,
+  input  [31:0] io_ras_update_bits_returnAddr,
+  output        io_ras_head_valid,
+  output [31:0] io_ras_head_bits,
+  input         io_flush
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+  reg [31:0] _RAND_47;
+  reg [31:0] _RAND_48;
+  reg [31:0] _RAND_49;
+  reg [31:0] _RAND_50;
+  reg [31:0] _RAND_51;
+  reg [31:0] _RAND_52;
+  reg [31:0] _RAND_53;
+  reg [31:0] _RAND_54;
+  reg [31:0] _RAND_55;
+  reg [31:0] _RAND_56;
+  reg [31:0] _RAND_57;
+  reg [31:0] _RAND_58;
+  reg [31:0] _RAND_59;
+  reg [31:0] _RAND_60;
+  reg [31:0] _RAND_61;
+  reg [31:0] _RAND_62;
+  reg [31:0] _RAND_63;
+  reg [31:0] _RAND_64;
+  reg [31:0] _RAND_65;
+  reg [31:0] _RAND_66;
+  reg [31:0] _RAND_67;
+  reg [31:0] _RAND_68;
+  reg [31:0] _RAND_69;
+  reg [31:0] _RAND_70;
+  reg [31:0] _RAND_71;
+  reg [31:0] _RAND_72;
+  reg [31:0] _RAND_73;
+  reg [31:0] _RAND_74;
+  reg [31:0] _RAND_75;
+  reg [31:0] _RAND_76;
+  reg [31:0] _RAND_77;
+  reg [31:0] _RAND_78;
+  reg [31:0] _RAND_79;
+  reg [31:0] _RAND_80;
+  reg [31:0] _RAND_81;
+  reg [31:0] _RAND_82;
+  reg [31:0] _RAND_83;
+  reg [31:0] _RAND_84;
+  reg [31:0] _RAND_85;
+  reg [31:0] _RAND_86;
+  reg [31:0] _RAND_87;
+  reg [31:0] _RAND_88;
+  reg [31:0] _RAND_89;
+  reg [31:0] _RAND_90;
+  reg [31:0] _RAND_91;
+  reg [31:0] _RAND_92;
+  reg [31:0] _RAND_93;
+  reg [31:0] _RAND_94;
+  reg [31:0] _RAND_95;
+  reg [31:0] _RAND_96;
+  reg [31:0] _RAND_97;
+  reg [31:0] _RAND_98;
+  reg [31:0] _RAND_99;
+  reg [31:0] _RAND_100;
+  reg [31:0] _RAND_101;
+  reg [31:0] _RAND_102;
+  reg [31:0] _RAND_103;
+  reg [31:0] _RAND_104;
+  reg [31:0] _RAND_105;
+  reg [31:0] _RAND_106;
+  reg [31:0] _RAND_107;
+  reg [31:0] _RAND_108;
+  reg [31:0] _RAND_109;
+  reg [31:0] _RAND_110;
+  reg [31:0] _RAND_111;
+  reg [31:0] _RAND_112;
+  reg [31:0] _RAND_113;
+  reg [31:0] _RAND_114;
+  reg [31:0] _RAND_115;
+  reg [31:0] _RAND_116;
+  reg [31:0] _RAND_117;
+  reg [31:0] _RAND_118;
+  reg [31:0] _RAND_119;
+  reg [31:0] _RAND_120;
+  reg [31:0] _RAND_121;
+  reg [31:0] _RAND_122;
+  reg [31:0] _RAND_123;
+  reg [31:0] _RAND_124;
+  reg [31:0] _RAND_125;
+  reg [31:0] _RAND_126;
+  reg [31:0] _RAND_127;
+  reg [31:0] _RAND_128;
+  reg [31:0] _RAND_129;
+  reg [31:0] _RAND_130;
+  reg [31:0] _RAND_131;
+  reg [31:0] _RAND_132;
+  reg [31:0] _RAND_133;
+  reg [31:0] _RAND_134;
+  reg [31:0] _RAND_135;
+  reg [31:0] _RAND_136;
+  reg [31:0] _RAND_137;
+  reg [31:0] _RAND_138;
+  reg [31:0] _RAND_139;
+  reg [31:0] _RAND_140;
+  reg [31:0] _RAND_141;
+  reg [31:0] _RAND_142;
+  reg [31:0] _RAND_143;
+  reg [31:0] _RAND_144;
+  reg [31:0] _RAND_145;
+  reg [31:0] _RAND_146;
+  reg [31:0] _RAND_147;
+  reg [31:0] _RAND_148;
+  reg [31:0] _RAND_149;
+  reg [31:0] _RAND_150;
+  reg [31:0] _RAND_151;
+  reg [31:0] _RAND_152;
+  reg [31:0] _RAND_153;
+  reg [31:0] _RAND_154;
+  reg [31:0] _RAND_155;
+  reg [31:0] _RAND_156;
+  reg [31:0] _RAND_157;
+  reg [31:0] _RAND_158;
+  reg [31:0] _RAND_159;
+  reg [31:0] _RAND_160;
+  reg [31:0] _RAND_161;
+  reg [31:0] _RAND_162;
+  reg [31:0] _RAND_163;
+  reg [31:0] _RAND_164;
+  reg [31:0] _RAND_165;
+  reg [31:0] _RAND_166;
+  reg [31:0] _RAND_167;
+  reg [31:0] _RAND_168;
+  reg [31:0] _RAND_169;
+  reg [31:0] _RAND_170;
+  reg [31:0] _RAND_171;
+  reg [31:0] _RAND_172;
+  reg [31:0] _RAND_173;
+  reg [31:0] _RAND_174;
+  reg [31:0] _RAND_175;
+  reg [31:0] _RAND_176;
+  reg [31:0] _RAND_177;
+  reg [31:0] _RAND_178;
+  reg [31:0] _RAND_179;
+  reg [31:0] _RAND_180;
+  reg [31:0] _RAND_181;
+  reg [31:0] _RAND_182;
+  reg [31:0] _RAND_183;
+  reg [31:0] _RAND_184;
+  reg [31:0] _RAND_185;
+  reg [31:0] _RAND_186;
+  reg [31:0] _RAND_187;
+  reg [31:0] _RAND_188;
+  reg [31:0] _RAND_189;
+  reg [31:0] _RAND_190;
+  reg [31:0] _RAND_191;
+  reg [31:0] _RAND_192;
+  reg [31:0] _RAND_193;
+  reg [31:0] _RAND_194;
+  reg [31:0] _RAND_195;
+  reg [31:0] _RAND_196;
+  reg [31:0] _RAND_197;
+`endif // RANDOMIZE_REG_INIT
+  reg  table_ [0:511]; // @[BTB.scala 118:26]
+  wire  table__res_res_value_MPORT_en; // @[BTB.scala 118:26]
+  wire [8:0] table__res_res_value_MPORT_addr; // @[BTB.scala 118:26]
+  wire  table__res_res_value_MPORT_data; // @[BTB.scala 118:26]
+  wire  table__MPORT_data; // @[BTB.scala 118:26]
+  wire [8:0] table__MPORT_addr; // @[BTB.scala 118:26]
+  wire  table__MPORT_mask; // @[BTB.scala 118:26]
+  wire  table__MPORT_en; // @[BTB.scala 118:26]
+  reg [12:0] idxs_0; // @[BTB.scala 201:17]
+  reg [12:0] idxs_1; // @[BTB.scala 201:17]
+  reg [12:0] idxs_2; // @[BTB.scala 201:17]
+  reg [12:0] idxs_3; // @[BTB.scala 201:17]
+  reg [12:0] idxs_4; // @[BTB.scala 201:17]
+  reg [12:0] idxs_5; // @[BTB.scala 201:17]
+  reg [12:0] idxs_6; // @[BTB.scala 201:17]
+  reg [12:0] idxs_7; // @[BTB.scala 201:17]
+  reg [12:0] idxs_8; // @[BTB.scala 201:17]
+  reg [12:0] idxs_9; // @[BTB.scala 201:17]
+  reg [12:0] idxs_10; // @[BTB.scala 201:17]
+  reg [12:0] idxs_11; // @[BTB.scala 201:17]
+  reg [12:0] idxs_12; // @[BTB.scala 201:17]
+  reg [12:0] idxs_13; // @[BTB.scala 201:17]
+  reg [12:0] idxs_14; // @[BTB.scala 201:17]
+  reg [12:0] idxs_15; // @[BTB.scala 201:17]
+  reg [12:0] idxs_16; // @[BTB.scala 201:17]
+  reg [12:0] idxs_17; // @[BTB.scala 201:17]
+  reg [12:0] idxs_18; // @[BTB.scala 201:17]
+  reg [12:0] idxs_19; // @[BTB.scala 201:17]
+  reg [12:0] idxs_20; // @[BTB.scala 201:17]
+  reg [12:0] idxs_21; // @[BTB.scala 201:17]
+  reg [12:0] idxs_22; // @[BTB.scala 201:17]
+  reg [12:0] idxs_23; // @[BTB.scala 201:17]
+  reg [12:0] idxs_24; // @[BTB.scala 201:17]
+  reg [12:0] idxs_25; // @[BTB.scala 201:17]
+  reg [12:0] idxs_26; // @[BTB.scala 201:17]
+  reg [12:0] idxs_27; // @[BTB.scala 201:17]
+  reg [2:0] idxPages_0; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_1; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_2; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_3; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_4; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_5; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_6; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_7; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_8; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_9; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_10; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_11; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_12; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_13; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_14; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_15; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_16; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_17; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_18; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_19; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_20; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_21; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_22; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_23; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_24; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_25; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_26; // @[BTB.scala 202:21]
+  reg [2:0] idxPages_27; // @[BTB.scala 202:21]
+  reg [12:0] tgts_0; // @[BTB.scala 203:17]
+  reg [12:0] tgts_1; // @[BTB.scala 203:17]
+  reg [12:0] tgts_2; // @[BTB.scala 203:17]
+  reg [12:0] tgts_3; // @[BTB.scala 203:17]
+  reg [12:0] tgts_4; // @[BTB.scala 203:17]
+  reg [12:0] tgts_5; // @[BTB.scala 203:17]
+  reg [12:0] tgts_6; // @[BTB.scala 203:17]
+  reg [12:0] tgts_7; // @[BTB.scala 203:17]
+  reg [12:0] tgts_8; // @[BTB.scala 203:17]
+  reg [12:0] tgts_9; // @[BTB.scala 203:17]
+  reg [12:0] tgts_10; // @[BTB.scala 203:17]
+  reg [12:0] tgts_11; // @[BTB.scala 203:17]
+  reg [12:0] tgts_12; // @[BTB.scala 203:17]
+  reg [12:0] tgts_13; // @[BTB.scala 203:17]
+  reg [12:0] tgts_14; // @[BTB.scala 203:17]
+  reg [12:0] tgts_15; // @[BTB.scala 203:17]
+  reg [12:0] tgts_16; // @[BTB.scala 203:17]
+  reg [12:0] tgts_17; // @[BTB.scala 203:17]
+  reg [12:0] tgts_18; // @[BTB.scala 203:17]
+  reg [12:0] tgts_19; // @[BTB.scala 203:17]
+  reg [12:0] tgts_20; // @[BTB.scala 203:17]
+  reg [12:0] tgts_21; // @[BTB.scala 203:17]
+  reg [12:0] tgts_22; // @[BTB.scala 203:17]
+  reg [12:0] tgts_23; // @[BTB.scala 203:17]
+  reg [12:0] tgts_24; // @[BTB.scala 203:17]
+  reg [12:0] tgts_25; // @[BTB.scala 203:17]
+  reg [12:0] tgts_26; // @[BTB.scala 203:17]
+  reg [12:0] tgts_27; // @[BTB.scala 203:17]
+  reg [2:0] tgtPages_0; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_1; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_2; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_3; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_4; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_5; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_6; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_7; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_8; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_9; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_10; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_11; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_12; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_13; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_14; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_15; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_16; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_17; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_18; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_19; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_20; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_21; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_22; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_23; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_24; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_25; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_26; // @[BTB.scala 204:21]
+  reg [2:0] tgtPages_27; // @[BTB.scala 204:21]
+  reg [17:0] pages_0; // @[BTB.scala 205:18]
+  reg [17:0] pages_1; // @[BTB.scala 205:18]
+  reg [17:0] pages_2; // @[BTB.scala 205:18]
+  reg [17:0] pages_3; // @[BTB.scala 205:18]
+  reg [17:0] pages_4; // @[BTB.scala 205:18]
+  reg [17:0] pages_5; // @[BTB.scala 205:18]
+  reg [5:0] pageValid; // @[BTB.scala 206:22]
+  wire [17:0] pagesMasked_0 = pageValid[0] ? pages_0 : 18'h0; // @[BTB.scala 207:75]
+  wire [17:0] pagesMasked_1 = pageValid[1] ? pages_1 : 18'h0; // @[BTB.scala 207:75]
+  wire [17:0] pagesMasked_2 = pageValid[2] ? pages_2 : 18'h0; // @[BTB.scala 207:75]
+  wire [17:0] pagesMasked_3 = pageValid[3] ? pages_3 : 18'h0; // @[BTB.scala 207:75]
+  wire [17:0] pagesMasked_4 = pageValid[4] ? pages_4 : 18'h0; // @[BTB.scala 207:75]
+  wire [17:0] pagesMasked_5 = pageValid[5] ? pages_5 : 18'h0; // @[BTB.scala 207:75]
+  reg [27:0] isValid; // @[BTB.scala 209:20]
+  reg [1:0] cfiType_0; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_1; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_2; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_3; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_4; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_5; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_6; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_7; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_8; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_9; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_10; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_11; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_12; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_13; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_14; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_15; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_16; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_17; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_18; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_19; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_20; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_21; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_22; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_23; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_24; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_25; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_26; // @[BTB.scala 210:20]
+  reg [1:0] cfiType_27; // @[BTB.scala 210:20]
+  reg  brIdx_0; // @[BTB.scala 211:18]
+  reg  brIdx_1; // @[BTB.scala 211:18]
+  reg  brIdx_2; // @[BTB.scala 211:18]
+  reg  brIdx_3; // @[BTB.scala 211:18]
+  reg  brIdx_4; // @[BTB.scala 211:18]
+  reg  brIdx_5; // @[BTB.scala 211:18]
+  reg  brIdx_6; // @[BTB.scala 211:18]
+  reg  brIdx_7; // @[BTB.scala 211:18]
+  reg  brIdx_8; // @[BTB.scala 211:18]
+  reg  brIdx_9; // @[BTB.scala 211:18]
+  reg  brIdx_10; // @[BTB.scala 211:18]
+  reg  brIdx_11; // @[BTB.scala 211:18]
+  reg  brIdx_12; // @[BTB.scala 211:18]
+  reg  brIdx_13; // @[BTB.scala 211:18]
+  reg  brIdx_14; // @[BTB.scala 211:18]
+  reg  brIdx_15; // @[BTB.scala 211:18]
+  reg  brIdx_16; // @[BTB.scala 211:18]
+  reg  brIdx_17; // @[BTB.scala 211:18]
+  reg  brIdx_18; // @[BTB.scala 211:18]
+  reg  brIdx_19; // @[BTB.scala 211:18]
+  reg  brIdx_20; // @[BTB.scala 211:18]
+  reg  brIdx_21; // @[BTB.scala 211:18]
+  reg  brIdx_22; // @[BTB.scala 211:18]
+  reg  brIdx_23; // @[BTB.scala 211:18]
+  reg  brIdx_24; // @[BTB.scala 211:18]
+  reg  brIdx_25; // @[BTB.scala 211:18]
+  reg  brIdx_26; // @[BTB.scala 211:18]
+  reg  brIdx_27; // @[BTB.scala 211:18]
+  reg  r_btb_updatePipe_valid; // @[Valid.scala 127:22]
+  reg [4:0] r_btb_updatePipe_bits_prediction_entry; // @[Reg.scala 16:16]
+  reg [31:0] r_btb_updatePipe_bits_pc; // @[Reg.scala 16:16]
+  reg  r_btb_updatePipe_bits_isValid; // @[Reg.scala 16:16]
+  reg [31:0] r_btb_updatePipe_bits_br_pc; // @[Reg.scala 16:16]
+  reg [1:0] r_btb_updatePipe_bits_cfiType; // @[Reg.scala 16:16]
+  wire [17:0] pageHit_p = io_req_bits_addr[31:14]; // @[BTB.scala 213:39]
+  wire  _pageHit_T = pages_0 == pageHit_p; // @[BTB.scala 216:29]
+  wire  _pageHit_T_1 = pages_1 == pageHit_p; // @[BTB.scala 216:29]
+  wire  _pageHit_T_2 = pages_2 == pageHit_p; // @[BTB.scala 216:29]
+  wire  _pageHit_T_3 = pages_3 == pageHit_p; // @[BTB.scala 216:29]
+  wire  _pageHit_T_4 = pages_4 == pageHit_p; // @[BTB.scala 216:29]
+  wire  _pageHit_T_5 = pages_5 == pageHit_p; // @[BTB.scala 216:29]
+  wire [5:0] _pageHit_T_6 = {_pageHit_T_5,_pageHit_T_4,_pageHit_T_3,_pageHit_T_2,_pageHit_T_1,_pageHit_T}; // @[Cat.scala 31:58]
+  wire [5:0] pageHit = pageValid & _pageHit_T_6; // @[BTB.scala 216:15]
+  wire [12:0] idxHit_idx = io_req_bits_addr[13:1]; // @[BTB.scala 219:19]
+  wire  _idxHit_T = idxs_0 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_1 = idxs_1 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_2 = idxs_2 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_3 = idxs_3 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_4 = idxs_4 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_5 = idxs_5 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_6 = idxs_6 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_7 = idxs_7 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_8 = idxs_8 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_9 = idxs_9 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_10 = idxs_10 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_11 = idxs_11 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_12 = idxs_12 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_13 = idxs_13 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_14 = idxs_14 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_15 = idxs_15 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_16 = idxs_16 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_17 = idxs_17 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_18 = idxs_18 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_19 = idxs_19 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_20 = idxs_20 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_21 = idxs_21 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_22 = idxs_22 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_23 = idxs_23 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_24 = idxs_24 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_25 = idxs_25 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_26 = idxs_26 == idxHit_idx; // @[BTB.scala 220:16]
+  wire  _idxHit_T_27 = idxs_27 == idxHit_idx; // @[BTB.scala 220:16]
+  wire [6:0] idxHit_lo_lo = {_idxHit_T_6,_idxHit_T_5,_idxHit_T_4,_idxHit_T_3,_idxHit_T_2,_idxHit_T_1,_idxHit_T}; // @[Cat.scala 31:58]
+  wire [13:0] idxHit_lo = {_idxHit_T_13,_idxHit_T_12,_idxHit_T_11,_idxHit_T_10,_idxHit_T_9,_idxHit_T_8,_idxHit_T_7,
+    idxHit_lo_lo}; // @[Cat.scala 31:58]
+  wire [6:0] idxHit_hi_lo = {_idxHit_T_20,_idxHit_T_19,_idxHit_T_18,_idxHit_T_17,_idxHit_T_16,_idxHit_T_15,_idxHit_T_14}
+    ; // @[Cat.scala 31:58]
+  wire [27:0] _idxHit_T_28 = {_idxHit_T_27,_idxHit_T_26,_idxHit_T_25,_idxHit_T_24,_idxHit_T_23,_idxHit_T_22,_idxHit_T_21
+    ,idxHit_hi_lo,idxHit_lo}; // @[Cat.scala 31:58]
+  wire [27:0] idxHit = _idxHit_T_28 & isValid; // @[BTB.scala 220:32]
+  wire [17:0] updatePageHit_p = r_btb_updatePipe_bits_pc[31:14]; // @[BTB.scala 213:39]
+  wire  _updatePageHit_T = pages_0 == updatePageHit_p; // @[BTB.scala 216:29]
+  wire  _updatePageHit_T_1 = pages_1 == updatePageHit_p; // @[BTB.scala 216:29]
+  wire  _updatePageHit_T_2 = pages_2 == updatePageHit_p; // @[BTB.scala 216:29]
+  wire  _updatePageHit_T_3 = pages_3 == updatePageHit_p; // @[BTB.scala 216:29]
+  wire  _updatePageHit_T_4 = pages_4 == updatePageHit_p; // @[BTB.scala 216:29]
+  wire  _updatePageHit_T_5 = pages_5 == updatePageHit_p; // @[BTB.scala 216:29]
+  wire [5:0] _updatePageHit_T_6 = {_updatePageHit_T_5,_updatePageHit_T_4,_updatePageHit_T_3,_updatePageHit_T_2,
+    _updatePageHit_T_1,_updatePageHit_T}; // @[Cat.scala 31:58]
+  wire [5:0] updatePageHit = pageValid & _updatePageHit_T_6; // @[BTB.scala 216:15]
+  wire  updateHit = r_btb_updatePipe_bits_prediction_entry < 5'h1c; // @[BTB.scala 234:48]
+  wire  useUpdatePageHit = |updatePageHit; // @[BTB.scala 236:40]
+  wire  usePageHit = |pageHit; // @[BTB.scala 237:28]
+  wire  doIdxPageRepl = ~useUpdatePageHit; // @[BTB.scala 238:23]
+  reg [2:0] nextPageRepl; // @[BTB.scala 239:29]
+  wire [5:0] _idxPageRepl_T_2 = {pageHit[4:0],pageHit[5]}; // @[Cat.scala 31:58]
+  wire [7:0] _idxPageRepl_T_3 = 8'h1 << nextPageRepl; // @[OneHot.scala 57:35]
+  wire [7:0] _idxPageRepl_T_4 = usePageHit ? 8'h0 : _idxPageRepl_T_3; // @[BTB.scala 240:70]
+  wire [7:0] _GEN_430 = {{2'd0}, _idxPageRepl_T_2}; // @[BTB.scala 240:65]
+  wire [7:0] idxPageRepl = _GEN_430 | _idxPageRepl_T_4; // @[BTB.scala 240:65]
+  wire [7:0] idxPageUpdateOH = useUpdatePageHit ? {{2'd0}, updatePageHit} : idxPageRepl; // @[BTB.scala 241:28]
+  wire [3:0] idxPageUpdate_hi = idxPageUpdateOH[7:4]; // @[OneHot.scala 30:18]
+  wire [3:0] idxPageUpdate_lo = idxPageUpdateOH[3:0]; // @[OneHot.scala 31:18]
+  wire  _idxPageUpdate_T = |idxPageUpdate_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _idxPageUpdate_T_1 = idxPageUpdate_hi | idxPageUpdate_lo; // @[OneHot.scala 32:28]
+  wire [1:0] idxPageUpdate_hi_1 = _idxPageUpdate_T_1[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] idxPageUpdate_lo_1 = _idxPageUpdate_T_1[1:0]; // @[OneHot.scala 31:18]
+  wire  _idxPageUpdate_T_2 = |idxPageUpdate_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _idxPageUpdate_T_3 = idxPageUpdate_hi_1 | idxPageUpdate_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] idxPageUpdate = {_idxPageUpdate_T,_idxPageUpdate_T_2,_idxPageUpdate_T_3[1]}; // @[Cat.scala 31:58]
+  wire [7:0] idxPageReplEn = doIdxPageRepl ? idxPageRepl : 8'h0; // @[BTB.scala 243:26]
+  wire  samePage = updatePageHit_p == pageHit_p; // @[BTB.scala 245:45]
+  wire  doTgtPageRepl = ~samePage & ~usePageHit; // @[BTB.scala 246:33]
+  wire [5:0] _tgtPageRepl_T_2 = {idxPageUpdateOH[4:0],idxPageUpdateOH[5]}; // @[Cat.scala 31:58]
+  wire [7:0] tgtPageRepl = samePage ? idxPageUpdateOH : {{2'd0}, _tgtPageRepl_T_2}; // @[BTB.scala 247:24]
+  wire [7:0] _tgtPageUpdate_T = usePageHit ? 8'h0 : tgtPageRepl; // @[BTB.scala 248:45]
+  wire [7:0] _GEN_431 = {{2'd0}, pageHit}; // @[BTB.scala 248:40]
+  wire [7:0] _tgtPageUpdate_T_1 = _GEN_431 | _tgtPageUpdate_T; // @[BTB.scala 248:40]
+  wire [3:0] tgtPageUpdate_hi = _tgtPageUpdate_T_1[7:4]; // @[OneHot.scala 30:18]
+  wire [3:0] tgtPageUpdate_lo = _tgtPageUpdate_T_1[3:0]; // @[OneHot.scala 31:18]
+  wire  _tgtPageUpdate_T_2 = |tgtPageUpdate_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _tgtPageUpdate_T_3 = tgtPageUpdate_hi | tgtPageUpdate_lo; // @[OneHot.scala 32:28]
+  wire [1:0] tgtPageUpdate_hi_1 = _tgtPageUpdate_T_3[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] tgtPageUpdate_lo_1 = _tgtPageUpdate_T_3[1:0]; // @[OneHot.scala 31:18]
+  wire  _tgtPageUpdate_T_4 = |tgtPageUpdate_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _tgtPageUpdate_T_5 = tgtPageUpdate_hi_1 | tgtPageUpdate_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] tgtPageUpdate = {_tgtPageUpdate_T_2,_tgtPageUpdate_T_4,_tgtPageUpdate_T_5[1]}; // @[Cat.scala 31:58]
+  wire [7:0] tgtPageReplEn = doTgtPageRepl ? tgtPageRepl : 8'h0; // @[BTB.scala 249:26]
+  wire  both = doIdxPageRepl & doTgtPageRepl; // @[BTB.scala 252:30]
+  wire [1:0] _next_T = both ? 2'h2 : 2'h1; // @[BTB.scala 253:40]
+  wire [2:0] _GEN_432 = {{1'd0}, _next_T}; // @[BTB.scala 253:29]
+  wire [2:0] next = nextPageRepl + _GEN_432; // @[BTB.scala 253:29]
+  reg [26:0] state_reg; // @[Replacement.scala 168:70]
+  wire  waddr_left_subtree_older = state_reg[26]; // @[Replacement.scala 243:38]
+  wire [10:0] waddr_left_subtree_state = state_reg[25:15]; // @[package.scala 154:13]
+  wire [14:0] waddr_right_subtree_state = state_reg[14:0]; // @[Replacement.scala 245:38]
+  wire  waddr_left_subtree_older_1 = waddr_left_subtree_state[10]; // @[Replacement.scala 243:38]
+  wire [2:0] waddr_left_subtree_state_1 = waddr_left_subtree_state[9:7]; // @[package.scala 154:13]
+  wire [6:0] waddr_right_subtree_state_1 = waddr_left_subtree_state[6:0]; // @[Replacement.scala 245:38]
+  wire  waddr_left_subtree_older_2 = waddr_left_subtree_state_1[2]; // @[Replacement.scala 243:38]
+  wire  waddr_left_subtree_state_2 = waddr_left_subtree_state_1[1]; // @[package.scala 154:13]
+  wire  waddr_right_subtree_state_2 = waddr_left_subtree_state_1[0]; // @[Replacement.scala 245:38]
+  wire  _waddr_T_2 = waddr_left_subtree_older_2 ? waddr_left_subtree_state_2 : waddr_right_subtree_state_2; // @[Replacement.scala 250:16]
+  wire [1:0] _waddr_T_3 = {waddr_left_subtree_older_2,_waddr_T_2}; // @[Cat.scala 31:58]
+  wire  waddr_left_subtree_older_3 = waddr_right_subtree_state_1[6]; // @[Replacement.scala 243:38]
+  wire [2:0] waddr_left_subtree_state_3 = waddr_right_subtree_state_1[5:3]; // @[package.scala 154:13]
+  wire [2:0] waddr_right_subtree_state_3 = waddr_right_subtree_state_1[2:0]; // @[Replacement.scala 245:38]
+  wire  waddr_left_subtree_older_4 = waddr_left_subtree_state_3[2]; // @[Replacement.scala 243:38]
+  wire  waddr_left_subtree_state_4 = waddr_left_subtree_state_3[1]; // @[package.scala 154:13]
+  wire  waddr_right_subtree_state_4 = waddr_left_subtree_state_3[0]; // @[Replacement.scala 245:38]
+  wire  _waddr_T_6 = waddr_left_subtree_older_4 ? waddr_left_subtree_state_4 : waddr_right_subtree_state_4; // @[Replacement.scala 250:16]
+  wire [1:0] _waddr_T_7 = {waddr_left_subtree_older_4,_waddr_T_6}; // @[Cat.scala 31:58]
+  wire  waddr_left_subtree_older_5 = waddr_right_subtree_state_3[2]; // @[Replacement.scala 243:38]
+  wire  waddr_left_subtree_state_5 = waddr_right_subtree_state_3[1]; // @[package.scala 154:13]
+  wire  waddr_right_subtree_state_5 = waddr_right_subtree_state_3[0]; // @[Replacement.scala 245:38]
+  wire  _waddr_T_10 = waddr_left_subtree_older_5 ? waddr_left_subtree_state_5 : waddr_right_subtree_state_5; // @[Replacement.scala 250:16]
+  wire [1:0] _waddr_T_11 = {waddr_left_subtree_older_5,_waddr_T_10}; // @[Cat.scala 31:58]
+  wire [1:0] _waddr_T_12 = waddr_left_subtree_older_3 ? _waddr_T_7 : _waddr_T_11; // @[Replacement.scala 250:16]
+  wire [2:0] _waddr_T_13 = {waddr_left_subtree_older_3,_waddr_T_12}; // @[Cat.scala 31:58]
+  wire [2:0] _waddr_T_14 = waddr_left_subtree_older_1 ? {{1'd0}, _waddr_T_3} : _waddr_T_13; // @[Replacement.scala 250:16]
+  wire [3:0] _waddr_T_15 = {waddr_left_subtree_older_1,_waddr_T_14}; // @[Cat.scala 31:58]
+  wire  waddr_left_subtree_older_6 = waddr_right_subtree_state[14]; // @[Replacement.scala 243:38]
+  wire [6:0] waddr_left_subtree_state_6 = waddr_right_subtree_state[13:7]; // @[package.scala 154:13]
+  wire [6:0] waddr_right_subtree_state_6 = waddr_right_subtree_state[6:0]; // @[Replacement.scala 245:38]
+  wire  waddr_left_subtree_older_7 = waddr_left_subtree_state_6[6]; // @[Replacement.scala 243:38]
+  wire [2:0] waddr_left_subtree_state_7 = waddr_left_subtree_state_6[5:3]; // @[package.scala 154:13]
+  wire [2:0] waddr_right_subtree_state_7 = waddr_left_subtree_state_6[2:0]; // @[Replacement.scala 245:38]
+  wire  waddr_left_subtree_older_8 = waddr_left_subtree_state_7[2]; // @[Replacement.scala 243:38]
+  wire  waddr_left_subtree_state_8 = waddr_left_subtree_state_7[1]; // @[package.scala 154:13]
+  wire  waddr_right_subtree_state_8 = waddr_left_subtree_state_7[0]; // @[Replacement.scala 245:38]
+  wire  _waddr_T_18 = waddr_left_subtree_older_8 ? waddr_left_subtree_state_8 : waddr_right_subtree_state_8; // @[Replacement.scala 250:16]
+  wire [1:0] _waddr_T_19 = {waddr_left_subtree_older_8,_waddr_T_18}; // @[Cat.scala 31:58]
+  wire  waddr_left_subtree_older_9 = waddr_right_subtree_state_7[2]; // @[Replacement.scala 243:38]
+  wire  waddr_left_subtree_state_9 = waddr_right_subtree_state_7[1]; // @[package.scala 154:13]
+  wire  waddr_right_subtree_state_9 = waddr_right_subtree_state_7[0]; // @[Replacement.scala 245:38]
+  wire  _waddr_T_22 = waddr_left_subtree_older_9 ? waddr_left_subtree_state_9 : waddr_right_subtree_state_9; // @[Replacement.scala 250:16]
+  wire [1:0] _waddr_T_23 = {waddr_left_subtree_older_9,_waddr_T_22}; // @[Cat.scala 31:58]
+  wire [1:0] _waddr_T_24 = waddr_left_subtree_older_7 ? _waddr_T_19 : _waddr_T_23; // @[Replacement.scala 250:16]
+  wire [2:0] _waddr_T_25 = {waddr_left_subtree_older_7,_waddr_T_24}; // @[Cat.scala 31:58]
+  wire  waddr_left_subtree_older_10 = waddr_right_subtree_state_6[6]; // @[Replacement.scala 243:38]
+  wire [2:0] waddr_left_subtree_state_10 = waddr_right_subtree_state_6[5:3]; // @[package.scala 154:13]
+  wire [2:0] waddr_right_subtree_state_10 = waddr_right_subtree_state_6[2:0]; // @[Replacement.scala 245:38]
+  wire  waddr_left_subtree_older_11 = waddr_left_subtree_state_10[2]; // @[Replacement.scala 243:38]
+  wire  waddr_left_subtree_state_11 = waddr_left_subtree_state_10[1]; // @[package.scala 154:13]
+  wire  waddr_right_subtree_state_11 = waddr_left_subtree_state_10[0]; // @[Replacement.scala 245:38]
+  wire  _waddr_T_28 = waddr_left_subtree_older_11 ? waddr_left_subtree_state_11 : waddr_right_subtree_state_11; // @[Replacement.scala 250:16]
+  wire [1:0] _waddr_T_29 = {waddr_left_subtree_older_11,_waddr_T_28}; // @[Cat.scala 31:58]
+  wire  waddr_left_subtree_older_12 = waddr_right_subtree_state_10[2]; // @[Replacement.scala 243:38]
+  wire  waddr_left_subtree_state_12 = waddr_right_subtree_state_10[1]; // @[package.scala 154:13]
+  wire  waddr_right_subtree_state_12 = waddr_right_subtree_state_10[0]; // @[Replacement.scala 245:38]
+  wire  _waddr_T_32 = waddr_left_subtree_older_12 ? waddr_left_subtree_state_12 : waddr_right_subtree_state_12; // @[Replacement.scala 250:16]
+  wire [1:0] _waddr_T_33 = {waddr_left_subtree_older_12,_waddr_T_32}; // @[Cat.scala 31:58]
+  wire [1:0] _waddr_T_34 = waddr_left_subtree_older_10 ? _waddr_T_29 : _waddr_T_33; // @[Replacement.scala 250:16]
+  wire [2:0] _waddr_T_35 = {waddr_left_subtree_older_10,_waddr_T_34}; // @[Cat.scala 31:58]
+  wire [2:0] _waddr_T_36 = waddr_left_subtree_older_6 ? _waddr_T_25 : _waddr_T_35; // @[Replacement.scala 250:16]
+  wire [3:0] _waddr_T_37 = {waddr_left_subtree_older_6,_waddr_T_36}; // @[Cat.scala 31:58]
+  wire [3:0] _waddr_T_38 = waddr_left_subtree_older ? _waddr_T_15 : _waddr_T_37; // @[Replacement.scala 250:16]
+  wire [4:0] _waddr_T_39 = {waddr_left_subtree_older,_waddr_T_38}; // @[Cat.scala 31:58]
+  wire [4:0] waddr = updateHit ? r_btb_updatePipe_bits_prediction_entry : _waddr_T_39; // @[BTB.scala 258:18]
+  reg  r_respPipe_valid; // @[Valid.scala 127:22]
+  reg  r_respPipe_bits_taken; // @[Reg.scala 16:16]
+  reg [4:0] r_respPipe_bits_entry; // @[Reg.scala 16:16]
+  wire [4:0] state_reg_touch_way_sized = r_btb_updatePipe_valid ? waddr : r_respPipe_bits_entry; // @[BTB.scala 261:20]
+  wire  state_reg_set_left_older = ~state_reg_touch_way_sized[4]; // @[Replacement.scala 196:33]
+  wire  state_reg_set_left_older_1 = ~state_reg_touch_way_sized[3]; // @[Replacement.scala 196:33]
+  wire  state_reg_set_left_older_2 = ~state_reg_touch_way_sized[1]; // @[Replacement.scala 196:33]
+  wire  _state_reg_T_4 = ~state_reg_touch_way_sized[0]; // @[Replacement.scala 218:7]
+  wire  _state_reg_T_5 = state_reg_set_left_older_2 ? waddr_left_subtree_state_2 : _state_reg_T_4; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_9 = state_reg_set_left_older_2 ? _state_reg_T_4 : waddr_right_subtree_state_2; // @[Replacement.scala 206:16]
+  wire [2:0] _state_reg_T_10 = {state_reg_set_left_older_2,_state_reg_T_5,_state_reg_T_9}; // @[Cat.scala 31:58]
+  wire [2:0] _state_reg_T_11 = state_reg_set_left_older_1 ? waddr_left_subtree_state_1 : _state_reg_T_10; // @[Replacement.scala 203:16]
+  wire  state_reg_set_left_older_3 = ~state_reg_touch_way_sized[2]; // @[Replacement.scala 196:33]
+  wire  state_reg_set_left_older_4 = ~state_reg_touch_way_sized[1]; // @[Replacement.scala 196:33]
+  wire  _state_reg_T_16 = ~state_reg_touch_way_sized[0]; // @[Replacement.scala 218:7]
+  wire  _state_reg_T_17 = state_reg_set_left_older_4 ? waddr_left_subtree_state_4 : _state_reg_T_16; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_21 = state_reg_set_left_older_4 ? _state_reg_T_16 : waddr_right_subtree_state_4; // @[Replacement.scala 206:16]
+  wire [2:0] _state_reg_T_22 = {state_reg_set_left_older_4,_state_reg_T_17,_state_reg_T_21}; // @[Cat.scala 31:58]
+  wire [2:0] _state_reg_T_23 = state_reg_set_left_older_3 ? waddr_left_subtree_state_3 : _state_reg_T_22; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_28 = state_reg_set_left_older_4 ? waddr_left_subtree_state_5 : _state_reg_T_16; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_32 = state_reg_set_left_older_4 ? _state_reg_T_16 : waddr_right_subtree_state_5; // @[Replacement.scala 206:16]
+  wire [2:0] _state_reg_T_33 = {state_reg_set_left_older_4,_state_reg_T_28,_state_reg_T_32}; // @[Cat.scala 31:58]
+  wire [2:0] _state_reg_T_34 = state_reg_set_left_older_3 ? _state_reg_T_33 : waddr_right_subtree_state_3; // @[Replacement.scala 206:16]
+  wire [6:0] _state_reg_T_35 = {state_reg_set_left_older_3,_state_reg_T_23,_state_reg_T_34}; // @[Cat.scala 31:58]
+  wire [6:0] _state_reg_T_36 = state_reg_set_left_older_1 ? _state_reg_T_35 : waddr_right_subtree_state_1; // @[Replacement.scala 206:16]
+  wire [10:0] _state_reg_T_37 = {state_reg_set_left_older_1,_state_reg_T_11,_state_reg_T_36}; // @[Cat.scala 31:58]
+  wire [10:0] _state_reg_T_38 = state_reg_set_left_older ? waddr_left_subtree_state : _state_reg_T_37; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_45 = state_reg_set_left_older_4 ? waddr_left_subtree_state_8 : _state_reg_T_16; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_49 = state_reg_set_left_older_4 ? _state_reg_T_16 : waddr_right_subtree_state_8; // @[Replacement.scala 206:16]
+  wire [2:0] _state_reg_T_50 = {state_reg_set_left_older_4,_state_reg_T_45,_state_reg_T_49}; // @[Cat.scala 31:58]
+  wire [2:0] _state_reg_T_51 = state_reg_set_left_older_3 ? waddr_left_subtree_state_7 : _state_reg_T_50; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_56 = state_reg_set_left_older_4 ? waddr_left_subtree_state_9 : _state_reg_T_16; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_60 = state_reg_set_left_older_4 ? _state_reg_T_16 : waddr_right_subtree_state_9; // @[Replacement.scala 206:16]
+  wire [2:0] _state_reg_T_61 = {state_reg_set_left_older_4,_state_reg_T_56,_state_reg_T_60}; // @[Cat.scala 31:58]
+  wire [2:0] _state_reg_T_62 = state_reg_set_left_older_3 ? _state_reg_T_61 : waddr_right_subtree_state_7; // @[Replacement.scala 206:16]
+  wire [6:0] _state_reg_T_63 = {state_reg_set_left_older_3,_state_reg_T_51,_state_reg_T_62}; // @[Cat.scala 31:58]
+  wire [6:0] _state_reg_T_64 = state_reg_set_left_older_1 ? waddr_left_subtree_state_6 : _state_reg_T_63; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_70 = state_reg_set_left_older_4 ? waddr_left_subtree_state_11 : _state_reg_T_16; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_74 = state_reg_set_left_older_4 ? _state_reg_T_16 : waddr_right_subtree_state_11; // @[Replacement.scala 206:16]
+  wire [2:0] _state_reg_T_75 = {state_reg_set_left_older_4,_state_reg_T_70,_state_reg_T_74}; // @[Cat.scala 31:58]
+  wire [2:0] _state_reg_T_76 = state_reg_set_left_older_3 ? waddr_left_subtree_state_10 : _state_reg_T_75; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_81 = state_reg_set_left_older_4 ? waddr_left_subtree_state_12 : _state_reg_T_16; // @[Replacement.scala 203:16]
+  wire  _state_reg_T_85 = state_reg_set_left_older_4 ? _state_reg_T_16 : waddr_right_subtree_state_12; // @[Replacement.scala 206:16]
+  wire [2:0] _state_reg_T_86 = {state_reg_set_left_older_4,_state_reg_T_81,_state_reg_T_85}; // @[Cat.scala 31:58]
+  wire [2:0] _state_reg_T_87 = state_reg_set_left_older_3 ? _state_reg_T_86 : waddr_right_subtree_state_10; // @[Replacement.scala 206:16]
+  wire [6:0] _state_reg_T_88 = {state_reg_set_left_older_3,_state_reg_T_76,_state_reg_T_87}; // @[Cat.scala 31:58]
+  wire [6:0] _state_reg_T_89 = state_reg_set_left_older_1 ? _state_reg_T_88 : waddr_right_subtree_state_6; // @[Replacement.scala 206:16]
+  wire [14:0] _state_reg_T_90 = {state_reg_set_left_older_1,_state_reg_T_64,_state_reg_T_89}; // @[Cat.scala 31:58]
+  wire [14:0] _state_reg_T_91 = state_reg_set_left_older ? _state_reg_T_90 : waddr_right_subtree_state; // @[Replacement.scala 206:16]
+  wire [26:0] _state_reg_T_92 = {state_reg_set_left_older,_state_reg_T_38,_state_reg_T_91}; // @[Cat.scala 31:58]
+  wire [31:0] mask = 32'h1 << waddr; // @[OneHot.scala 57:35]
+  wire [3:0] _idxPages_T = idxPageUpdate + 3'h1; // @[BTB.scala 268:38]
+  wire [31:0] _GEN_433 = {{4'd0}, isValid}; // @[BTB.scala 271:55]
+  wire [31:0] _isValid_T = _GEN_433 | mask; // @[BTB.scala 271:55]
+  wire [31:0] _isValid_T_1 = ~mask; // @[BTB.scala 271:73]
+  wire [31:0] _isValid_T_2 = _GEN_433 & _isValid_T_1; // @[BTB.scala 271:71]
+  wire [31:0] _isValid_T_3 = r_btb_updatePipe_bits_isValid ? _isValid_T : _isValid_T_2; // @[BTB.scala 271:19]
+  wire  idxWritesEven = ~idxPageUpdate[0]; // @[BTB.scala 276:25]
+  wire [7:0] _T_5 = idxWritesEven ? idxPageReplEn : tgtPageReplEn; // @[BTB.scala 282:24]
+  wire [7:0] _T_12 = idxWritesEven ? tgtPageReplEn : idxPageReplEn; // @[BTB.scala 284:24]
+  wire [7:0] _GEN_435 = {{2'd0}, pageValid}; // @[BTB.scala 286:28]
+  wire [7:0] _pageValid_T = _GEN_435 | tgtPageReplEn; // @[BTB.scala 286:28]
+  wire [7:0] _pageValid_T_1 = _pageValid_T | idxPageReplEn; // @[BTB.scala 286:44]
+  wire [31:0] _GEN_338 = r_btb_updatePipe_valid ? _isValid_T_3 : {{4'd0}, isValid}; // @[BTB.scala 264:29 271:13 209:20]
+  wire [7:0] _GEN_373 = r_btb_updatePipe_valid ? _pageValid_T_1 : {{2'd0}, pageValid}; // @[BTB.scala 264:29 286:15 206:22]
+  wire [6:0] _io_resp_valid_T = {pageHit, 1'h0}; // @[BTB.scala 289:29]
+  wire [2:0] _io_resp_valid_T_29 = idxHit[0] ? idxPages_0 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_30 = idxHit[1] ? idxPages_1 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_31 = idxHit[2] ? idxPages_2 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_32 = idxHit[3] ? idxPages_3 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_33 = idxHit[4] ? idxPages_4 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_34 = idxHit[5] ? idxPages_5 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_35 = idxHit[6] ? idxPages_6 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_36 = idxHit[7] ? idxPages_7 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_37 = idxHit[8] ? idxPages_8 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_38 = idxHit[9] ? idxPages_9 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_39 = idxHit[10] ? idxPages_10 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_40 = idxHit[11] ? idxPages_11 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_41 = idxHit[12] ? idxPages_12 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_42 = idxHit[13] ? idxPages_13 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_43 = idxHit[14] ? idxPages_14 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_44 = idxHit[15] ? idxPages_15 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_45 = idxHit[16] ? idxPages_16 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_46 = idxHit[17] ? idxPages_17 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_47 = idxHit[18] ? idxPages_18 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_48 = idxHit[19] ? idxPages_19 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_49 = idxHit[20] ? idxPages_20 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_50 = idxHit[21] ? idxPages_21 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_51 = idxHit[22] ? idxPages_22 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_52 = idxHit[23] ? idxPages_23 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_53 = idxHit[24] ? idxPages_24 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_54 = idxHit[25] ? idxPages_25 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_55 = idxHit[26] ? idxPages_26 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_56 = idxHit[27] ? idxPages_27 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_57 = _io_resp_valid_T_29 | _io_resp_valid_T_30; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_58 = _io_resp_valid_T_57 | _io_resp_valid_T_31; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_59 = _io_resp_valid_T_58 | _io_resp_valid_T_32; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_60 = _io_resp_valid_T_59 | _io_resp_valid_T_33; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_61 = _io_resp_valid_T_60 | _io_resp_valid_T_34; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_62 = _io_resp_valid_T_61 | _io_resp_valid_T_35; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_63 = _io_resp_valid_T_62 | _io_resp_valid_T_36; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_64 = _io_resp_valid_T_63 | _io_resp_valid_T_37; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_65 = _io_resp_valid_T_64 | _io_resp_valid_T_38; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_66 = _io_resp_valid_T_65 | _io_resp_valid_T_39; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_67 = _io_resp_valid_T_66 | _io_resp_valid_T_40; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_68 = _io_resp_valid_T_67 | _io_resp_valid_T_41; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_69 = _io_resp_valid_T_68 | _io_resp_valid_T_42; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_70 = _io_resp_valid_T_69 | _io_resp_valid_T_43; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_71 = _io_resp_valid_T_70 | _io_resp_valid_T_44; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_72 = _io_resp_valid_T_71 | _io_resp_valid_T_45; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_73 = _io_resp_valid_T_72 | _io_resp_valid_T_46; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_74 = _io_resp_valid_T_73 | _io_resp_valid_T_47; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_75 = _io_resp_valid_T_74 | _io_resp_valid_T_48; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_76 = _io_resp_valid_T_75 | _io_resp_valid_T_49; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_77 = _io_resp_valid_T_76 | _io_resp_valid_T_50; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_78 = _io_resp_valid_T_77 | _io_resp_valid_T_51; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_79 = _io_resp_valid_T_78 | _io_resp_valid_T_52; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_80 = _io_resp_valid_T_79 | _io_resp_valid_T_53; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_81 = _io_resp_valid_T_80 | _io_resp_valid_T_54; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_82 = _io_resp_valid_T_81 | _io_resp_valid_T_55; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_valid_T_83 = _io_resp_valid_T_82 | _io_resp_valid_T_56; // @[Mux.scala 27:73]
+  wire [6:0] _io_resp_valid_T_84 = _io_resp_valid_T >> _io_resp_valid_T_83; // @[BTB.scala 289:34]
+  wire [2:0] _io_resp_bits_target_T_28 = idxHit[0] ? tgtPages_0 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_29 = idxHit[1] ? tgtPages_1 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_30 = idxHit[2] ? tgtPages_2 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_31 = idxHit[3] ? tgtPages_3 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_32 = idxHit[4] ? tgtPages_4 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_33 = idxHit[5] ? tgtPages_5 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_34 = idxHit[6] ? tgtPages_6 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_35 = idxHit[7] ? tgtPages_7 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_36 = idxHit[8] ? tgtPages_8 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_37 = idxHit[9] ? tgtPages_9 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_38 = idxHit[10] ? tgtPages_10 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_39 = idxHit[11] ? tgtPages_11 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_40 = idxHit[12] ? tgtPages_12 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_41 = idxHit[13] ? tgtPages_13 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_42 = idxHit[14] ? tgtPages_14 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_43 = idxHit[15] ? tgtPages_15 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_44 = idxHit[16] ? tgtPages_16 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_45 = idxHit[17] ? tgtPages_17 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_46 = idxHit[18] ? tgtPages_18 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_47 = idxHit[19] ? tgtPages_19 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_48 = idxHit[20] ? tgtPages_20 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_49 = idxHit[21] ? tgtPages_21 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_50 = idxHit[22] ? tgtPages_22 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_51 = idxHit[23] ? tgtPages_23 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_52 = idxHit[24] ? tgtPages_24 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_53 = idxHit[25] ? tgtPages_25 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_54 = idxHit[26] ? tgtPages_26 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_55 = idxHit[27] ? tgtPages_27 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_56 = _io_resp_bits_target_T_28 | _io_resp_bits_target_T_29; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_57 = _io_resp_bits_target_T_56 | _io_resp_bits_target_T_30; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_58 = _io_resp_bits_target_T_57 | _io_resp_bits_target_T_31; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_59 = _io_resp_bits_target_T_58 | _io_resp_bits_target_T_32; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_60 = _io_resp_bits_target_T_59 | _io_resp_bits_target_T_33; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_61 = _io_resp_bits_target_T_60 | _io_resp_bits_target_T_34; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_62 = _io_resp_bits_target_T_61 | _io_resp_bits_target_T_35; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_63 = _io_resp_bits_target_T_62 | _io_resp_bits_target_T_36; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_64 = _io_resp_bits_target_T_63 | _io_resp_bits_target_T_37; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_65 = _io_resp_bits_target_T_64 | _io_resp_bits_target_T_38; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_66 = _io_resp_bits_target_T_65 | _io_resp_bits_target_T_39; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_67 = _io_resp_bits_target_T_66 | _io_resp_bits_target_T_40; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_68 = _io_resp_bits_target_T_67 | _io_resp_bits_target_T_41; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_69 = _io_resp_bits_target_T_68 | _io_resp_bits_target_T_42; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_70 = _io_resp_bits_target_T_69 | _io_resp_bits_target_T_43; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_71 = _io_resp_bits_target_T_70 | _io_resp_bits_target_T_44; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_72 = _io_resp_bits_target_T_71 | _io_resp_bits_target_T_45; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_73 = _io_resp_bits_target_T_72 | _io_resp_bits_target_T_46; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_74 = _io_resp_bits_target_T_73 | _io_resp_bits_target_T_47; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_75 = _io_resp_bits_target_T_74 | _io_resp_bits_target_T_48; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_76 = _io_resp_bits_target_T_75 | _io_resp_bits_target_T_49; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_77 = _io_resp_bits_target_T_76 | _io_resp_bits_target_T_50; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_78 = _io_resp_bits_target_T_77 | _io_resp_bits_target_T_51; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_79 = _io_resp_bits_target_T_78 | _io_resp_bits_target_T_52; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_80 = _io_resp_bits_target_T_79 | _io_resp_bits_target_T_53; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_81 = _io_resp_bits_target_T_80 | _io_resp_bits_target_T_54; // @[Mux.scala 27:73]
+  wire [2:0] _io_resp_bits_target_T_82 = _io_resp_bits_target_T_81 | _io_resp_bits_target_T_55; // @[Mux.scala 27:73]
+  wire [17:0] _io_resp_bits_target_T_84 = _io_resp_bits_target_T_82 == 3'h1 ? pagesMasked_1 : pagesMasked_0; // @[package.scala 32:76]
+  wire [17:0] _io_resp_bits_target_T_86 = _io_resp_bits_target_T_82 == 3'h2 ? pagesMasked_2 : _io_resp_bits_target_T_84; // @[package.scala 32:76]
+  wire [17:0] _io_resp_bits_target_T_88 = _io_resp_bits_target_T_82 == 3'h3 ? pagesMasked_3 : _io_resp_bits_target_T_86; // @[package.scala 32:76]
+  wire [17:0] _io_resp_bits_target_T_90 = _io_resp_bits_target_T_82 == 3'h4 ? pagesMasked_4 : _io_resp_bits_target_T_88; // @[package.scala 32:76]
+  wire [17:0] _io_resp_bits_target_T_92 = _io_resp_bits_target_T_82 == 3'h5 ? pagesMasked_5 : _io_resp_bits_target_T_90; // @[package.scala 32:76]
+  wire [17:0] _io_resp_bits_target_T_94 = _io_resp_bits_target_T_82 == 3'h6 ? pagesMasked_4 : _io_resp_bits_target_T_92; // @[package.scala 32:76]
+  wire [17:0] _io_resp_bits_target_T_96 = _io_resp_bits_target_T_82 == 3'h7 ? pagesMasked_5 : _io_resp_bits_target_T_94; // @[package.scala 32:76]
+  wire [12:0] _io_resp_bits_target_T_125 = idxHit[0] ? tgts_0 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_126 = idxHit[1] ? tgts_1 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_127 = idxHit[2] ? tgts_2 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_128 = idxHit[3] ? tgts_3 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_129 = idxHit[4] ? tgts_4 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_130 = idxHit[5] ? tgts_5 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_131 = idxHit[6] ? tgts_6 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_132 = idxHit[7] ? tgts_7 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_133 = idxHit[8] ? tgts_8 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_134 = idxHit[9] ? tgts_9 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_135 = idxHit[10] ? tgts_10 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_136 = idxHit[11] ? tgts_11 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_137 = idxHit[12] ? tgts_12 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_138 = idxHit[13] ? tgts_13 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_139 = idxHit[14] ? tgts_14 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_140 = idxHit[15] ? tgts_15 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_141 = idxHit[16] ? tgts_16 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_142 = idxHit[17] ? tgts_17 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_143 = idxHit[18] ? tgts_18 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_144 = idxHit[19] ? tgts_19 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_145 = idxHit[20] ? tgts_20 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_146 = idxHit[21] ? tgts_21 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_147 = idxHit[22] ? tgts_22 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_148 = idxHit[23] ? tgts_23 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_149 = idxHit[24] ? tgts_24 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_150 = idxHit[25] ? tgts_25 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_151 = idxHit[26] ? tgts_26 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_152 = idxHit[27] ? tgts_27 : 13'h0; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_153 = _io_resp_bits_target_T_125 | _io_resp_bits_target_T_126; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_154 = _io_resp_bits_target_T_153 | _io_resp_bits_target_T_127; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_155 = _io_resp_bits_target_T_154 | _io_resp_bits_target_T_128; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_156 = _io_resp_bits_target_T_155 | _io_resp_bits_target_T_129; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_157 = _io_resp_bits_target_T_156 | _io_resp_bits_target_T_130; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_158 = _io_resp_bits_target_T_157 | _io_resp_bits_target_T_131; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_159 = _io_resp_bits_target_T_158 | _io_resp_bits_target_T_132; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_160 = _io_resp_bits_target_T_159 | _io_resp_bits_target_T_133; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_161 = _io_resp_bits_target_T_160 | _io_resp_bits_target_T_134; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_162 = _io_resp_bits_target_T_161 | _io_resp_bits_target_T_135; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_163 = _io_resp_bits_target_T_162 | _io_resp_bits_target_T_136; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_164 = _io_resp_bits_target_T_163 | _io_resp_bits_target_T_137; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_165 = _io_resp_bits_target_T_164 | _io_resp_bits_target_T_138; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_166 = _io_resp_bits_target_T_165 | _io_resp_bits_target_T_139; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_167 = _io_resp_bits_target_T_166 | _io_resp_bits_target_T_140; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_168 = _io_resp_bits_target_T_167 | _io_resp_bits_target_T_141; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_169 = _io_resp_bits_target_T_168 | _io_resp_bits_target_T_142; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_170 = _io_resp_bits_target_T_169 | _io_resp_bits_target_T_143; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_171 = _io_resp_bits_target_T_170 | _io_resp_bits_target_T_144; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_172 = _io_resp_bits_target_T_171 | _io_resp_bits_target_T_145; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_173 = _io_resp_bits_target_T_172 | _io_resp_bits_target_T_146; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_174 = _io_resp_bits_target_T_173 | _io_resp_bits_target_T_147; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_175 = _io_resp_bits_target_T_174 | _io_resp_bits_target_T_148; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_176 = _io_resp_bits_target_T_175 | _io_resp_bits_target_T_149; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_177 = _io_resp_bits_target_T_176 | _io_resp_bits_target_T_150; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_178 = _io_resp_bits_target_T_177 | _io_resp_bits_target_T_151; // @[Mux.scala 27:73]
+  wire [12:0] _io_resp_bits_target_T_179 = _io_resp_bits_target_T_178 | _io_resp_bits_target_T_152; // @[Mux.scala 27:73]
+  wire [13:0] _io_resp_bits_target_T_180 = {_io_resp_bits_target_T_179, 1'h0}; // @[BTB.scala 291:88]
+  wire [31:0] _io_resp_bits_target_T_181 = {_io_resp_bits_target_T_96,_io_resp_bits_target_T_180}; // @[Cat.scala 31:58]
+  wire [11:0] io_resp_bits_entry_hi = idxHit[27:16]; // @[OneHot.scala 30:18]
+  wire [15:0] io_resp_bits_entry_lo = idxHit[15:0]; // @[OneHot.scala 31:18]
+  wire  _io_resp_bits_entry_T = |io_resp_bits_entry_hi; // @[OneHot.scala 32:14]
+  wire [15:0] _GEN_436 = {{4'd0}, io_resp_bits_entry_hi}; // @[OneHot.scala 32:28]
+  wire [15:0] _io_resp_bits_entry_T_1 = _GEN_436 | io_resp_bits_entry_lo; // @[OneHot.scala 32:28]
+  wire [7:0] io_resp_bits_entry_hi_1 = _io_resp_bits_entry_T_1[15:8]; // @[OneHot.scala 30:18]
+  wire [7:0] io_resp_bits_entry_lo_1 = _io_resp_bits_entry_T_1[7:0]; // @[OneHot.scala 31:18]
+  wire  _io_resp_bits_entry_T_2 = |io_resp_bits_entry_hi_1; // @[OneHot.scala 32:14]
+  wire [7:0] _io_resp_bits_entry_T_3 = io_resp_bits_entry_hi_1 | io_resp_bits_entry_lo_1; // @[OneHot.scala 32:28]
+  wire [3:0] io_resp_bits_entry_hi_2 = _io_resp_bits_entry_T_3[7:4]; // @[OneHot.scala 30:18]
+  wire [3:0] io_resp_bits_entry_lo_2 = _io_resp_bits_entry_T_3[3:0]; // @[OneHot.scala 31:18]
+  wire  _io_resp_bits_entry_T_4 = |io_resp_bits_entry_hi_2; // @[OneHot.scala 32:14]
+  wire [3:0] _io_resp_bits_entry_T_5 = io_resp_bits_entry_hi_2 | io_resp_bits_entry_lo_2; // @[OneHot.scala 32:28]
+  wire [1:0] io_resp_bits_entry_hi_3 = _io_resp_bits_entry_T_5[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] io_resp_bits_entry_lo_3 = _io_resp_bits_entry_T_5[1:0]; // @[OneHot.scala 31:18]
+  wire  _io_resp_bits_entry_T_6 = |io_resp_bits_entry_hi_3; // @[OneHot.scala 32:14]
+  wire [1:0] _io_resp_bits_entry_T_7 = io_resp_bits_entry_hi_3 | io_resp_bits_entry_lo_3; // @[OneHot.scala 32:28]
+  wire [3:0] _io_resp_bits_entry_T_11 = {_io_resp_bits_entry_T_2,_io_resp_bits_entry_T_4,_io_resp_bits_entry_T_6,
+    _io_resp_bits_entry_T_7[1]}; // @[Cat.scala 31:58]
+  wire  _io_resp_bits_bridx_T_43 = idxHit[15] & brIdx_15; // @[Mux.scala 27:73]
+  wire  _io_resp_bits_bridx_T_70 = idxHit[0] & brIdx_0 | idxHit[1] & brIdx_1 | idxHit[2] & brIdx_2 | idxHit[3] & brIdx_3
+     | idxHit[4] & brIdx_4 | idxHit[5] & brIdx_5 | idxHit[6] & brIdx_6 | idxHit[7] & brIdx_7 | idxHit[8] & brIdx_8 |
+    idxHit[9] & brIdx_9 | idxHit[10] & brIdx_10 | idxHit[11] & brIdx_11 | idxHit[12] & brIdx_12 | idxHit[13] & brIdx_13
+     | idxHit[14] & brIdx_14 | _io_resp_bits_bridx_T_43; // @[Mux.scala 27:73]
+  wire  leftOne = idxHit[0]; // @[Misc.scala 180:37]
+  wire  leftOne_1 = idxHit[1]; // @[Misc.scala 180:37]
+  wire  rightOne = idxHit[2]; // @[Misc.scala 181:39]
+  wire  rightOne_1 = leftOne_1 | rightOne; // @[Misc.scala 182:16]
+  wire  rightTwo = leftOne_1 & rightOne; // @[Misc.scala 182:61]
+  wire  leftOne_2 = leftOne | rightOne_1; // @[Misc.scala 182:16]
+  wire  leftTwo = rightTwo | leftOne & rightOne_1; // @[Misc.scala 182:49]
+  wire  leftOne_3 = idxHit[3]; // @[Misc.scala 180:37]
+  wire  rightOne_2 = idxHit[4]; // @[Misc.scala 181:39]
+  wire  leftOne_4 = leftOne_3 | rightOne_2; // @[Misc.scala 182:16]
+  wire  leftTwo_1 = leftOne_3 & rightOne_2; // @[Misc.scala 182:61]
+  wire  leftOne_5 = idxHit[5]; // @[Misc.scala 180:37]
+  wire  rightOne_3 = idxHit[6]; // @[Misc.scala 181:39]
+  wire  rightOne_4 = leftOne_5 | rightOne_3; // @[Misc.scala 182:16]
+  wire  rightTwo_1 = leftOne_5 & rightOne_3; // @[Misc.scala 182:61]
+  wire  rightOne_5 = leftOne_4 | rightOne_4; // @[Misc.scala 182:16]
+  wire  rightTwo_2 = leftTwo_1 | rightTwo_1 | leftOne_4 & rightOne_4; // @[Misc.scala 182:49]
+  wire  leftOne_6 = leftOne_2 | rightOne_5; // @[Misc.scala 182:16]
+  wire  leftTwo_2 = leftTwo | rightTwo_2 | leftOne_2 & rightOne_5; // @[Misc.scala 182:49]
+  wire  leftOne_7 = idxHit[7]; // @[Misc.scala 180:37]
+  wire  leftOne_8 = idxHit[8]; // @[Misc.scala 180:37]
+  wire  rightOne_6 = idxHit[9]; // @[Misc.scala 181:39]
+  wire  rightOne_7 = leftOne_8 | rightOne_6; // @[Misc.scala 182:16]
+  wire  rightTwo_3 = leftOne_8 & rightOne_6; // @[Misc.scala 182:61]
+  wire  leftOne_9 = leftOne_7 | rightOne_7; // @[Misc.scala 182:16]
+  wire  leftTwo_3 = rightTwo_3 | leftOne_7 & rightOne_7; // @[Misc.scala 182:49]
+  wire  leftOne_10 = idxHit[10]; // @[Misc.scala 180:37]
+  wire  rightOne_8 = idxHit[11]; // @[Misc.scala 181:39]
+  wire  leftOne_11 = leftOne_10 | rightOne_8; // @[Misc.scala 182:16]
+  wire  leftTwo_4 = leftOne_10 & rightOne_8; // @[Misc.scala 182:61]
+  wire  leftOne_12 = idxHit[12]; // @[Misc.scala 180:37]
+  wire  rightOne_9 = idxHit[13]; // @[Misc.scala 181:39]
+  wire  rightOne_10 = leftOne_12 | rightOne_9; // @[Misc.scala 182:16]
+  wire  rightTwo_4 = leftOne_12 & rightOne_9; // @[Misc.scala 182:61]
+  wire  rightOne_11 = leftOne_11 | rightOne_10; // @[Misc.scala 182:16]
+  wire  rightTwo_5 = leftTwo_4 | rightTwo_4 | leftOne_11 & rightOne_10; // @[Misc.scala 182:49]
+  wire  rightOne_12 = leftOne_9 | rightOne_11; // @[Misc.scala 182:16]
+  wire  rightTwo_6 = leftTwo_3 | rightTwo_5 | leftOne_9 & rightOne_11; // @[Misc.scala 182:49]
+  wire  leftOne_13 = leftOne_6 | rightOne_12; // @[Misc.scala 182:16]
+  wire  leftTwo_5 = leftTwo_2 | rightTwo_6 | leftOne_6 & rightOne_12; // @[Misc.scala 182:49]
+  wire  leftOne_14 = idxHit[14]; // @[Misc.scala 180:37]
+  wire  leftOne_15 = idxHit[15]; // @[Misc.scala 180:37]
+  wire  rightOne_13 = idxHit[16]; // @[Misc.scala 181:39]
+  wire  rightOne_14 = leftOne_15 | rightOne_13; // @[Misc.scala 182:16]
+  wire  rightTwo_7 = leftOne_15 & rightOne_13; // @[Misc.scala 182:61]
+  wire  leftOne_16 = leftOne_14 | rightOne_14; // @[Misc.scala 182:16]
+  wire  leftTwo_6 = rightTwo_7 | leftOne_14 & rightOne_14; // @[Misc.scala 182:49]
+  wire  leftOne_17 = idxHit[17]; // @[Misc.scala 180:37]
+  wire  rightOne_15 = idxHit[18]; // @[Misc.scala 181:39]
+  wire  leftOne_18 = leftOne_17 | rightOne_15; // @[Misc.scala 182:16]
+  wire  leftTwo_7 = leftOne_17 & rightOne_15; // @[Misc.scala 182:61]
+  wire  leftOne_19 = idxHit[19]; // @[Misc.scala 180:37]
+  wire  rightOne_16 = idxHit[20]; // @[Misc.scala 181:39]
+  wire  rightOne_17 = leftOne_19 | rightOne_16; // @[Misc.scala 182:16]
+  wire  rightTwo_8 = leftOne_19 & rightOne_16; // @[Misc.scala 182:61]
+  wire  rightOne_18 = leftOne_18 | rightOne_17; // @[Misc.scala 182:16]
+  wire  rightTwo_9 = leftTwo_7 | rightTwo_8 | leftOne_18 & rightOne_17; // @[Misc.scala 182:49]
+  wire  leftOne_20 = leftOne_16 | rightOne_18; // @[Misc.scala 182:16]
+  wire  leftTwo_8 = leftTwo_6 | rightTwo_9 | leftOne_16 & rightOne_18; // @[Misc.scala 182:49]
+  wire  leftOne_21 = idxHit[21]; // @[Misc.scala 180:37]
+  wire  leftOne_22 = idxHit[22]; // @[Misc.scala 180:37]
+  wire  rightOne_19 = idxHit[23]; // @[Misc.scala 181:39]
+  wire  rightOne_20 = leftOne_22 | rightOne_19; // @[Misc.scala 182:16]
+  wire  rightTwo_10 = leftOne_22 & rightOne_19; // @[Misc.scala 182:61]
+  wire  leftOne_23 = leftOne_21 | rightOne_20; // @[Misc.scala 182:16]
+  wire  leftTwo_9 = rightTwo_10 | leftOne_21 & rightOne_20; // @[Misc.scala 182:49]
+  wire  leftOne_24 = idxHit[24]; // @[Misc.scala 180:37]
+  wire  rightOne_21 = idxHit[25]; // @[Misc.scala 181:39]
+  wire  leftOne_25 = leftOne_24 | rightOne_21; // @[Misc.scala 182:16]
+  wire  leftTwo_10 = leftOne_24 & rightOne_21; // @[Misc.scala 182:61]
+  wire  leftOne_26 = idxHit[26]; // @[Misc.scala 180:37]
+  wire  rightOne_22 = idxHit[27]; // @[Misc.scala 181:39]
+  wire  rightOne_23 = leftOne_26 | rightOne_22; // @[Misc.scala 182:16]
+  wire  rightTwo_11 = leftOne_26 & rightOne_22; // @[Misc.scala 182:61]
+  wire  rightOne_24 = leftOne_25 | rightOne_23; // @[Misc.scala 182:16]
+  wire  rightTwo_12 = leftTwo_10 | rightTwo_11 | leftOne_25 & rightOne_23; // @[Misc.scala 182:49]
+  wire  rightOne_25 = leftOne_23 | rightOne_24; // @[Misc.scala 182:16]
+  wire  rightTwo_13 = leftTwo_9 | rightTwo_12 | leftOne_23 & rightOne_24; // @[Misc.scala 182:49]
+  wire  rightOne_26 = leftOne_20 | rightOne_25; // @[Misc.scala 182:16]
+  wire  rightTwo_14 = leftTwo_8 | rightTwo_13 | leftOne_20 & rightOne_25; // @[Misc.scala 182:49]
+  wire  _T_128 = leftTwo_5 | rightTwo_14 | leftOne_13 & rightOne_26; // @[Misc.scala 182:49]
+  wire [27:0] _isValid_T_4 = ~idxHit; // @[BTB.scala 299:26]
+  wire [27:0] _isValid_T_5 = isValid & _isValid_T_4; // @[BTB.scala 299:24]
+  wire [31:0] _GEN_374 = _T_128 ? {{4'd0}, _isValid_T_5} : _GEN_338; // @[BTB.scala 298:37 299:13]
+  wire [31:0] _GEN_375 = io_flush ? 32'h0 : _GEN_374; // @[BTB.scala 301:19 302:13]
+  reg [7:0] history; // @[BTB.scala 119:24]
+  reg [9:0] reset_waddr; // @[BTB.scala 121:36]
+  wire  resetting = ~reset_waddr[9]; // @[BTB.scala 122:27]
+  wire [9:0] _reset_waddr_T_1 = reset_waddr + 10'h1; // @[BTB.scala 126:49]
+  wire [29:0] waddr_hi = io_bht_update_bits_pc[31:2]; // @[BTB.scala 87:21]
+  wire [8:0] _GEN_437 = {{7'd0}, waddr_hi[10:9]}; // @[BTB.scala 88:42]
+  wire [8:0] _waddr_T_43 = waddr_hi[8:0] ^ _GEN_437; // @[BTB.scala 88:42]
+  wire [15:0] _waddr_T_44 = 8'hdd * io_bht_update_bits_prediction_history; // @[BTB.scala 84:12]
+  wire [8:0] _waddr_T_46 = {_waddr_T_44[7:5], 6'h0}; // @[BTB.scala 90:44]
+  wire [8:0] _waddr_T_47 = _waddr_T_43 ^ _waddr_T_46; // @[BTB.scala 90:20]
+  wire [9:0] _GEN_383 = ~resetting ? {{1'd0}, _waddr_T_47} : reset_waddr; // @[BTB.scala 100:23 101:13]
+  wire [9:0] _GEN_388 = io_bht_update_bits_branch ? _GEN_383 : reset_waddr; // @[BTB.scala 313:40]
+  wire [9:0] waddr_1 = io_bht_update_valid ? _GEN_388 : reset_waddr; // @[BTB.scala 312:32]
+  wire  _GEN_387 = io_bht_update_bits_branch | resetting; // @[BTB.scala 313:40 99:9]
+  wire  _GEN_384 = ~resetting & io_bht_update_bits_taken; // @[BTB.scala 100:23 102:13]
+  wire  _GEN_389 = io_bht_update_bits_branch & _GEN_384; // @[BTB.scala 313:40]
+  wire  _isBranch_T = cfiType_0 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_1 = cfiType_1 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_2 = cfiType_2 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_3 = cfiType_3 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_4 = cfiType_4 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_5 = cfiType_5 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_6 = cfiType_6 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_7 = cfiType_7 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_8 = cfiType_8 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_9 = cfiType_9 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_10 = cfiType_10 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_11 = cfiType_11 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_12 = cfiType_12 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_13 = cfiType_13 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_14 = cfiType_14 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_15 = cfiType_15 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_16 = cfiType_16 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_17 = cfiType_17 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_18 = cfiType_18 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_19 = cfiType_19 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_20 = cfiType_20 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_21 = cfiType_21 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_22 = cfiType_22 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_23 = cfiType_23 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_24 = cfiType_24 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_25 = cfiType_25 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_26 = cfiType_26 == 2'h0; // @[BTB.scala 307:44]
+  wire  _isBranch_T_27 = cfiType_27 == 2'h0; // @[BTB.scala 307:44]
+  wire [6:0] isBranch_lo_lo = {_isBranch_T_6,_isBranch_T_5,_isBranch_T_4,_isBranch_T_3,_isBranch_T_2,_isBranch_T_1,
+    _isBranch_T}; // @[Cat.scala 31:58]
+  wire [13:0] isBranch_lo = {_isBranch_T_13,_isBranch_T_12,_isBranch_T_11,_isBranch_T_10,_isBranch_T_9,_isBranch_T_8,
+    _isBranch_T_7,isBranch_lo_lo}; // @[Cat.scala 31:58]
+  wire [6:0] isBranch_hi_lo = {_isBranch_T_20,_isBranch_T_19,_isBranch_T_18,_isBranch_T_17,_isBranch_T_16,_isBranch_T_15
+    ,_isBranch_T_14}; // @[Cat.scala 31:58]
+  wire [27:0] _isBranch_T_28 = {_isBranch_T_27,_isBranch_T_26,_isBranch_T_25,_isBranch_T_24,_isBranch_T_23,
+    _isBranch_T_22,_isBranch_T_21,isBranch_hi_lo,isBranch_lo}; // @[Cat.scala 31:58]
+  wire [27:0] _isBranch_T_29 = idxHit & _isBranch_T_28; // @[BTB.scala 307:28]
+  wire  isBranch = |_isBranch_T_29; // @[BTB.scala 307:72]
+  wire [29:0] res_res_value_hi = io_req_bits_addr[31:2]; // @[BTB.scala 87:21]
+  wire [8:0] _GEN_438 = {{7'd0}, res_res_value_hi[10:9]}; // @[BTB.scala 88:42]
+  wire [8:0] _res_res_value_T_3 = res_res_value_hi[8:0] ^ _GEN_438; // @[BTB.scala 88:42]
+  wire [15:0] _res_res_value_T_4 = 8'hdd * history; // @[BTB.scala 84:12]
+  wire [8:0] _res_res_value_T_6 = {_res_res_value_T_4[7:5], 6'h0}; // @[BTB.scala 90:44]
+  wire  res_value = resetting ? 1'h0 : table__res_res_value_MPORT_data; // @[BTB.scala 94:21]
+  wire [7:0] _history_T_1 = {io_bht_advance_bits_bht_value,history[7:1]}; // @[Cat.scala 31:58]
+  wire [7:0] _GEN_382 = io_bht_advance_valid ? _history_T_1 : history; // @[BTB.scala 115:13 119:24 309:33]
+  wire [7:0] _history_T_3 = {io_bht_update_bits_taken,io_bht_update_bits_prediction_history[7:1]}; // @[Cat.scala 31:58]
+  reg [2:0] count; // @[BTB.scala 58:30]
+  reg [2:0] pos; // @[BTB.scala 59:28]
+  reg [31:0] stack_0; // @[BTB.scala 60:26]
+  reg [31:0] stack_1; // @[BTB.scala 60:26]
+  reg [31:0] stack_2; // @[BTB.scala 60:26]
+  reg [31:0] stack_3; // @[BTB.scala 60:26]
+  reg [31:0] stack_4; // @[BTB.scala 60:26]
+  reg [31:0] stack_5; // @[BTB.scala 60:26]
+  wire  _doPeek_T = cfiType_0 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_1 = cfiType_1 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_2 = cfiType_2 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_3 = cfiType_3 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_4 = cfiType_4 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_5 = cfiType_5 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_6 = cfiType_6 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_7 = cfiType_7 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_8 = cfiType_8 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_9 = cfiType_9 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_10 = cfiType_10 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_11 = cfiType_11 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_12 = cfiType_12 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_13 = cfiType_13 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_14 = cfiType_14 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_15 = cfiType_15 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_16 = cfiType_16 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_17 = cfiType_17 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_18 = cfiType_18 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_19 = cfiType_19 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_20 = cfiType_20 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_21 = cfiType_21 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_22 = cfiType_22 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_23 = cfiType_23 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_24 = cfiType_24 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_25 = cfiType_25 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_26 = cfiType_26 == 2'h3; // @[BTB.scala 328:42]
+  wire  _doPeek_T_27 = cfiType_27 == 2'h3; // @[BTB.scala 328:42]
+  wire [6:0] doPeek_lo_lo = {_doPeek_T_6,_doPeek_T_5,_doPeek_T_4,_doPeek_T_3,_doPeek_T_2,_doPeek_T_1,_doPeek_T}; // @[Cat.scala 31:58]
+  wire [13:0] doPeek_lo = {_doPeek_T_13,_doPeek_T_12,_doPeek_T_11,_doPeek_T_10,_doPeek_T_9,_doPeek_T_8,_doPeek_T_7,
+    doPeek_lo_lo}; // @[Cat.scala 31:58]
+  wire [6:0] doPeek_hi_lo = {_doPeek_T_20,_doPeek_T_19,_doPeek_T_18,_doPeek_T_17,_doPeek_T_16,_doPeek_T_15,_doPeek_T_14}
+    ; // @[Cat.scala 31:58]
+  wire [27:0] _doPeek_T_28 = {_doPeek_T_27,_doPeek_T_26,_doPeek_T_25,_doPeek_T_24,_doPeek_T_23,_doPeek_T_22,_doPeek_T_21
+    ,doPeek_hi_lo,doPeek_lo}; // @[Cat.scala 31:58]
+  wire [27:0] _doPeek_T_29 = idxHit & _doPeek_T_28; // @[BTB.scala 328:26]
+  wire  doPeek = |_doPeek_T_29; // @[BTB.scala 328:67]
+  wire  _io_ras_head_valid_T = count == 3'h0; // @[BTB.scala 56:29]
+  wire  _io_ras_head_valid_T_1 = ~_io_ras_head_valid_T; // @[BTB.scala 329:26]
+  wire [31:0] _GEN_397 = 3'h1 == pos ? stack_1 : stack_0; // @[BTB.scala 330:{22,22}]
+  wire [31:0] _GEN_398 = 3'h2 == pos ? stack_2 : _GEN_397; // @[BTB.scala 330:{22,22}]
+  wire [31:0] _GEN_399 = 3'h3 == pos ? stack_3 : _GEN_398; // @[BTB.scala 330:{22,22}]
+  wire [31:0] _GEN_400 = 3'h4 == pos ? stack_4 : _GEN_399; // @[BTB.scala 330:{22,22}]
+  wire [31:0] _GEN_401 = 3'h5 == pos ? stack_5 : _GEN_400; // @[BTB.scala 330:{22,22}]
+  wire [2:0] _count_T_1 = count + 3'h1; // @[BTB.scala 45:42]
+  wire [2:0] _nextPos_T_3 = pos + 3'h1; // @[BTB.scala 46:62]
+  wire [2:0] nextPos = pos < 3'h5 ? _nextPos_T_3 : 3'h0; // @[BTB.scala 46:22]
+  wire [2:0] _count_T_3 = count - 3'h1; // @[BTB.scala 52:20]
+  wire [2:0] _pos_T_3 = pos - 3'h1; // @[BTB.scala 53:50]
+  wire [2:0] _pos_T_4 = pos > 3'h0 ? _pos_T_3 : 3'h5; // @[BTB.scala 53:15]
+  wire [2:0] _GEN_410 = _io_ras_head_valid_T_1 ? _count_T_3 : count; // @[BTB.scala 51:37 52:11 58:30]
+  wire [2:0] _GEN_411 = _io_ras_head_valid_T_1 ? _pos_T_4 : pos; // @[BTB.scala 51:37 53:9 59:28]
+  assign table__res_res_value_MPORT_en = 1'h1;
+  assign table__res_res_value_MPORT_addr = _res_res_value_T_3 ^ _res_res_value_T_6;
+  assign table__res_res_value_MPORT_data = table_[table__res_res_value_MPORT_addr]; // @[BTB.scala 118:26]
+  assign table__MPORT_data = io_bht_update_valid & _GEN_389;
+  assign table__MPORT_addr = waddr_1[8:0];
+  assign table__MPORT_mask = 1'h1;
+  assign table__MPORT_en = io_bht_update_valid ? _GEN_387 : resetting;
+  assign io_resp_valid = _io_resp_valid_T_84[0]; // @[BTB.scala 289:34]
+  assign io_resp_bits_taken = ~res_value & isBranch ? 1'h0 : 1'h1; // @[BTB.scala 290:22 322:{35,56}]
+  assign io_resp_bits_bridx = _io_resp_bits_bridx_T_70 | idxHit[16] & brIdx_16 | idxHit[17] & brIdx_17 | idxHit[18] &
+    brIdx_18 | idxHit[19] & brIdx_19 | idxHit[20] & brIdx_20 | idxHit[21] & brIdx_21 | idxHit[22] & brIdx_22 | idxHit[23
+    ] & brIdx_23 | idxHit[24] & brIdx_24 | idxHit[25] & brIdx_25 | idxHit[26] & brIdx_26 | idxHit[27] & brIdx_27; // @[Mux.scala 27:73]
+  assign io_resp_bits_target = _io_ras_head_valid_T_1 & doPeek ? _GEN_401 : _io_resp_bits_target_T_181; // @[BTB.scala 291:23 331:35 332:27]
+  assign io_resp_bits_entry = {_io_resp_bits_entry_T,_io_resp_bits_entry_T_11}; // @[Cat.scala 31:58]
+  assign io_resp_bits_bht_history = history; // @[BTB.scala 93:19 95:17]
+  assign io_resp_bits_bht_value = resetting ? 1'h0 : table__res_res_value_MPORT_data; // @[BTB.scala 94:21]
+  assign io_ras_head_valid = ~_io_ras_head_valid_T; // @[BTB.scala 329:26]
+  assign io_ras_head_bits = 3'h5 == pos ? stack_5 : _GEN_400; // @[BTB.scala 330:{22,22}]
+  always @(posedge clock) begin
+    if (table__MPORT_en & table__MPORT_mask) begin
+      table_[table__MPORT_addr] <= table__MPORT_data; // @[BTB.scala 118:26]
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h0 == waddr) begin // @[BTB.scala 266:17]
+        idxs_0 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1 == waddr) begin // @[BTB.scala 266:17]
+        idxs_1 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h2 == waddr) begin // @[BTB.scala 266:17]
+        idxs_2 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h3 == waddr) begin // @[BTB.scala 266:17]
+        idxs_3 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h4 == waddr) begin // @[BTB.scala 266:17]
+        idxs_4 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h5 == waddr) begin // @[BTB.scala 266:17]
+        idxs_5 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h6 == waddr) begin // @[BTB.scala 266:17]
+        idxs_6 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h7 == waddr) begin // @[BTB.scala 266:17]
+        idxs_7 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h8 == waddr) begin // @[BTB.scala 266:17]
+        idxs_8 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h9 == waddr) begin // @[BTB.scala 266:17]
+        idxs_9 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'ha == waddr) begin // @[BTB.scala 266:17]
+        idxs_10 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hb == waddr) begin // @[BTB.scala 266:17]
+        idxs_11 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hc == waddr) begin // @[BTB.scala 266:17]
+        idxs_12 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hd == waddr) begin // @[BTB.scala 266:17]
+        idxs_13 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'he == waddr) begin // @[BTB.scala 266:17]
+        idxs_14 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hf == waddr) begin // @[BTB.scala 266:17]
+        idxs_15 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h10 == waddr) begin // @[BTB.scala 266:17]
+        idxs_16 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h11 == waddr) begin // @[BTB.scala 266:17]
+        idxs_17 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h12 == waddr) begin // @[BTB.scala 266:17]
+        idxs_18 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h13 == waddr) begin // @[BTB.scala 266:17]
+        idxs_19 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h14 == waddr) begin // @[BTB.scala 266:17]
+        idxs_20 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h15 == waddr) begin // @[BTB.scala 266:17]
+        idxs_21 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h16 == waddr) begin // @[BTB.scala 266:17]
+        idxs_22 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h17 == waddr) begin // @[BTB.scala 266:17]
+        idxs_23 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h18 == waddr) begin // @[BTB.scala 266:17]
+        idxs_24 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h19 == waddr) begin // @[BTB.scala 266:17]
+        idxs_25 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1a == waddr) begin // @[BTB.scala 266:17]
+        idxs_26 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1b == waddr) begin // @[BTB.scala 266:17]
+        idxs_27 <= r_btb_updatePipe_bits_pc[13:1]; // @[BTB.scala 266:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h0 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_0 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_1 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h2 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_2 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h3 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_3 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h4 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_4 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h5 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_5 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h6 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_6 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h7 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_7 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h8 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_8 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h9 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_9 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'ha == waddr) begin // @[BTB.scala 268:21]
+        idxPages_10 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hb == waddr) begin // @[BTB.scala 268:21]
+        idxPages_11 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hc == waddr) begin // @[BTB.scala 268:21]
+        idxPages_12 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hd == waddr) begin // @[BTB.scala 268:21]
+        idxPages_13 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'he == waddr) begin // @[BTB.scala 268:21]
+        idxPages_14 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hf == waddr) begin // @[BTB.scala 268:21]
+        idxPages_15 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h10 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_16 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h11 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_17 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h12 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_18 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h13 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_19 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h14 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_20 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h15 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_21 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h16 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_22 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h17 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_23 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h18 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_24 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h19 == waddr) begin // @[BTB.scala 268:21]
+        idxPages_25 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1a == waddr) begin // @[BTB.scala 268:21]
+        idxPages_26 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1b == waddr) begin // @[BTB.scala 268:21]
+        idxPages_27 <= _idxPages_T[2:0]; // @[BTB.scala 268:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h0 == waddr) begin // @[BTB.scala 267:17]
+        tgts_0 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1 == waddr) begin // @[BTB.scala 267:17]
+        tgts_1 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h2 == waddr) begin // @[BTB.scala 267:17]
+        tgts_2 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h3 == waddr) begin // @[BTB.scala 267:17]
+        tgts_3 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h4 == waddr) begin // @[BTB.scala 267:17]
+        tgts_4 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h5 == waddr) begin // @[BTB.scala 267:17]
+        tgts_5 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h6 == waddr) begin // @[BTB.scala 267:17]
+        tgts_6 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h7 == waddr) begin // @[BTB.scala 267:17]
+        tgts_7 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h8 == waddr) begin // @[BTB.scala 267:17]
+        tgts_8 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h9 == waddr) begin // @[BTB.scala 267:17]
+        tgts_9 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'ha == waddr) begin // @[BTB.scala 267:17]
+        tgts_10 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hb == waddr) begin // @[BTB.scala 267:17]
+        tgts_11 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hc == waddr) begin // @[BTB.scala 267:17]
+        tgts_12 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hd == waddr) begin // @[BTB.scala 267:17]
+        tgts_13 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'he == waddr) begin // @[BTB.scala 267:17]
+        tgts_14 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hf == waddr) begin // @[BTB.scala 267:17]
+        tgts_15 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h10 == waddr) begin // @[BTB.scala 267:17]
+        tgts_16 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h11 == waddr) begin // @[BTB.scala 267:17]
+        tgts_17 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h12 == waddr) begin // @[BTB.scala 267:17]
+        tgts_18 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h13 == waddr) begin // @[BTB.scala 267:17]
+        tgts_19 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h14 == waddr) begin // @[BTB.scala 267:17]
+        tgts_20 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h15 == waddr) begin // @[BTB.scala 267:17]
+        tgts_21 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h16 == waddr) begin // @[BTB.scala 267:17]
+        tgts_22 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h17 == waddr) begin // @[BTB.scala 267:17]
+        tgts_23 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h18 == waddr) begin // @[BTB.scala 267:17]
+        tgts_24 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h19 == waddr) begin // @[BTB.scala 267:17]
+        tgts_25 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1a == waddr) begin // @[BTB.scala 267:17]
+        tgts_26 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1b == waddr) begin // @[BTB.scala 267:17]
+        tgts_27 <= idxHit_idx; // @[BTB.scala 267:17]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h0 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_0 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_1 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h2 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_2 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h3 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_3 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h4 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_4 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h5 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_5 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h6 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_6 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h7 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_7 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h8 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_8 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h9 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_9 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'ha == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_10 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hb == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_11 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hc == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_12 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hd == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_13 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'he == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_14 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hf == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_15 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h10 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_16 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h11 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_17 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h12 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_18 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h13 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_19 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h14 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_20 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h15 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_21 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h16 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_22 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h17 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_23 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h18 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_24 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h19 == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_25 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1a == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_26 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1b == waddr) begin // @[BTB.scala 269:21]
+        tgtPages_27 <= tgtPageUpdate; // @[BTB.scala 269:21]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (_T_5[0]) begin // @[BTB.scala 280:22]
+        if (idxWritesEven) begin // @[BTB.scala 283:10]
+          pages_0 <= updatePageHit_p;
+        end else begin
+          pages_0 <= pageHit_p;
+        end
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (_T_12[1]) begin // @[BTB.scala 280:22]
+        if (idxWritesEven) begin // @[BTB.scala 285:10]
+          pages_1 <= pageHit_p;
+        end else begin
+          pages_1 <= updatePageHit_p;
+        end
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (_T_5[2]) begin // @[BTB.scala 280:22]
+        if (idxWritesEven) begin // @[BTB.scala 283:10]
+          pages_2 <= updatePageHit_p;
+        end else begin
+          pages_2 <= pageHit_p;
+        end
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (_T_12[3]) begin // @[BTB.scala 280:22]
+        if (idxWritesEven) begin // @[BTB.scala 285:10]
+          pages_3 <= pageHit_p;
+        end else begin
+          pages_3 <= updatePageHit_p;
+        end
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (_T_5[4]) begin // @[BTB.scala 280:22]
+        if (idxWritesEven) begin // @[BTB.scala 283:10]
+          pages_4 <= updatePageHit_p;
+        end else begin
+          pages_4 <= pageHit_p;
+        end
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (_T_12[5]) begin // @[BTB.scala 280:22]
+        if (idxWritesEven) begin // @[BTB.scala 285:10]
+          pages_5 <= pageHit_p;
+        end else begin
+          pages_5 <= updatePageHit_p;
+        end
+      end
+    end
+    if (reset) begin // @[BTB.scala 206:22]
+      pageValid <= 6'h0; // @[BTB.scala 206:22]
+    end else begin
+      pageValid <= _GEN_373[5:0];
+    end
+    if (reset) begin // @[BTB.scala 209:20]
+      isValid <= 28'h0; // @[BTB.scala 209:20]
+    end else begin
+      isValid <= _GEN_375[27:0];
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h0 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_0 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_1 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h2 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_2 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h3 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_3 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h4 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_4 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h5 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_5 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h6 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_6 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h7 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_7 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h8 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_8 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h9 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_9 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'ha == waddr) begin // @[BTB.scala 270:20]
+        cfiType_10 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hb == waddr) begin // @[BTB.scala 270:20]
+        cfiType_11 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hc == waddr) begin // @[BTB.scala 270:20]
+        cfiType_12 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hd == waddr) begin // @[BTB.scala 270:20]
+        cfiType_13 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'he == waddr) begin // @[BTB.scala 270:20]
+        cfiType_14 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hf == waddr) begin // @[BTB.scala 270:20]
+        cfiType_15 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h10 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_16 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h11 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_17 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h12 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_18 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h13 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_19 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h14 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_20 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h15 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_21 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h16 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_22 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h17 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_23 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h18 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_24 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h19 == waddr) begin // @[BTB.scala 270:20]
+        cfiType_25 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1a == waddr) begin // @[BTB.scala 270:20]
+        cfiType_26 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1b == waddr) begin // @[BTB.scala 270:20]
+        cfiType_27 <= r_btb_updatePipe_bits_cfiType; // @[BTB.scala 270:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h0 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_0 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_1 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h2 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_2 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h3 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_3 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h4 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_4 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h5 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_5 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h6 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_6 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h7 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_7 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h8 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_8 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h9 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_9 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'ha == waddr) begin // @[BTB.scala 273:20]
+        brIdx_10 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hb == waddr) begin // @[BTB.scala 273:20]
+        brIdx_11 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hc == waddr) begin // @[BTB.scala 273:20]
+        brIdx_12 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hd == waddr) begin // @[BTB.scala 273:20]
+        brIdx_13 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'he == waddr) begin // @[BTB.scala 273:20]
+        brIdx_14 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'hf == waddr) begin // @[BTB.scala 273:20]
+        brIdx_15 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h10 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_16 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h11 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_17 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h12 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_18 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h13 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_19 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h14 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_20 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h15 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_21 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h16 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_22 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h17 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_23 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h18 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_24 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h19 == waddr) begin // @[BTB.scala 273:20]
+        brIdx_25 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1a == waddr) begin // @[BTB.scala 273:20]
+        brIdx_26 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (r_btb_updatePipe_valid) begin // @[BTB.scala 264:29]
+      if (5'h1b == waddr) begin // @[BTB.scala 273:20]
+        brIdx_27 <= r_btb_updatePipe_bits_br_pc[1]; // @[BTB.scala 273:20]
+      end
+    end
+    if (reset) begin // @[Valid.scala 127:22]
+      r_btb_updatePipe_valid <= 1'h0; // @[Valid.scala 127:22]
+    end else begin
+      r_btb_updatePipe_valid <= io_btb_update_valid; // @[Valid.scala 127:22]
+    end
+    if (io_btb_update_valid) begin // @[Reg.scala 17:18]
+      r_btb_updatePipe_bits_prediction_entry <= io_btb_update_bits_prediction_entry; // @[Reg.scala 17:22]
+    end
+    if (io_btb_update_valid) begin // @[Reg.scala 17:18]
+      r_btb_updatePipe_bits_pc <= io_btb_update_bits_pc; // @[Reg.scala 17:22]
+    end
+    if (io_btb_update_valid) begin // @[Reg.scala 17:18]
+      r_btb_updatePipe_bits_isValid <= io_btb_update_bits_isValid; // @[Reg.scala 17:22]
+    end
+    if (io_btb_update_valid) begin // @[Reg.scala 17:18]
+      r_btb_updatePipe_bits_br_pc <= io_btb_update_bits_br_pc; // @[Reg.scala 17:22]
+    end
+    if (io_btb_update_valid) begin // @[Reg.scala 17:18]
+      r_btb_updatePipe_bits_cfiType <= io_btb_update_bits_cfiType; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[BTB.scala 239:29]
+      nextPageRepl <= 3'h0; // @[BTB.scala 239:29]
+    end else if (r_btb_updatePipe_valid & (doIdxPageRepl | doTgtPageRepl)) begin // @[BTB.scala 251:65]
+      if (next >= 3'h6) begin // @[BTB.scala 254:24]
+        nextPageRepl <= {{2'd0}, next[0]};
+      end else begin
+        nextPageRepl <= next;
+      end
+    end
+    if (reset) begin // @[Replacement.scala 168:70]
+      state_reg <= 27'h0; // @[Replacement.scala 168:70]
+    end else if (r_respPipe_valid & r_respPipe_bits_taken | r_btb_updatePipe_valid) begin // @[BTB.scala 260:66]
+      state_reg <= _state_reg_T_92; // @[Replacement.scala 172:15]
+    end
+    if (reset) begin // @[Valid.scala 127:22]
+      r_respPipe_valid <= 1'h0; // @[Valid.scala 127:22]
+    end else begin
+      r_respPipe_valid <= io_resp_valid; // @[Valid.scala 127:22]
+    end
+    if (io_resp_valid) begin // @[Reg.scala 17:18]
+      r_respPipe_bits_taken <= io_resp_bits_taken; // @[Reg.scala 17:22]
+    end
+    if (io_resp_valid) begin // @[Reg.scala 17:18]
+      r_respPipe_bits_entry <= io_resp_bits_entry; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[BTB.scala 119:24]
+      history <= 8'h0; // @[BTB.scala 119:24]
+    end else if (io_bht_update_valid) begin // @[BTB.scala 312:32]
+      if (io_bht_update_bits_branch) begin // @[BTB.scala 313:40]
+        if (io_bht_update_bits_mispredict) begin // @[BTB.scala 315:46]
+          history <= _history_T_3; // @[BTB.scala 112:13]
+        end else begin
+          history <= _GEN_382;
+        end
+      end else if (io_bht_update_bits_mispredict) begin // @[BTB.scala 318:50]
+        history <= io_bht_update_bits_prediction_history; // @[BTB.scala 109:13]
+      end else begin
+        history <= _GEN_382;
+      end
+    end else begin
+      history <= _GEN_382;
+    end
+    if (reset) begin // @[BTB.scala 121:36]
+      reset_waddr <= 10'h0; // @[BTB.scala 121:36]
+    end else if (resetting) begin // @[BTB.scala 126:20]
+      reset_waddr <= _reset_waddr_T_1; // @[BTB.scala 126:34]
+    end
+    if (reset) begin // @[BTB.scala 58:30]
+      count <= 3'h0; // @[BTB.scala 58:30]
+    end else if (io_ras_update_valid) begin // @[BTB.scala 334:32]
+      if (io_ras_update_bits_cfiType == 2'h2) begin // @[BTB.scala 335:58]
+        if (count < 3'h6) begin // @[BTB.scala 45:25]
+          count <= _count_T_1; // @[BTB.scala 45:33]
+        end
+      end else if (io_ras_update_bits_cfiType == 2'h3) begin // @[BTB.scala 337:63]
+        count <= _GEN_410;
+      end
+    end
+    if (reset) begin // @[BTB.scala 59:28]
+      pos <= 3'h0; // @[BTB.scala 59:28]
+    end else if (io_ras_update_valid) begin // @[BTB.scala 334:32]
+      if (io_ras_update_bits_cfiType == 2'h2) begin // @[BTB.scala 335:58]
+        if (pos < 3'h5) begin // @[BTB.scala 46:22]
+          pos <= _nextPos_T_3;
+        end else begin
+          pos <= 3'h0;
+        end
+      end else if (io_ras_update_bits_cfiType == 2'h3) begin // @[BTB.scala 337:63]
+        pos <= _GEN_411;
+      end
+    end
+    if (io_ras_update_valid) begin // @[BTB.scala 334:32]
+      if (io_ras_update_bits_cfiType == 2'h2) begin // @[BTB.scala 335:58]
+        if (3'h0 == nextPos) begin // @[BTB.scala 47:20]
+          stack_0 <= io_ras_update_bits_returnAddr; // @[BTB.scala 47:20]
+        end
+      end
+    end
+    if (io_ras_update_valid) begin // @[BTB.scala 334:32]
+      if (io_ras_update_bits_cfiType == 2'h2) begin // @[BTB.scala 335:58]
+        if (3'h1 == nextPos) begin // @[BTB.scala 47:20]
+          stack_1 <= io_ras_update_bits_returnAddr; // @[BTB.scala 47:20]
+        end
+      end
+    end
+    if (io_ras_update_valid) begin // @[BTB.scala 334:32]
+      if (io_ras_update_bits_cfiType == 2'h2) begin // @[BTB.scala 335:58]
+        if (3'h2 == nextPos) begin // @[BTB.scala 47:20]
+          stack_2 <= io_ras_update_bits_returnAddr; // @[BTB.scala 47:20]
+        end
+      end
+    end
+    if (io_ras_update_valid) begin // @[BTB.scala 334:32]
+      if (io_ras_update_bits_cfiType == 2'h2) begin // @[BTB.scala 335:58]
+        if (3'h3 == nextPos) begin // @[BTB.scala 47:20]
+          stack_3 <= io_ras_update_bits_returnAddr; // @[BTB.scala 47:20]
+        end
+      end
+    end
+    if (io_ras_update_valid) begin // @[BTB.scala 334:32]
+      if (io_ras_update_bits_cfiType == 2'h2) begin // @[BTB.scala 335:58]
+        if (3'h4 == nextPos) begin // @[BTB.scala 47:20]
+          stack_4 <= io_ras_update_bits_returnAddr; // @[BTB.scala 47:20]
+        end
+      end
+    end
+    if (io_ras_update_valid) begin // @[BTB.scala 334:32]
+      if (io_ras_update_bits_cfiType == 2'h2) begin // @[BTB.scala 335:58]
+        if (3'h5 == nextPos) begin // @[BTB.scala 47:20]
+          stack_5 <= io_ras_update_bits_returnAddr; // @[BTB.scala 47:20]
+        end
+      end
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 512; initvar = initvar+1)
+    table_[initvar] = _RAND_0[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_1 = {1{`RANDOM}};
+  idxs_0 = _RAND_1[12:0];
+  _RAND_2 = {1{`RANDOM}};
+  idxs_1 = _RAND_2[12:0];
+  _RAND_3 = {1{`RANDOM}};
+  idxs_2 = _RAND_3[12:0];
+  _RAND_4 = {1{`RANDOM}};
+  idxs_3 = _RAND_4[12:0];
+  _RAND_5 = {1{`RANDOM}};
+  idxs_4 = _RAND_5[12:0];
+  _RAND_6 = {1{`RANDOM}};
+  idxs_5 = _RAND_6[12:0];
+  _RAND_7 = {1{`RANDOM}};
+  idxs_6 = _RAND_7[12:0];
+  _RAND_8 = {1{`RANDOM}};
+  idxs_7 = _RAND_8[12:0];
+  _RAND_9 = {1{`RANDOM}};
+  idxs_8 = _RAND_9[12:0];
+  _RAND_10 = {1{`RANDOM}};
+  idxs_9 = _RAND_10[12:0];
+  _RAND_11 = {1{`RANDOM}};
+  idxs_10 = _RAND_11[12:0];
+  _RAND_12 = {1{`RANDOM}};
+  idxs_11 = _RAND_12[12:0];
+  _RAND_13 = {1{`RANDOM}};
+  idxs_12 = _RAND_13[12:0];
+  _RAND_14 = {1{`RANDOM}};
+  idxs_13 = _RAND_14[12:0];
+  _RAND_15 = {1{`RANDOM}};
+  idxs_14 = _RAND_15[12:0];
+  _RAND_16 = {1{`RANDOM}};
+  idxs_15 = _RAND_16[12:0];
+  _RAND_17 = {1{`RANDOM}};
+  idxs_16 = _RAND_17[12:0];
+  _RAND_18 = {1{`RANDOM}};
+  idxs_17 = _RAND_18[12:0];
+  _RAND_19 = {1{`RANDOM}};
+  idxs_18 = _RAND_19[12:0];
+  _RAND_20 = {1{`RANDOM}};
+  idxs_19 = _RAND_20[12:0];
+  _RAND_21 = {1{`RANDOM}};
+  idxs_20 = _RAND_21[12:0];
+  _RAND_22 = {1{`RANDOM}};
+  idxs_21 = _RAND_22[12:0];
+  _RAND_23 = {1{`RANDOM}};
+  idxs_22 = _RAND_23[12:0];
+  _RAND_24 = {1{`RANDOM}};
+  idxs_23 = _RAND_24[12:0];
+  _RAND_25 = {1{`RANDOM}};
+  idxs_24 = _RAND_25[12:0];
+  _RAND_26 = {1{`RANDOM}};
+  idxs_25 = _RAND_26[12:0];
+  _RAND_27 = {1{`RANDOM}};
+  idxs_26 = _RAND_27[12:0];
+  _RAND_28 = {1{`RANDOM}};
+  idxs_27 = _RAND_28[12:0];
+  _RAND_29 = {1{`RANDOM}};
+  idxPages_0 = _RAND_29[2:0];
+  _RAND_30 = {1{`RANDOM}};
+  idxPages_1 = _RAND_30[2:0];
+  _RAND_31 = {1{`RANDOM}};
+  idxPages_2 = _RAND_31[2:0];
+  _RAND_32 = {1{`RANDOM}};
+  idxPages_3 = _RAND_32[2:0];
+  _RAND_33 = {1{`RANDOM}};
+  idxPages_4 = _RAND_33[2:0];
+  _RAND_34 = {1{`RANDOM}};
+  idxPages_5 = _RAND_34[2:0];
+  _RAND_35 = {1{`RANDOM}};
+  idxPages_6 = _RAND_35[2:0];
+  _RAND_36 = {1{`RANDOM}};
+  idxPages_7 = _RAND_36[2:0];
+  _RAND_37 = {1{`RANDOM}};
+  idxPages_8 = _RAND_37[2:0];
+  _RAND_38 = {1{`RANDOM}};
+  idxPages_9 = _RAND_38[2:0];
+  _RAND_39 = {1{`RANDOM}};
+  idxPages_10 = _RAND_39[2:0];
+  _RAND_40 = {1{`RANDOM}};
+  idxPages_11 = _RAND_40[2:0];
+  _RAND_41 = {1{`RANDOM}};
+  idxPages_12 = _RAND_41[2:0];
+  _RAND_42 = {1{`RANDOM}};
+  idxPages_13 = _RAND_42[2:0];
+  _RAND_43 = {1{`RANDOM}};
+  idxPages_14 = _RAND_43[2:0];
+  _RAND_44 = {1{`RANDOM}};
+  idxPages_15 = _RAND_44[2:0];
+  _RAND_45 = {1{`RANDOM}};
+  idxPages_16 = _RAND_45[2:0];
+  _RAND_46 = {1{`RANDOM}};
+  idxPages_17 = _RAND_46[2:0];
+  _RAND_47 = {1{`RANDOM}};
+  idxPages_18 = _RAND_47[2:0];
+  _RAND_48 = {1{`RANDOM}};
+  idxPages_19 = _RAND_48[2:0];
+  _RAND_49 = {1{`RANDOM}};
+  idxPages_20 = _RAND_49[2:0];
+  _RAND_50 = {1{`RANDOM}};
+  idxPages_21 = _RAND_50[2:0];
+  _RAND_51 = {1{`RANDOM}};
+  idxPages_22 = _RAND_51[2:0];
+  _RAND_52 = {1{`RANDOM}};
+  idxPages_23 = _RAND_52[2:0];
+  _RAND_53 = {1{`RANDOM}};
+  idxPages_24 = _RAND_53[2:0];
+  _RAND_54 = {1{`RANDOM}};
+  idxPages_25 = _RAND_54[2:0];
+  _RAND_55 = {1{`RANDOM}};
+  idxPages_26 = _RAND_55[2:0];
+  _RAND_56 = {1{`RANDOM}};
+  idxPages_27 = _RAND_56[2:0];
+  _RAND_57 = {1{`RANDOM}};
+  tgts_0 = _RAND_57[12:0];
+  _RAND_58 = {1{`RANDOM}};
+  tgts_1 = _RAND_58[12:0];
+  _RAND_59 = {1{`RANDOM}};
+  tgts_2 = _RAND_59[12:0];
+  _RAND_60 = {1{`RANDOM}};
+  tgts_3 = _RAND_60[12:0];
+  _RAND_61 = {1{`RANDOM}};
+  tgts_4 = _RAND_61[12:0];
+  _RAND_62 = {1{`RANDOM}};
+  tgts_5 = _RAND_62[12:0];
+  _RAND_63 = {1{`RANDOM}};
+  tgts_6 = _RAND_63[12:0];
+  _RAND_64 = {1{`RANDOM}};
+  tgts_7 = _RAND_64[12:0];
+  _RAND_65 = {1{`RANDOM}};
+  tgts_8 = _RAND_65[12:0];
+  _RAND_66 = {1{`RANDOM}};
+  tgts_9 = _RAND_66[12:0];
+  _RAND_67 = {1{`RANDOM}};
+  tgts_10 = _RAND_67[12:0];
+  _RAND_68 = {1{`RANDOM}};
+  tgts_11 = _RAND_68[12:0];
+  _RAND_69 = {1{`RANDOM}};
+  tgts_12 = _RAND_69[12:0];
+  _RAND_70 = {1{`RANDOM}};
+  tgts_13 = _RAND_70[12:0];
+  _RAND_71 = {1{`RANDOM}};
+  tgts_14 = _RAND_71[12:0];
+  _RAND_72 = {1{`RANDOM}};
+  tgts_15 = _RAND_72[12:0];
+  _RAND_73 = {1{`RANDOM}};
+  tgts_16 = _RAND_73[12:0];
+  _RAND_74 = {1{`RANDOM}};
+  tgts_17 = _RAND_74[12:0];
+  _RAND_75 = {1{`RANDOM}};
+  tgts_18 = _RAND_75[12:0];
+  _RAND_76 = {1{`RANDOM}};
+  tgts_19 = _RAND_76[12:0];
+  _RAND_77 = {1{`RANDOM}};
+  tgts_20 = _RAND_77[12:0];
+  _RAND_78 = {1{`RANDOM}};
+  tgts_21 = _RAND_78[12:0];
+  _RAND_79 = {1{`RANDOM}};
+  tgts_22 = _RAND_79[12:0];
+  _RAND_80 = {1{`RANDOM}};
+  tgts_23 = _RAND_80[12:0];
+  _RAND_81 = {1{`RANDOM}};
+  tgts_24 = _RAND_81[12:0];
+  _RAND_82 = {1{`RANDOM}};
+  tgts_25 = _RAND_82[12:0];
+  _RAND_83 = {1{`RANDOM}};
+  tgts_26 = _RAND_83[12:0];
+  _RAND_84 = {1{`RANDOM}};
+  tgts_27 = _RAND_84[12:0];
+  _RAND_85 = {1{`RANDOM}};
+  tgtPages_0 = _RAND_85[2:0];
+  _RAND_86 = {1{`RANDOM}};
+  tgtPages_1 = _RAND_86[2:0];
+  _RAND_87 = {1{`RANDOM}};
+  tgtPages_2 = _RAND_87[2:0];
+  _RAND_88 = {1{`RANDOM}};
+  tgtPages_3 = _RAND_88[2:0];
+  _RAND_89 = {1{`RANDOM}};
+  tgtPages_4 = _RAND_89[2:0];
+  _RAND_90 = {1{`RANDOM}};
+  tgtPages_5 = _RAND_90[2:0];
+  _RAND_91 = {1{`RANDOM}};
+  tgtPages_6 = _RAND_91[2:0];
+  _RAND_92 = {1{`RANDOM}};
+  tgtPages_7 = _RAND_92[2:0];
+  _RAND_93 = {1{`RANDOM}};
+  tgtPages_8 = _RAND_93[2:0];
+  _RAND_94 = {1{`RANDOM}};
+  tgtPages_9 = _RAND_94[2:0];
+  _RAND_95 = {1{`RANDOM}};
+  tgtPages_10 = _RAND_95[2:0];
+  _RAND_96 = {1{`RANDOM}};
+  tgtPages_11 = _RAND_96[2:0];
+  _RAND_97 = {1{`RANDOM}};
+  tgtPages_12 = _RAND_97[2:0];
+  _RAND_98 = {1{`RANDOM}};
+  tgtPages_13 = _RAND_98[2:0];
+  _RAND_99 = {1{`RANDOM}};
+  tgtPages_14 = _RAND_99[2:0];
+  _RAND_100 = {1{`RANDOM}};
+  tgtPages_15 = _RAND_100[2:0];
+  _RAND_101 = {1{`RANDOM}};
+  tgtPages_16 = _RAND_101[2:0];
+  _RAND_102 = {1{`RANDOM}};
+  tgtPages_17 = _RAND_102[2:0];
+  _RAND_103 = {1{`RANDOM}};
+  tgtPages_18 = _RAND_103[2:0];
+  _RAND_104 = {1{`RANDOM}};
+  tgtPages_19 = _RAND_104[2:0];
+  _RAND_105 = {1{`RANDOM}};
+  tgtPages_20 = _RAND_105[2:0];
+  _RAND_106 = {1{`RANDOM}};
+  tgtPages_21 = _RAND_106[2:0];
+  _RAND_107 = {1{`RANDOM}};
+  tgtPages_22 = _RAND_107[2:0];
+  _RAND_108 = {1{`RANDOM}};
+  tgtPages_23 = _RAND_108[2:0];
+  _RAND_109 = {1{`RANDOM}};
+  tgtPages_24 = _RAND_109[2:0];
+  _RAND_110 = {1{`RANDOM}};
+  tgtPages_25 = _RAND_110[2:0];
+  _RAND_111 = {1{`RANDOM}};
+  tgtPages_26 = _RAND_111[2:0];
+  _RAND_112 = {1{`RANDOM}};
+  tgtPages_27 = _RAND_112[2:0];
+  _RAND_113 = {1{`RANDOM}};
+  pages_0 = _RAND_113[17:0];
+  _RAND_114 = {1{`RANDOM}};
+  pages_1 = _RAND_114[17:0];
+  _RAND_115 = {1{`RANDOM}};
+  pages_2 = _RAND_115[17:0];
+  _RAND_116 = {1{`RANDOM}};
+  pages_3 = _RAND_116[17:0];
+  _RAND_117 = {1{`RANDOM}};
+  pages_4 = _RAND_117[17:0];
+  _RAND_118 = {1{`RANDOM}};
+  pages_5 = _RAND_118[17:0];
+  _RAND_119 = {1{`RANDOM}};
+  pageValid = _RAND_119[5:0];
+  _RAND_120 = {1{`RANDOM}};
+  isValid = _RAND_120[27:0];
+  _RAND_121 = {1{`RANDOM}};
+  cfiType_0 = _RAND_121[1:0];
+  _RAND_122 = {1{`RANDOM}};
+  cfiType_1 = _RAND_122[1:0];
+  _RAND_123 = {1{`RANDOM}};
+  cfiType_2 = _RAND_123[1:0];
+  _RAND_124 = {1{`RANDOM}};
+  cfiType_3 = _RAND_124[1:0];
+  _RAND_125 = {1{`RANDOM}};
+  cfiType_4 = _RAND_125[1:0];
+  _RAND_126 = {1{`RANDOM}};
+  cfiType_5 = _RAND_126[1:0];
+  _RAND_127 = {1{`RANDOM}};
+  cfiType_6 = _RAND_127[1:0];
+  _RAND_128 = {1{`RANDOM}};
+  cfiType_7 = _RAND_128[1:0];
+  _RAND_129 = {1{`RANDOM}};
+  cfiType_8 = _RAND_129[1:0];
+  _RAND_130 = {1{`RANDOM}};
+  cfiType_9 = _RAND_130[1:0];
+  _RAND_131 = {1{`RANDOM}};
+  cfiType_10 = _RAND_131[1:0];
+  _RAND_132 = {1{`RANDOM}};
+  cfiType_11 = _RAND_132[1:0];
+  _RAND_133 = {1{`RANDOM}};
+  cfiType_12 = _RAND_133[1:0];
+  _RAND_134 = {1{`RANDOM}};
+  cfiType_13 = _RAND_134[1:0];
+  _RAND_135 = {1{`RANDOM}};
+  cfiType_14 = _RAND_135[1:0];
+  _RAND_136 = {1{`RANDOM}};
+  cfiType_15 = _RAND_136[1:0];
+  _RAND_137 = {1{`RANDOM}};
+  cfiType_16 = _RAND_137[1:0];
+  _RAND_138 = {1{`RANDOM}};
+  cfiType_17 = _RAND_138[1:0];
+  _RAND_139 = {1{`RANDOM}};
+  cfiType_18 = _RAND_139[1:0];
+  _RAND_140 = {1{`RANDOM}};
+  cfiType_19 = _RAND_140[1:0];
+  _RAND_141 = {1{`RANDOM}};
+  cfiType_20 = _RAND_141[1:0];
+  _RAND_142 = {1{`RANDOM}};
+  cfiType_21 = _RAND_142[1:0];
+  _RAND_143 = {1{`RANDOM}};
+  cfiType_22 = _RAND_143[1:0];
+  _RAND_144 = {1{`RANDOM}};
+  cfiType_23 = _RAND_144[1:0];
+  _RAND_145 = {1{`RANDOM}};
+  cfiType_24 = _RAND_145[1:0];
+  _RAND_146 = {1{`RANDOM}};
+  cfiType_25 = _RAND_146[1:0];
+  _RAND_147 = {1{`RANDOM}};
+  cfiType_26 = _RAND_147[1:0];
+  _RAND_148 = {1{`RANDOM}};
+  cfiType_27 = _RAND_148[1:0];
+  _RAND_149 = {1{`RANDOM}};
+  brIdx_0 = _RAND_149[0:0];
+  _RAND_150 = {1{`RANDOM}};
+  brIdx_1 = _RAND_150[0:0];
+  _RAND_151 = {1{`RANDOM}};
+  brIdx_2 = _RAND_151[0:0];
+  _RAND_152 = {1{`RANDOM}};
+  brIdx_3 = _RAND_152[0:0];
+  _RAND_153 = {1{`RANDOM}};
+  brIdx_4 = _RAND_153[0:0];
+  _RAND_154 = {1{`RANDOM}};
+  brIdx_5 = _RAND_154[0:0];
+  _RAND_155 = {1{`RANDOM}};
+  brIdx_6 = _RAND_155[0:0];
+  _RAND_156 = {1{`RANDOM}};
+  brIdx_7 = _RAND_156[0:0];
+  _RAND_157 = {1{`RANDOM}};
+  brIdx_8 = _RAND_157[0:0];
+  _RAND_158 = {1{`RANDOM}};
+  brIdx_9 = _RAND_158[0:0];
+  _RAND_159 = {1{`RANDOM}};
+  brIdx_10 = _RAND_159[0:0];
+  _RAND_160 = {1{`RANDOM}};
+  brIdx_11 = _RAND_160[0:0];
+  _RAND_161 = {1{`RANDOM}};
+  brIdx_12 = _RAND_161[0:0];
+  _RAND_162 = {1{`RANDOM}};
+  brIdx_13 = _RAND_162[0:0];
+  _RAND_163 = {1{`RANDOM}};
+  brIdx_14 = _RAND_163[0:0];
+  _RAND_164 = {1{`RANDOM}};
+  brIdx_15 = _RAND_164[0:0];
+  _RAND_165 = {1{`RANDOM}};
+  brIdx_16 = _RAND_165[0:0];
+  _RAND_166 = {1{`RANDOM}};
+  brIdx_17 = _RAND_166[0:0];
+  _RAND_167 = {1{`RANDOM}};
+  brIdx_18 = _RAND_167[0:0];
+  _RAND_168 = {1{`RANDOM}};
+  brIdx_19 = _RAND_168[0:0];
+  _RAND_169 = {1{`RANDOM}};
+  brIdx_20 = _RAND_169[0:0];
+  _RAND_170 = {1{`RANDOM}};
+  brIdx_21 = _RAND_170[0:0];
+  _RAND_171 = {1{`RANDOM}};
+  brIdx_22 = _RAND_171[0:0];
+  _RAND_172 = {1{`RANDOM}};
+  brIdx_23 = _RAND_172[0:0];
+  _RAND_173 = {1{`RANDOM}};
+  brIdx_24 = _RAND_173[0:0];
+  _RAND_174 = {1{`RANDOM}};
+  brIdx_25 = _RAND_174[0:0];
+  _RAND_175 = {1{`RANDOM}};
+  brIdx_26 = _RAND_175[0:0];
+  _RAND_176 = {1{`RANDOM}};
+  brIdx_27 = _RAND_176[0:0];
+  _RAND_177 = {1{`RANDOM}};
+  r_btb_updatePipe_valid = _RAND_177[0:0];
+  _RAND_178 = {1{`RANDOM}};
+  r_btb_updatePipe_bits_prediction_entry = _RAND_178[4:0];
+  _RAND_179 = {1{`RANDOM}};
+  r_btb_updatePipe_bits_pc = _RAND_179[31:0];
+  _RAND_180 = {1{`RANDOM}};
+  r_btb_updatePipe_bits_isValid = _RAND_180[0:0];
+  _RAND_181 = {1{`RANDOM}};
+  r_btb_updatePipe_bits_br_pc = _RAND_181[31:0];
+  _RAND_182 = {1{`RANDOM}};
+  r_btb_updatePipe_bits_cfiType = _RAND_182[1:0];
+  _RAND_183 = {1{`RANDOM}};
+  nextPageRepl = _RAND_183[2:0];
+  _RAND_184 = {1{`RANDOM}};
+  state_reg = _RAND_184[26:0];
+  _RAND_185 = {1{`RANDOM}};
+  r_respPipe_valid = _RAND_185[0:0];
+  _RAND_186 = {1{`RANDOM}};
+  r_respPipe_bits_taken = _RAND_186[0:0];
+  _RAND_187 = {1{`RANDOM}};
+  r_respPipe_bits_entry = _RAND_187[4:0];
+  _RAND_188 = {1{`RANDOM}};
+  history = _RAND_188[7:0];
+  _RAND_189 = {1{`RANDOM}};
+  reset_waddr = _RAND_189[9:0];
+  _RAND_190 = {1{`RANDOM}};
+  count = _RAND_190[2:0];
+  _RAND_191 = {1{`RANDOM}};
+  pos = _RAND_191[2:0];
+  _RAND_192 = {1{`RANDOM}};
+  stack_0 = _RAND_192[31:0];
+  _RAND_193 = {1{`RANDOM}};
+  stack_1 = _RAND_193[31:0];
+  _RAND_194 = {1{`RANDOM}};
+  stack_2 = _RAND_194[31:0];
+  _RAND_195 = {1{`RANDOM}};
+  stack_3 = _RAND_195[31:0];
+  _RAND_196 = {1{`RANDOM}};
+  stack_4 = _RAND_196[31:0];
+  _RAND_197 = {1{`RANDOM}};
+  stack_5 = _RAND_197[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Frontend(
+  input         clock,
+  input         reset,
+  output        auto_icache_slave_in_a_ready,
+  input         auto_icache_slave_in_a_valid,
+  input  [2:0]  auto_icache_slave_in_a_bits_opcode,
+  input  [1:0]  auto_icache_slave_in_a_bits_size,
+  input  [7:0]  auto_icache_slave_in_a_bits_source,
+  input  [27:0] auto_icache_slave_in_a_bits_address,
+  input  [3:0]  auto_icache_slave_in_a_bits_mask,
+  input  [31:0] auto_icache_slave_in_a_bits_data,
+  input         auto_icache_slave_in_d_ready,
+  output        auto_icache_slave_in_d_valid,
+  output [2:0]  auto_icache_slave_in_d_bits_opcode,
+  output [1:0]  auto_icache_slave_in_d_bits_size,
+  output [7:0]  auto_icache_slave_in_d_bits_source,
+  output [31:0] auto_icache_slave_in_d_bits_data,
+  input         auto_icache_master_out_a_ready,
+  output        auto_icache_master_out_a_valid,
+  output [30:0] auto_icache_master_out_a_bits_address,
+  output        auto_icache_master_out_d_ready,
+  input         auto_icache_master_out_d_valid,
+  input  [2:0]  auto_icache_master_out_d_bits_opcode,
+  input  [3:0]  auto_icache_master_out_d_bits_size,
+  input  [31:0] auto_icache_master_out_d_bits_data,
+  input         auto_icache_master_out_d_bits_corrupt,
+  input         io_cpu_might_request,
+  input         io_cpu_req_valid,
+  input  [31:0] io_cpu_req_bits_pc,
+  input         io_cpu_req_bits_speculative,
+  input         io_cpu_resp_ready,
+  output        io_cpu_resp_valid,
+  output        io_cpu_resp_bits_btb_taken,
+  output        io_cpu_resp_bits_btb_bridx,
+  output [4:0]  io_cpu_resp_bits_btb_entry,
+  output [7:0]  io_cpu_resp_bits_btb_bht_history,
+  output [31:0] io_cpu_resp_bits_pc,
+  output [31:0] io_cpu_resp_bits_data,
+  output        io_cpu_resp_bits_xcpt_ae_inst,
+  output        io_cpu_resp_bits_replay,
+  input         io_cpu_btb_update_valid,
+  input  [4:0]  io_cpu_btb_update_bits_prediction_entry,
+  input  [31:0] io_cpu_btb_update_bits_pc,
+  input         io_cpu_btb_update_bits_isValid,
+  input  [31:0] io_cpu_btb_update_bits_br_pc,
+  input  [1:0]  io_cpu_btb_update_bits_cfiType,
+  input         io_cpu_bht_update_valid,
+  input  [7:0]  io_cpu_bht_update_bits_prediction_history,
+  input  [31:0] io_cpu_bht_update_bits_pc,
+  input         io_cpu_bht_update_bits_branch,
+  input         io_cpu_bht_update_bits_taken,
+  input         io_cpu_bht_update_bits_mispredict,
+  input         io_cpu_flush_icache,
+  output [31:0] io_cpu_npc,
+  input         io_ptw_status_debug,
+  input  [1:0]  io_ptw_status_prv,
+  input         io_ptw_pmp_0_cfg_l,
+  input  [1:0]  io_ptw_pmp_0_cfg_a,
+  input         io_ptw_pmp_0_cfg_x,
+  input         io_ptw_pmp_0_cfg_w,
+  input         io_ptw_pmp_0_cfg_r,
+  input  [28:0] io_ptw_pmp_0_addr,
+  input  [30:0] io_ptw_pmp_0_mask,
+  input         io_ptw_pmp_1_cfg_l,
+  input  [1:0]  io_ptw_pmp_1_cfg_a,
+  input         io_ptw_pmp_1_cfg_x,
+  input         io_ptw_pmp_1_cfg_w,
+  input         io_ptw_pmp_1_cfg_r,
+  input  [28:0] io_ptw_pmp_1_addr,
+  input  [30:0] io_ptw_pmp_1_mask,
+  input         io_ptw_pmp_2_cfg_l,
+  input  [1:0]  io_ptw_pmp_2_cfg_a,
+  input         io_ptw_pmp_2_cfg_x,
+  input         io_ptw_pmp_2_cfg_w,
+  input         io_ptw_pmp_2_cfg_r,
+  input  [28:0] io_ptw_pmp_2_addr,
+  input  [30:0] io_ptw_pmp_2_mask,
+  input         io_ptw_pmp_3_cfg_l,
+  input  [1:0]  io_ptw_pmp_3_cfg_a,
+  input         io_ptw_pmp_3_cfg_x,
+  input         io_ptw_pmp_3_cfg_w,
+  input         io_ptw_pmp_3_cfg_r,
+  input  [28:0] io_ptw_pmp_3_addr,
+  input  [30:0] io_ptw_pmp_3_mask,
+  input         io_ptw_pmp_4_cfg_l,
+  input  [1:0]  io_ptw_pmp_4_cfg_a,
+  input         io_ptw_pmp_4_cfg_x,
+  input         io_ptw_pmp_4_cfg_w,
+  input         io_ptw_pmp_4_cfg_r,
+  input  [28:0] io_ptw_pmp_4_addr,
+  input  [30:0] io_ptw_pmp_4_mask,
+  input         io_ptw_pmp_5_cfg_l,
+  input  [1:0]  io_ptw_pmp_5_cfg_a,
+  input         io_ptw_pmp_5_cfg_x,
+  input         io_ptw_pmp_5_cfg_w,
+  input         io_ptw_pmp_5_cfg_r,
+  input  [28:0] io_ptw_pmp_5_addr,
+  input  [30:0] io_ptw_pmp_5_mask,
+  input         io_ptw_pmp_6_cfg_l,
+  input  [1:0]  io_ptw_pmp_6_cfg_a,
+  input         io_ptw_pmp_6_cfg_x,
+  input         io_ptw_pmp_6_cfg_w,
+  input         io_ptw_pmp_6_cfg_r,
+  input  [28:0] io_ptw_pmp_6_addr,
+  input  [30:0] io_ptw_pmp_6_mask,
+  input         io_ptw_pmp_7_cfg_l,
+  input  [1:0]  io_ptw_pmp_7_cfg_a,
+  input         io_ptw_pmp_7_cfg_x,
+  input         io_ptw_pmp_7_cfg_w,
+  input         io_ptw_pmp_7_cfg_r,
+  input  [28:0] io_ptw_pmp_7_addr,
+  input  [30:0] io_ptw_pmp_7_mask,
+  input  [31:0] io_ptw_customCSRs_csrs_0_value, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+`endif // RANDOMIZE_REG_INIT
+  wire  icache_clock; // @[Frontend.scala 66:26]
+  wire  icache_reset; // @[Frontend.scala 66:26]
+  wire  icache_auto_slave_in_a_ready; // @[Frontend.scala 66:26]
+  wire  icache_auto_slave_in_a_valid; // @[Frontend.scala 66:26]
+  wire [2:0] icache_auto_slave_in_a_bits_opcode; // @[Frontend.scala 66:26]
+  wire [1:0] icache_auto_slave_in_a_bits_size; // @[Frontend.scala 66:26]
+  wire [7:0] icache_auto_slave_in_a_bits_source; // @[Frontend.scala 66:26]
+  wire [27:0] icache_auto_slave_in_a_bits_address; // @[Frontend.scala 66:26]
+  wire [3:0] icache_auto_slave_in_a_bits_mask; // @[Frontend.scala 66:26]
+  wire [31:0] icache_auto_slave_in_a_bits_data; // @[Frontend.scala 66:26]
+  wire  icache_auto_slave_in_d_ready; // @[Frontend.scala 66:26]
+  wire  icache_auto_slave_in_d_valid; // @[Frontend.scala 66:26]
+  wire [2:0] icache_auto_slave_in_d_bits_opcode; // @[Frontend.scala 66:26]
+  wire [1:0] icache_auto_slave_in_d_bits_size; // @[Frontend.scala 66:26]
+  wire [7:0] icache_auto_slave_in_d_bits_source; // @[Frontend.scala 66:26]
+  wire [31:0] icache_auto_slave_in_d_bits_data; // @[Frontend.scala 66:26]
+  wire  icache_auto_master_out_a_ready; // @[Frontend.scala 66:26]
+  wire  icache_auto_master_out_a_valid; // @[Frontend.scala 66:26]
+  wire [30:0] icache_auto_master_out_a_bits_address; // @[Frontend.scala 66:26]
+  wire  icache_auto_master_out_d_ready; // @[Frontend.scala 66:26]
+  wire  icache_auto_master_out_d_valid; // @[Frontend.scala 66:26]
+  wire [2:0] icache_auto_master_out_d_bits_opcode; // @[Frontend.scala 66:26]
+  wire [3:0] icache_auto_master_out_d_bits_size; // @[Frontend.scala 66:26]
+  wire [31:0] icache_auto_master_out_d_bits_data; // @[Frontend.scala 66:26]
+  wire  icache_auto_master_out_d_bits_corrupt; // @[Frontend.scala 66:26]
+  wire  icache_io_req_ready; // @[Frontend.scala 66:26]
+  wire  icache_io_req_valid; // @[Frontend.scala 66:26]
+  wire [31:0] icache_io_req_bits_addr; // @[Frontend.scala 66:26]
+  wire [30:0] icache_io_s1_paddr; // @[Frontend.scala 66:26]
+  wire [31:0] icache_io_s2_vaddr; // @[Frontend.scala 66:26]
+  wire  icache_io_s1_kill; // @[Frontend.scala 66:26]
+  wire  icache_io_s2_kill; // @[Frontend.scala 66:26]
+  wire  icache_io_resp_valid; // @[Frontend.scala 66:26]
+  wire [31:0] icache_io_resp_bits_data; // @[Frontend.scala 66:26]
+  wire  icache_io_resp_bits_ae; // @[Frontend.scala 66:26]
+  wire  icache_io_invalidate; // @[Frontend.scala 66:26]
+  wire  fq_clock; // @[Frontend.scala 88:57]
+  wire  fq_reset; // @[Frontend.scala 88:57]
+  wire  fq_io_enq_ready; // @[Frontend.scala 88:57]
+  wire  fq_io_enq_valid; // @[Frontend.scala 88:57]
+  wire  fq_io_enq_bits_btb_taken; // @[Frontend.scala 88:57]
+  wire  fq_io_enq_bits_btb_bridx; // @[Frontend.scala 88:57]
+  wire [4:0] fq_io_enq_bits_btb_entry; // @[Frontend.scala 88:57]
+  wire [7:0] fq_io_enq_bits_btb_bht_history; // @[Frontend.scala 88:57]
+  wire [31:0] fq_io_enq_bits_pc; // @[Frontend.scala 88:57]
+  wire [31:0] fq_io_enq_bits_data; // @[Frontend.scala 88:57]
+  wire [1:0] fq_io_enq_bits_mask; // @[Frontend.scala 88:57]
+  wire  fq_io_enq_bits_xcpt_ae_inst; // @[Frontend.scala 88:57]
+  wire  fq_io_enq_bits_replay; // @[Frontend.scala 88:57]
+  wire  fq_io_deq_ready; // @[Frontend.scala 88:57]
+  wire  fq_io_deq_valid; // @[Frontend.scala 88:57]
+  wire  fq_io_deq_bits_btb_taken; // @[Frontend.scala 88:57]
+  wire  fq_io_deq_bits_btb_bridx; // @[Frontend.scala 88:57]
+  wire [4:0] fq_io_deq_bits_btb_entry; // @[Frontend.scala 88:57]
+  wire [7:0] fq_io_deq_bits_btb_bht_history; // @[Frontend.scala 88:57]
+  wire [31:0] fq_io_deq_bits_pc; // @[Frontend.scala 88:57]
+  wire [31:0] fq_io_deq_bits_data; // @[Frontend.scala 88:57]
+  wire  fq_io_deq_bits_xcpt_ae_inst; // @[Frontend.scala 88:57]
+  wire  fq_io_deq_bits_replay; // @[Frontend.scala 88:57]
+  wire [4:0] fq_io_mask; // @[Frontend.scala 88:57]
+  wire [31:0] tlb_io_req_bits_vaddr; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_req_bits_prv; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_resp_paddr; // @[Frontend.scala 102:19]
+  wire  tlb_io_resp_ae_inst; // @[Frontend.scala 102:19]
+  wire  tlb_io_resp_cacheable; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_status_debug; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_0_cfg_l; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_ptw_pmp_0_cfg_a; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_0_cfg_x; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_0_cfg_w; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_0_cfg_r; // @[Frontend.scala 102:19]
+  wire [28:0] tlb_io_ptw_pmp_0_addr; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_ptw_pmp_0_mask; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_1_cfg_l; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_ptw_pmp_1_cfg_a; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_1_cfg_x; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_1_cfg_w; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_1_cfg_r; // @[Frontend.scala 102:19]
+  wire [28:0] tlb_io_ptw_pmp_1_addr; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_ptw_pmp_1_mask; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_2_cfg_l; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_ptw_pmp_2_cfg_a; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_2_cfg_x; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_2_cfg_w; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_2_cfg_r; // @[Frontend.scala 102:19]
+  wire [28:0] tlb_io_ptw_pmp_2_addr; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_ptw_pmp_2_mask; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_3_cfg_l; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_ptw_pmp_3_cfg_a; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_3_cfg_x; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_3_cfg_w; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_3_cfg_r; // @[Frontend.scala 102:19]
+  wire [28:0] tlb_io_ptw_pmp_3_addr; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_ptw_pmp_3_mask; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_4_cfg_l; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_ptw_pmp_4_cfg_a; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_4_cfg_x; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_4_cfg_w; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_4_cfg_r; // @[Frontend.scala 102:19]
+  wire [28:0] tlb_io_ptw_pmp_4_addr; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_ptw_pmp_4_mask; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_5_cfg_l; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_ptw_pmp_5_cfg_a; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_5_cfg_x; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_5_cfg_w; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_5_cfg_r; // @[Frontend.scala 102:19]
+  wire [28:0] tlb_io_ptw_pmp_5_addr; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_ptw_pmp_5_mask; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_6_cfg_l; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_ptw_pmp_6_cfg_a; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_6_cfg_x; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_6_cfg_w; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_6_cfg_r; // @[Frontend.scala 102:19]
+  wire [28:0] tlb_io_ptw_pmp_6_addr; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_ptw_pmp_6_mask; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_7_cfg_l; // @[Frontend.scala 102:19]
+  wire [1:0] tlb_io_ptw_pmp_7_cfg_a; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_7_cfg_x; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_7_cfg_w; // @[Frontend.scala 102:19]
+  wire  tlb_io_ptw_pmp_7_cfg_r; // @[Frontend.scala 102:19]
+  wire [28:0] tlb_io_ptw_pmp_7_addr; // @[Frontend.scala 102:19]
+  wire [30:0] tlb_io_ptw_pmp_7_mask; // @[Frontend.scala 102:19]
+  wire  btb_clock; // @[Frontend.scala 185:21]
+  wire  btb_reset; // @[Frontend.scala 185:21]
+  wire [31:0] btb_io_req_bits_addr; // @[Frontend.scala 185:21]
+  wire  btb_io_resp_valid; // @[Frontend.scala 185:21]
+  wire  btb_io_resp_bits_taken; // @[Frontend.scala 185:21]
+  wire  btb_io_resp_bits_bridx; // @[Frontend.scala 185:21]
+  wire [31:0] btb_io_resp_bits_target; // @[Frontend.scala 185:21]
+  wire [4:0] btb_io_resp_bits_entry; // @[Frontend.scala 185:21]
+  wire [7:0] btb_io_resp_bits_bht_history; // @[Frontend.scala 185:21]
+  wire  btb_io_resp_bits_bht_value; // @[Frontend.scala 185:21]
+  wire  btb_io_btb_update_valid; // @[Frontend.scala 185:21]
+  wire [4:0] btb_io_btb_update_bits_prediction_entry; // @[Frontend.scala 185:21]
+  wire [31:0] btb_io_btb_update_bits_pc; // @[Frontend.scala 185:21]
+  wire  btb_io_btb_update_bits_isValid; // @[Frontend.scala 185:21]
+  wire [31:0] btb_io_btb_update_bits_br_pc; // @[Frontend.scala 185:21]
+  wire [1:0] btb_io_btb_update_bits_cfiType; // @[Frontend.scala 185:21]
+  wire  btb_io_bht_update_valid; // @[Frontend.scala 185:21]
+  wire [7:0] btb_io_bht_update_bits_prediction_history; // @[Frontend.scala 185:21]
+  wire [31:0] btb_io_bht_update_bits_pc; // @[Frontend.scala 185:21]
+  wire  btb_io_bht_update_bits_branch; // @[Frontend.scala 185:21]
+  wire  btb_io_bht_update_bits_taken; // @[Frontend.scala 185:21]
+  wire  btb_io_bht_update_bits_mispredict; // @[Frontend.scala 185:21]
+  wire  btb_io_bht_advance_valid; // @[Frontend.scala 185:21]
+  wire  btb_io_bht_advance_bits_bht_value; // @[Frontend.scala 185:21]
+  wire  btb_io_ras_update_valid; // @[Frontend.scala 185:21]
+  wire [1:0] btb_io_ras_update_bits_cfiType; // @[Frontend.scala 185:21]
+  wire [31:0] btb_io_ras_update_bits_returnAddr; // @[Frontend.scala 185:21]
+  wire  btb_io_ras_head_valid; // @[Frontend.scala 185:21]
+  wire [31:0] btb_io_ras_head_bits; // @[Frontend.scala 185:21]
+  wire  btb_io_flush; // @[Frontend.scala 185:21]
+  wire  _T_9 = ~reset; // @[Frontend.scala 93:9]
+  reg  s1_valid; // @[Frontend.scala 104:21]
+  reg  s2_valid; // @[Frontend.scala 105:25]
+  wire  _s0_fq_has_space_T_4 = ~s1_valid; // @[Frontend.scala 108:45]
+  wire  _s0_fq_has_space_T_5 = ~s2_valid; // @[Frontend.scala 108:58]
+  wire  _s0_fq_has_space_T_7 = ~fq_io_mask[3] & (~s1_valid | ~s2_valid); // @[Frontend.scala 108:41]
+  wire  _s0_fq_has_space_T_8 = ~fq_io_mask[2] | _s0_fq_has_space_T_7; // @[Frontend.scala 107:40]
+  wire  _s0_fq_has_space_T_14 = ~fq_io_mask[4] & (_s0_fq_has_space_T_4 & _s0_fq_has_space_T_5); // @[Frontend.scala 109:41]
+  wire  s0_fq_has_space = _s0_fq_has_space_T_8 | _s0_fq_has_space_T_14; // @[Frontend.scala 108:70]
+  wire  s0_valid = io_cpu_req_valid | s0_fq_has_space; // @[Frontend.scala 110:35]
+  reg [31:0] s1_pc; // @[Frontend.scala 112:18]
+  reg  s1_speculative; // @[Frontend.scala 113:27]
+  reg [31:0] s2_pc; // @[Frontend.scala 114:22]
+  reg  s2_btb_resp_valid; // @[Frontend.scala 115:44]
+  reg  s2_btb_resp_bits_taken; // @[Frontend.scala 116:29]
+  reg  s2_btb_resp_bits_bridx; // @[Frontend.scala 116:29]
+  reg [4:0] s2_btb_resp_bits_entry; // @[Frontend.scala 116:29]
+  reg [7:0] s2_btb_resp_bits_bht_history; // @[Frontend.scala 116:29]
+  reg  s2_btb_resp_bits_bht_value; // @[Frontend.scala 116:29]
+  wire  s2_btb_taken = s2_btb_resp_valid & s2_btb_resp_bits_taken; // @[Frontend.scala 117:40]
+  reg  s2_tlb_resp_ae_inst; // @[Frontend.scala 118:24]
+  reg  s2_tlb_resp_cacheable; // @[Frontend.scala 118:24]
+  reg  s2_speculative; // @[Frontend.scala 120:27]
+  reg  s2_partial_insn_valid; // @[Frontend.scala 121:38]
+  reg [15:0] s2_partial_insn; // @[Frontend.scala 122:28]
+  reg  wrong_path; // @[Frontend.scala 123:27]
+  wire [31:0] _s1_base_pc_T = ~s1_pc; // @[Frontend.scala 125:22]
+  wire [31:0] _s1_base_pc_T_1 = _s1_base_pc_T | 32'h3; // @[Frontend.scala 125:29]
+  wire [31:0] s1_base_pc = ~_s1_base_pc_T_1; // @[Frontend.scala 125:20]
+  wire [31:0] ntpc = s1_base_pc + 32'h4; // @[Frontend.scala 126:25]
+  wire  _s2_replay_T = fq_io_enq_ready & fq_io_enq_valid; // @[Decoupled.scala 50:35]
+  reg  s2_replay_REG; // @[Frontend.scala 131:58]
+  wire  s2_replay = s2_valid & ~_s2_replay_T | s2_replay_REG; // @[Frontend.scala 131:48]
+  wire  _taken_prevRVI_T_1 = s2_partial_insn[1:0] != 2'h3; // @[Frontend.scala 214:45]
+  wire  taken_prevRVI = s2_partial_insn_valid & ~_taken_prevRVI_T_1; // @[Frontend.scala 215:31]
+  wire [15:0] taken_bits = fq_io_enq_bits_data[15:0]; // @[Frontend.scala 217:37]
+  wire [31:0] taken_rviBits = {taken_bits,s2_partial_insn}; // @[Cat.scala 31:58]
+  wire  taken_rviJump = taken_rviBits[6:0] == 7'h6f; // @[Frontend.scala 221:34]
+  wire  taken_rviJALR = taken_rviBits[6:0] == 7'h67; // @[Frontend.scala 222:34]
+  wire  taken_rviBranch = taken_rviBits[6:0] == 7'h63; // @[Frontend.scala 220:36]
+  wire  taken_valid = fq_io_enq_bits_mask[0] & ~taken_prevRVI; // @[Frontend.scala 216:44]
+  wire [15:0] _taken_rvcJump_T = taken_bits & 16'he003; // @[Frontend.scala 227:26]
+  wire  taken_rvcJAL = 16'h2001 == _taken_rvcJump_T; // @[Frontend.scala 226:45]
+  wire  taken_rvcJump = 16'ha001 == _taken_rvcJump_T | taken_rvcJAL; // @[Frontend.scala 227:47]
+  wire [15:0] _taken_rvcJALR_T = taken_bits & 16'hf003; // @[Frontend.scala 231:26]
+  wire  _taken_rvcJALR_T_3 = taken_bits[6:2] == 5'h0; // @[Frontend.scala 231:62]
+  wire  taken_rvcJALR = 16'h9002 == _taken_rvcJALR_T & taken_bits[6:2] == 5'h0; // @[Frontend.scala 231:49]
+  wire  taken_rvcJR = 16'h8002 == _taken_rvcJALR_T & _taken_rvcJALR_T_3; // @[Frontend.scala 229:46]
+  wire  taken_rvcBranch = 16'hc001 == _taken_rvcJump_T | 16'he001 == _taken_rvcJump_T; // @[Frontend.scala 225:52]
+  wire  _taken_taken_T_8 = taken_valid & (taken_rvcJump | taken_rvcJALR | taken_rvcJR | taken_rvcBranch &
+    s2_btb_resp_bits_bht_value); // @[Frontend.scala 237:15]
+  wire  taken_taken = taken_prevRVI & (taken_rviJump | taken_rviJALR | taken_rviBranch & s2_btb_resp_bits_bht_value) |
+    _taken_taken_T_8; // @[Frontend.scala 236:71]
+  wire  taken_idx = ~taken_taken; // @[Frontend.scala 251:13]
+  wire  _taken_T_36 = ~s2_btb_taken; // @[Frontend.scala 260:15]
+  wire  _taken_prevRVI_T_4 = taken_bits[1:0] != 2'h3; // @[Frontend.scala 214:45]
+  wire  _taken_prevRVI_T_5 = ~_taken_prevRVI_T_4; // @[Frontend.scala 215:34]
+  wire  taken_prevRVI_1 = taken_valid & ~_taken_prevRVI_T_4; // @[Frontend.scala 215:31]
+  wire [15:0] taken_bits_1 = fq_io_enq_bits_data[31:16]; // @[Frontend.scala 217:37]
+  wire [31:0] taken_rviBits_1 = {taken_bits_1,taken_bits}; // @[Cat.scala 31:58]
+  wire  taken_rviJALR_1 = taken_rviBits_1[6:0] == 7'h67; // @[Frontend.scala 222:34]
+  wire [4:0] _taken_rviReturn_T_10 = taken_rviBits_1[19:15] & 5'h1b; // @[Frontend.scala 223:66]
+  wire  taken_rviReturn_1 = taken_rviJALR_1 & ~taken_rviBits_1[7] & 5'h1 == _taken_rviReturn_T_10; // @[Frontend.scala 223:46]
+  wire  taken_valid_1 = fq_io_enq_bits_mask[1] & ~taken_prevRVI_1; // @[Frontend.scala 216:44]
+  wire [15:0] _taken_rvcJR_T_4 = taken_bits_1 & 16'hf003; // @[Frontend.scala 229:24]
+  wire  _taken_rvcJR_T_7 = taken_bits_1[6:2] == 5'h0; // @[Frontend.scala 229:59]
+  wire  taken_rvcJR_1 = 16'h8002 == _taken_rvcJR_T_4 & taken_bits_1[6:2] == 5'h0; // @[Frontend.scala 229:46]
+  wire [4:0] _taken_rvcReturn_T_4 = taken_bits_1[11:7] & 5'h1b; // @[Frontend.scala 230:49]
+  wire  taken_rvcReturn_1 = taken_rvcJR_1 & 5'h1 == _taken_rvcReturn_T_4; // @[Frontend.scala 230:29]
+  wire  taken_predictReturn_1 = btb_io_ras_head_valid & (taken_prevRVI_1 & taken_rviReturn_1 | taken_valid_1 &
+    taken_rvcReturn_1); // @[Frontend.scala 238:49]
+  wire [4:0] _taken_rviReturn_T_4 = taken_rviBits[19:15] & 5'h1b; // @[Frontend.scala 223:66]
+  wire  taken_rviReturn = taken_rviJALR & ~taken_rviBits[7] & 5'h1 == _taken_rviReturn_T_4; // @[Frontend.scala 223:46]
+  wire [4:0] _taken_rvcReturn_T_1 = taken_bits[11:7] & 5'h1b; // @[Frontend.scala 230:49]
+  wire  taken_rvcReturn = taken_rvcJR & 5'h1 == _taken_rvcReturn_T_1; // @[Frontend.scala 230:29]
+  wire  taken_predictReturn = btb_io_ras_head_valid & (taken_prevRVI & taken_rviReturn | taken_valid & taken_rvcReturn); // @[Frontend.scala 238:49]
+  wire  _taken_T_16 = s2_valid & taken_predictReturn; // @[Frontend.scala 264:26]
+  wire  _GEN_54 = ~s2_btb_taken & _taken_T_16; // @[Frontend.scala 260:30]
+  wire  _GEN_87 = s2_valid & taken_predictReturn_1 | _GEN_54; // @[Frontend.scala 264:44 265:20]
+  wire  _GEN_90 = ~s2_btb_taken ? _GEN_87 : ~s2_btb_taken & _taken_T_16; // @[Frontend.scala 260:30]
+  wire  useRAS = taken_idx ? _GEN_90 : _GEN_54; // @[Frontend.scala 251:25]
+  wire  taken_rviBranch_1 = taken_rviBits_1[6:0] == 7'h63; // @[Frontend.scala 220:36]
+  wire [15:0] _taken_rvcBranch_T_4 = taken_bits_1 & 16'he003; // @[Frontend.scala 225:28]
+  wire  taken_rvcBranch_1 = 16'hc001 == _taken_rvcBranch_T_4 | 16'he001 == _taken_rvcBranch_T_4; // @[Frontend.scala 225:52]
+  wire  _taken_predictBranch_T_5 = taken_prevRVI_1 & taken_rviBranch_1 | taken_valid_1 & taken_rvcBranch_1; // @[Frontend.scala 240:66]
+  wire  taken_predictBranch_1 = s2_btb_resp_bits_bht_value & (taken_prevRVI_1 & taken_rviBranch_1 | taken_valid_1 &
+    taken_rvcBranch_1); // @[Frontend.scala 240:41]
+  wire  taken_rviJump_1 = taken_rviBits_1[6:0] == 7'h6f; // @[Frontend.scala 221:34]
+  wire  taken_rvcJAL_1 = 16'h2001 == _taken_rvcBranch_T_4; // @[Frontend.scala 226:45]
+  wire  taken_rvcJump_1 = 16'ha001 == _taken_rvcBranch_T_4 | taken_rvcJAL_1; // @[Frontend.scala 227:47]
+  wire  taken_predictJump_1 = taken_prevRVI_1 & taken_rviJump_1 | taken_valid_1 & taken_rvcJump_1; // @[Frontend.scala 239:44]
+  wire [31:0] _s2_base_pc_T = ~s2_pc; // @[Frontend.scala 207:24]
+  wire [31:0] _s2_base_pc_T_1 = _s2_base_pc_T | 32'h3; // @[Frontend.scala 207:31]
+  wire [31:0] s2_base_pc = ~_s2_base_pc_T_1; // @[Frontend.scala 207:22]
+  wire [31:0] taken_pc_1 = s2_base_pc | 32'h2; // @[Frontend.scala 268:33]
+  wire [31:0] _taken_npc_T_6 = taken_pc_1 - 32'h2; // @[Frontend.scala 271:36]
+  wire [31:0] _taken_npc_T_8 = taken_prevRVI_1 ? _taken_npc_T_6 : taken_pc_1; // @[Frontend.scala 271:57]
+  wire  taken_rviImm_sign_2 = taken_rviBits_1[31]; // @[RocketCore.scala 1083:53]
+  wire  taken_rviImm_hi_hi_hi_2 = taken_rviBits_1[31]; // @[Cat.scala 31:58]
+  wire [10:0] taken_rviImm_hi_hi_lo_2 = {11{taken_rviImm_sign_2}}; // @[Cat.scala 31:58]
+  wire [7:0] taken_rviImm_hi_lo_hi_2 = taken_rviBits_1[19:12]; // @[Cat.scala 31:58]
+  wire  taken_rviImm_hi_lo_lo_2 = taken_rviBits_1[20]; // @[Cat.scala 31:58]
+  wire [5:0] taken_rviImm_b10_5_2 = taken_rviBits_1[30:25]; // @[RocketCore.scala 1089:66]
+  wire [3:0] taken_rviImm_b4_1_2 = taken_rviBits_1[24:21]; // @[RocketCore.scala 1092:52]
+  wire [31:0] _taken_rviImm_T_7 = {taken_rviImm_hi_hi_hi_2,taken_rviImm_hi_hi_lo_2,taken_rviImm_hi_lo_hi_2,
+    taken_rviImm_hi_lo_lo_2,taken_rviImm_b10_5_2,taken_rviImm_b4_1_2,1'h0}; // @[RocketCore.scala 1097:53]
+  wire [7:0] taken_rviImm_hi_lo_hi_3 = {8{taken_rviImm_sign_2}}; // @[Cat.scala 31:58]
+  wire  taken_rviImm_hi_lo_lo_3 = taken_rviBits_1[7]; // @[Cat.scala 31:58]
+  wire [31:0] _taken_rviImm_T_9 = {taken_rviImm_hi_hi_hi_2,taken_rviImm_hi_hi_lo_2,taken_rviImm_hi_lo_hi_3,
+    taken_rviImm_hi_lo_lo_3,taken_rviImm_b10_5_2,taken_rviBits_1[11:8],1'h0}; // @[RocketCore.scala 1097:53]
+  wire [31:0] taken_rviImm_1 = taken_rviBits_1[3] ? $signed(_taken_rviImm_T_7) : $signed(_taken_rviImm_T_9); // @[Frontend.scala 233:23]
+  wire [4:0] _taken_rvcImm_T_25 = taken_bits_1[12] ? 5'h1f : 5'h0; // @[Bitwise.scala 74:12]
+  wire [12:0] _taken_rvcImm_T_31 = {_taken_rvcImm_T_25,taken_bits_1[6:5],taken_bits_1[2],taken_bits_1[11:10],
+    taken_bits_1[4:3],1'h0}; // @[Frontend.scala 228:66]
+  wire [9:0] _taken_rvcImm_T_34 = taken_bits_1[12] ? 10'h3ff : 10'h0; // @[Bitwise.scala 74:12]
+  wire [20:0] _taken_rvcImm_T_43 = {_taken_rvcImm_T_34,taken_bits_1[8],taken_bits_1[10:9],taken_bits_1[6],taken_bits_1[7
+    ],taken_bits_1[2],taken_bits_1[11],taken_bits_1[5:3],1'h0}; // @[Frontend.scala 228:106]
+  wire [20:0] taken_rvcImm_1 = taken_bits_1[14] ? $signed({{8{_taken_rvcImm_T_31[12]}},_taken_rvcImm_T_31}) : $signed(
+    _taken_rvcImm_T_43); // @[Frontend.scala 228:23]
+  wire [31:0] _taken_npc_T_9 = taken_prevRVI_1 ? $signed(taken_rviImm_1) : $signed({{11{taken_rvcImm_1[20]}},
+    taken_rvcImm_1}); // @[Frontend.scala 271:69]
+  wire [31:0] _taken_predicted_npc_T_1 = $signed(_taken_npc_T_8) + $signed(_taken_npc_T_9); // @[Frontend.scala 272:34]
+  wire  _taken_predictBranch_T_2 = taken_prevRVI & taken_rviBranch | taken_valid & taken_rvcBranch; // @[Frontend.scala 240:66]
+  wire  taken_predictBranch = s2_btb_resp_bits_bht_value & (taken_prevRVI & taken_rviBranch | taken_valid &
+    taken_rvcBranch); // @[Frontend.scala 240:41]
+  wire  taken_predictJump = taken_prevRVI & taken_rviJump | taken_valid & taken_rvcJump; // @[Frontend.scala 239:44]
+  wire [31:0] _taken_npc_T = ~_s2_base_pc_T_1; // @[Frontend.scala 270:32]
+  wire  taken_rviImm_sign = taken_rviBits[31]; // @[RocketCore.scala 1083:53]
+  wire  taken_rviImm_hi_hi_hi = taken_rviBits[31]; // @[Cat.scala 31:58]
+  wire [10:0] taken_rviImm_hi_hi_lo = {11{taken_rviImm_sign}}; // @[Cat.scala 31:58]
+  wire [7:0] taken_rviImm_hi_lo_hi = taken_rviBits[19:12]; // @[Cat.scala 31:58]
+  wire  taken_rviImm_hi_lo_lo = taken_rviBits[20]; // @[Cat.scala 31:58]
+  wire [5:0] taken_rviImm_b10_5 = taken_rviBits[30:25]; // @[RocketCore.scala 1089:66]
+  wire [3:0] taken_rviImm_b4_1 = taken_rviBits[24:21]; // @[RocketCore.scala 1092:52]
+  wire [31:0] _taken_rviImm_T_2 = {taken_rviImm_hi_hi_hi,taken_rviImm_hi_hi_lo,taken_rviImm_hi_lo_hi,
+    taken_rviImm_hi_lo_lo,taken_rviImm_b10_5,taken_rviImm_b4_1,1'h0}; // @[RocketCore.scala 1097:53]
+  wire [7:0] taken_rviImm_hi_lo_hi_1 = {8{taken_rviImm_sign}}; // @[Cat.scala 31:58]
+  wire  taken_rviImm_hi_lo_lo_1 = taken_rviBits[7]; // @[Cat.scala 31:58]
+  wire [31:0] _taken_rviImm_T_4 = {taken_rviImm_hi_hi_hi,taken_rviImm_hi_hi_lo,taken_rviImm_hi_lo_hi_1,
+    taken_rviImm_hi_lo_lo_1,taken_rviImm_b10_5,taken_rviBits[11:8],1'h0}; // @[RocketCore.scala 1097:53]
+  wire [31:0] taken_rviImm = taken_rviBits[3] ? $signed(_taken_rviImm_T_2) : $signed(_taken_rviImm_T_4); // @[Frontend.scala 233:23]
+  wire [32:0] _taken_npc_T_1 = $signed(taken_rviImm) - 32'sh2; // @[Frontend.scala 270:61]
+  wire [4:0] _taken_rvcImm_T_3 = taken_bits[12] ? 5'h1f : 5'h0; // @[Bitwise.scala 74:12]
+  wire [12:0] _taken_rvcImm_T_9 = {_taken_rvcImm_T_3,taken_bits[6:5],taken_bits[2],taken_bits[11:10],taken_bits[4:3],1'h0
+    }; // @[Frontend.scala 228:66]
+  wire [9:0] _taken_rvcImm_T_12 = taken_bits[12] ? 10'h3ff : 10'h0; // @[Bitwise.scala 74:12]
+  wire [20:0] _taken_rvcImm_T_21 = {_taken_rvcImm_T_12,taken_bits[8],taken_bits[10:9],taken_bits[6],taken_bits[7],
+    taken_bits[2],taken_bits[11],taken_bits[5:3],1'h0}; // @[Frontend.scala 228:106]
+  wire [20:0] taken_rvcImm = taken_bits[14] ? $signed({{8{_taken_rvcImm_T_9[12]}},_taken_rvcImm_T_9}) : $signed(
+    _taken_rvcImm_T_21); // @[Frontend.scala 228:23]
+  wire [32:0] _taken_npc_T_2 = taken_prevRVI ? $signed(_taken_npc_T_1) : $signed({{12{taken_rvcImm[20]}},taken_rvcImm}); // @[Frontend.scala 270:44]
+  wire [32:0] _GEN_140 = {{1{_taken_npc_T[31]}},_taken_npc_T}; // @[Frontend.scala 270:39]
+  wire [32:0] _taken_predicted_npc_T = $signed(_GEN_140) + $signed(_taken_npc_T_2); // @[Frontend.scala 272:34]
+  wire  predicted_taken = btb_io_resp_valid & btb_io_resp_bits_taken; // @[Frontend.scala 198:29]
+  wire [31:0] _GEN_37 = predicted_taken ? btb_io_resp_bits_target : ntpc; // @[Frontend.scala 198:56 199:21]
+  wire [32:0] _GEN_52 = s2_valid & (taken_predictBranch | taken_predictJump) ? _taken_predicted_npc_T : {{1'd0}, _GEN_37
+    }; // @[Frontend.scala 267:61 272:27]
+  wire [32:0] _GEN_55 = ~s2_btb_taken ? _GEN_52 : {{1'd0}, _GEN_37}; // @[Frontend.scala 260:30]
+  wire [32:0] _GEN_88 = s2_valid & (taken_predictBranch_1 | taken_predictJump_1) ? {{1'd0}, _taken_predicted_npc_T_1} :
+    _GEN_55; // @[Frontend.scala 267:61 272:27]
+  wire [32:0] _GEN_91 = ~s2_btb_taken ? _GEN_88 : _GEN_55; // @[Frontend.scala 260:30]
+  wire [32:0] _GEN_108 = taken_idx ? _GEN_91 : _GEN_55; // @[Frontend.scala 251:25]
+  wire [32:0] predicted_npc = useRAS ? {{1'd0}, btb_io_ras_head_bits} : _GEN_108; // @[Frontend.scala 311:19 312:21]
+  wire [32:0] npc = s2_replay ? {{1'd0}, s2_pc} : predicted_npc; // @[Frontend.scala 132:16]
+  wire  s0_speculative = s1_speculative | s2_valid & ~s2_speculative | predicted_taken; // @[Frontend.scala 138:72]
+  wire  _T_11 = ~s2_replay; // @[Frontend.scala 144:9]
+  wire  taken_rvcJALR_1 = 16'h9002 == _taken_rvcJR_T_4 & _taken_rvcJR_T_7; // @[Frontend.scala 231:49]
+  wire  _taken_taken_T_17 = taken_valid_1 & (taken_rvcJump_1 | taken_rvcJALR_1 | taken_rvcJR_1 | taken_rvcBranch_1 &
+    s2_btb_resp_bits_bht_value); // @[Frontend.scala 237:15]
+  wire  taken_taken_1 = taken_prevRVI_1 & (taken_rviJump_1 | taken_rviJALR_1 | taken_rviBranch_1 &
+    s2_btb_resp_bits_bht_value) | _taken_taken_T_17; // @[Frontend.scala 236:71]
+  wire  taken = taken_taken | taken_taken_1; // @[Frontend.scala 292:19]
+  wire  _GEN_125 = _s2_replay_T | io_cpu_req_valid; // @[Frontend.scala 322:{33,47}]
+  wire  _GEN_129 = taken ? _GEN_125 : io_cpu_req_valid; // @[Frontend.scala 318:20]
+  wire  s2_redirect = _taken_T_36 ? _GEN_129 : io_cpu_req_valid; // @[Frontend.scala 317:26]
+  wire  _GEN_0 = ~s2_replay & ~s2_redirect; // @[Frontend.scala 143:12 144:21 145:14]
+  wire  s2_can_speculatively_refill = s2_tlb_resp_cacheable & ~io_ptw_customCSRs_csrs_0_value[3]; // @[Frontend.scala 167:59]
+  reg  fq_io_enq_valid_REG; // @[Frontend.scala 171:29]
+  wire [32:0] _io_cpu_npc_T = io_cpu_req_valid ? {{1'd0}, io_cpu_req_bits_pc} : npc; // @[Frontend.scala 173:28]
+  wire [32:0] _io_cpu_npc_T_1 = ~_io_cpu_npc_T; // @[Frontend.scala 362:29]
+  wire [32:0] _io_cpu_npc_T_2 = _io_cpu_npc_T_1 | 33'h1; // @[Frontend.scala 362:33]
+  wire [32:0] _io_cpu_npc_T_3 = ~_io_cpu_npc_T_2; // @[Frontend.scala 362:27]
+  wire [2:0] _fq_io_enq_bits_mask_T_1 = 3'h3 << s2_pc[1]; // @[Frontend.scala 176:52]
+  wire  fetch_bubble_likely = ~fq_io_mask[1]; // @[Frontend.scala 299:33]
+  wire  _btb_io_btb_update_valid_T_2 = _s2_replay_T & ~wrong_path; // @[Frontend.scala 300:51]
+  wire  _taken_T_27 = ~s2_btb_resp_valid & (taken_predictBranch & s2_btb_resp_bits_bht_value | taken_predictJump |
+    taken_predictReturn); // @[Frontend.scala 279:34]
+  wire  _GEN_101 = ~s2_btb_resp_valid & (taken_predictBranch_1 & s2_btb_resp_bits_bht_value | taken_predictJump_1 |
+    taken_predictReturn_1) | ~s2_btb_resp_valid & (taken_predictBranch & s2_btb_resp_bits_bht_value | taken_predictJump
+     | taken_predictReturn); // @[Frontend.scala 279:125 280:21]
+  wire  updateBTB = taken_idx ? _GEN_101 : _taken_T_27; // @[Frontend.scala 251:25]
+  wire [1:0] _btb_io_btb_update_bits_br_pc_T = {taken_idx, 1'h0}; // @[Frontend.scala 304:63]
+  wire [31:0] _GEN_141 = {{30'd0}, _btb_io_btb_update_bits_br_pc_T}; // @[Frontend.scala 304:50]
+  wire [31:0] _btb_io_btb_update_bits_br_pc_T_1 = s2_base_pc | _GEN_141; // @[Frontend.scala 304:50]
+  wire [1:0] after_idx = taken_idx ? 2'h2 : 2'h1; // @[Frontend.scala 251:25 253:19]
+  wire [2:0] _btb_io_ras_update_bits_returnAddr_T = {after_idx, 1'h0}; // @[Frontend.scala 308:66]
+  wire [31:0] _GEN_142 = {{29'd0}, _btb_io_ras_update_bits_returnAddr_T}; // @[Frontend.scala 308:53]
+  wire  taken_rviCall = (taken_rviJALR | taken_rviJump) & taken_rviBits[7]; // @[Frontend.scala 224:42]
+  wire  taken_rvcCall = taken_rvcJAL | taken_rvcJALR; // @[Frontend.scala 232:28]
+  wire  _GEN_48 = s2_valid & s2_btb_resp_valid & ~s2_btb_resp_bits_bridx & taken_valid & _taken_prevRVI_T_5 |
+    icache_io_s2_kill & ~icache_io_resp_valid & ~s2_tlb_resp_ae_inst; // @[Frontend.scala 177:25 242:95 246:31]
+  wire  _GEN_49 = s2_valid & s2_btb_resp_valid & ~s2_btb_resp_bits_bridx & taken_valid & _taken_prevRVI_T_5 | wrong_path
+    ; // @[Frontend.scala 242:95 247:20 123:27]
+  wire  _taken_btb_io_ras_update_bits_cfiType_T = taken_prevRVI ? taken_rviReturn : taken_rvcReturn; // @[Frontend.scala 255:50]
+  wire  _taken_btb_io_ras_update_bits_cfiType_T_1 = taken_prevRVI ? taken_rviCall : taken_rvcCall; // @[Frontend.scala 256:50]
+  wire  _taken_btb_io_ras_update_bits_cfiType_T_2 = taken_prevRVI ? taken_rviBranch : taken_rvcBranch; // @[Frontend.scala 257:50]
+  wire  _taken_btb_io_ras_update_bits_cfiType_T_5 = _taken_btb_io_ras_update_bits_cfiType_T_2 ? 1'h0 : 1'h1; // @[Frontend.scala 257:46]
+  wire [1:0] _taken_btb_io_ras_update_bits_cfiType_T_6 = _taken_btb_io_ras_update_bits_cfiType_T_1 ? 2'h2 : {{1'd0},
+    _taken_btb_io_ras_update_bits_cfiType_T_5}; // @[Frontend.scala 256:46]
+  wire [1:0] _taken_btb_io_ras_update_bits_cfiType_T_7 = _taken_btb_io_ras_update_bits_cfiType_T ? 2'h3 :
+    _taken_btb_io_ras_update_bits_cfiType_T_6; // @[Frontend.scala 255:46]
+  wire  _GEN_50 = _s2_replay_T & taken_taken & ~taken_predictBranch & ~taken_predictJump & ~taken_predictReturn |
+    _GEN_49; // @[Frontend.scala 261:96 262:24]
+  wire  _GEN_53 = ~s2_btb_taken ? _GEN_50 : _GEN_49; // @[Frontend.scala 260:30]
+  wire  _GEN_56 = _taken_predictBranch_T_2 & _btb_io_btb_update_valid_T_2; // @[Frontend.scala 192:30 275:59 276:36]
+  wire  taken_rvc_1 = taken_bits_1[1:0] != 2'h3; // @[Frontend.scala 214:45]
+  wire  taken_rviCall_1 = (taken_rviJALR_1 | taken_rviJump_1) & taken_rviBits_1[7]; // @[Frontend.scala 224:42]
+  wire  taken_rvcCall_1 = taken_rvcJAL_1 | taken_rvcJALR_1; // @[Frontend.scala 232:28]
+  wire  _taken_T_33 = ~taken_rvc_1; // @[Frontend.scala 242:89]
+  wire  _GEN_85 = s2_valid & s2_btb_resp_valid & s2_btb_resp_bits_bridx & taken_valid_1 & ~taken_rvc_1 | _GEN_53; // @[Frontend.scala 242:95 247:20]
+  wire  _taken_btb_io_ras_update_bits_cfiType_T_8 = taken_prevRVI_1 ? taken_rviReturn_1 : taken_rvcReturn_1; // @[Frontend.scala 255:50]
+  wire  _taken_btb_io_ras_update_bits_cfiType_T_9 = taken_prevRVI_1 ? taken_rviCall_1 : taken_rvcCall_1; // @[Frontend.scala 256:50]
+  wire  _taken_btb_io_ras_update_bits_cfiType_T_10 = taken_prevRVI_1 ? taken_rviBranch_1 : taken_rvcBranch_1; // @[Frontend.scala 257:50]
+  wire  _taken_btb_io_ras_update_bits_cfiType_T_13 = _taken_btb_io_ras_update_bits_cfiType_T_10 ? 1'h0 : 1'h1; // @[Frontend.scala 257:46]
+  wire [1:0] _taken_btb_io_ras_update_bits_cfiType_T_14 = _taken_btb_io_ras_update_bits_cfiType_T_9 ? 2'h2 : {{1'd0},
+    _taken_btb_io_ras_update_bits_cfiType_T_13}; // @[Frontend.scala 256:46]
+  wire [1:0] _taken_btb_io_ras_update_bits_cfiType_T_15 = _taken_btb_io_ras_update_bits_cfiType_T_8 ? 2'h3 :
+    _taken_btb_io_ras_update_bits_cfiType_T_14; // @[Frontend.scala 255:46]
+  wire  _GEN_86 = _s2_replay_T & taken_taken_1 & ~taken_predictBranch_1 & ~taken_predictJump_1 & ~taken_predictReturn_1
+     | _GEN_85; // @[Frontend.scala 261:96 262:24]
+  wire  _GEN_92 = _taken_predictBranch_T_5 ? _btb_io_btb_update_valid_T_2 : _GEN_56; // @[Frontend.scala 275:59 276:36]
+  wire  _taken_T_61 = taken_valid_1 & taken_idx & _taken_T_33; // @[Frontend.scala 287:37]
+  wire [15:0] _taken_s2_partial_insn_T = taken_bits_1 | 16'h3; // @[Frontend.scala 289:37]
+  wire  _GEN_126 = taken ? taken_idx : s2_btb_resp_bits_bridx; // @[Frontend.scala 318:20 178:22 319:34]
+  wire  _GEN_127 = taken | s2_btb_taken; // @[Frontend.scala 318:20 179:28 320:34]
+  wire [4:0] _GEN_128 = taken ? 5'h1c : s2_btb_resp_bits_entry; // @[Frontend.scala 318:20 178:22 321:34]
+  ICache icache ( // @[Frontend.scala 66:26]
+    .clock(icache_clock),
+    .reset(icache_reset),
+    .auto_slave_in_a_ready(icache_auto_slave_in_a_ready),
+    .auto_slave_in_a_valid(icache_auto_slave_in_a_valid),
+    .auto_slave_in_a_bits_opcode(icache_auto_slave_in_a_bits_opcode),
+    .auto_slave_in_a_bits_size(icache_auto_slave_in_a_bits_size),
+    .auto_slave_in_a_bits_source(icache_auto_slave_in_a_bits_source),
+    .auto_slave_in_a_bits_address(icache_auto_slave_in_a_bits_address),
+    .auto_slave_in_a_bits_mask(icache_auto_slave_in_a_bits_mask),
+    .auto_slave_in_a_bits_data(icache_auto_slave_in_a_bits_data),
+    .auto_slave_in_d_ready(icache_auto_slave_in_d_ready),
+    .auto_slave_in_d_valid(icache_auto_slave_in_d_valid),
+    .auto_slave_in_d_bits_opcode(icache_auto_slave_in_d_bits_opcode),
+    .auto_slave_in_d_bits_size(icache_auto_slave_in_d_bits_size),
+    .auto_slave_in_d_bits_source(icache_auto_slave_in_d_bits_source),
+    .auto_slave_in_d_bits_data(icache_auto_slave_in_d_bits_data),
+    .auto_master_out_a_ready(icache_auto_master_out_a_ready),
+    .auto_master_out_a_valid(icache_auto_master_out_a_valid),
+    .auto_master_out_a_bits_address(icache_auto_master_out_a_bits_address),
+    .auto_master_out_d_ready(icache_auto_master_out_d_ready),
+    .auto_master_out_d_valid(icache_auto_master_out_d_valid),
+    .auto_master_out_d_bits_opcode(icache_auto_master_out_d_bits_opcode),
+    .auto_master_out_d_bits_size(icache_auto_master_out_d_bits_size),
+    .auto_master_out_d_bits_data(icache_auto_master_out_d_bits_data),
+    .auto_master_out_d_bits_corrupt(icache_auto_master_out_d_bits_corrupt),
+    .io_req_ready(icache_io_req_ready),
+    .io_req_valid(icache_io_req_valid),
+    .io_req_bits_addr(icache_io_req_bits_addr),
+    .io_s1_paddr(icache_io_s1_paddr),
+    .io_s2_vaddr(icache_io_s2_vaddr),
+    .io_s1_kill(icache_io_s1_kill),
+    .io_s2_kill(icache_io_s2_kill),
+    .io_resp_valid(icache_io_resp_valid),
+    .io_resp_bits_data(icache_io_resp_bits_data),
+    .io_resp_bits_ae(icache_io_resp_bits_ae),
+    .io_invalidate(icache_io_invalidate), // <no_sram>
+    .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+    .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+    .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+    .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+    .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+    .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+    .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask), // <no_sram>
+    .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+  );
+  ShiftQueue fq ( // @[Frontend.scala 88:57]
+    .clock(fq_clock),
+    .reset(fq_reset),
+    .io_enq_ready(fq_io_enq_ready),
+    .io_enq_valid(fq_io_enq_valid),
+    .io_enq_bits_btb_taken(fq_io_enq_bits_btb_taken),
+    .io_enq_bits_btb_bridx(fq_io_enq_bits_btb_bridx),
+    .io_enq_bits_btb_entry(fq_io_enq_bits_btb_entry),
+    .io_enq_bits_btb_bht_history(fq_io_enq_bits_btb_bht_history),
+    .io_enq_bits_pc(fq_io_enq_bits_pc),
+    .io_enq_bits_data(fq_io_enq_bits_data),
+    .io_enq_bits_mask(fq_io_enq_bits_mask),
+    .io_enq_bits_xcpt_ae_inst(fq_io_enq_bits_xcpt_ae_inst),
+    .io_enq_bits_replay(fq_io_enq_bits_replay),
+    .io_deq_ready(fq_io_deq_ready),
+    .io_deq_valid(fq_io_deq_valid),
+    .io_deq_bits_btb_taken(fq_io_deq_bits_btb_taken),
+    .io_deq_bits_btb_bridx(fq_io_deq_bits_btb_bridx),
+    .io_deq_bits_btb_entry(fq_io_deq_bits_btb_entry),
+    .io_deq_bits_btb_bht_history(fq_io_deq_bits_btb_bht_history),
+    .io_deq_bits_pc(fq_io_deq_bits_pc),
+    .io_deq_bits_data(fq_io_deq_bits_data),
+    .io_deq_bits_xcpt_ae_inst(fq_io_deq_bits_xcpt_ae_inst),
+    .io_deq_bits_replay(fq_io_deq_bits_replay),
+    .io_mask(fq_io_mask)
+  );
+  TLB_1 tlb ( // @[Frontend.scala 102:19]
+    .io_req_bits_vaddr(tlb_io_req_bits_vaddr),
+    .io_req_bits_prv(tlb_io_req_bits_prv),
+    .io_resp_paddr(tlb_io_resp_paddr),
+    .io_resp_ae_inst(tlb_io_resp_ae_inst),
+    .io_resp_cacheable(tlb_io_resp_cacheable),
+    .io_ptw_status_debug(tlb_io_ptw_status_debug),
+    .io_ptw_pmp_0_cfg_l(tlb_io_ptw_pmp_0_cfg_l),
+    .io_ptw_pmp_0_cfg_a(tlb_io_ptw_pmp_0_cfg_a),
+    .io_ptw_pmp_0_cfg_x(tlb_io_ptw_pmp_0_cfg_x),
+    .io_ptw_pmp_0_cfg_w(tlb_io_ptw_pmp_0_cfg_w),
+    .io_ptw_pmp_0_cfg_r(tlb_io_ptw_pmp_0_cfg_r),
+    .io_ptw_pmp_0_addr(tlb_io_ptw_pmp_0_addr),
+    .io_ptw_pmp_0_mask(tlb_io_ptw_pmp_0_mask),
+    .io_ptw_pmp_1_cfg_l(tlb_io_ptw_pmp_1_cfg_l),
+    .io_ptw_pmp_1_cfg_a(tlb_io_ptw_pmp_1_cfg_a),
+    .io_ptw_pmp_1_cfg_x(tlb_io_ptw_pmp_1_cfg_x),
+    .io_ptw_pmp_1_cfg_w(tlb_io_ptw_pmp_1_cfg_w),
+    .io_ptw_pmp_1_cfg_r(tlb_io_ptw_pmp_1_cfg_r),
+    .io_ptw_pmp_1_addr(tlb_io_ptw_pmp_1_addr),
+    .io_ptw_pmp_1_mask(tlb_io_ptw_pmp_1_mask),
+    .io_ptw_pmp_2_cfg_l(tlb_io_ptw_pmp_2_cfg_l),
+    .io_ptw_pmp_2_cfg_a(tlb_io_ptw_pmp_2_cfg_a),
+    .io_ptw_pmp_2_cfg_x(tlb_io_ptw_pmp_2_cfg_x),
+    .io_ptw_pmp_2_cfg_w(tlb_io_ptw_pmp_2_cfg_w),
+    .io_ptw_pmp_2_cfg_r(tlb_io_ptw_pmp_2_cfg_r),
+    .io_ptw_pmp_2_addr(tlb_io_ptw_pmp_2_addr),
+    .io_ptw_pmp_2_mask(tlb_io_ptw_pmp_2_mask),
+    .io_ptw_pmp_3_cfg_l(tlb_io_ptw_pmp_3_cfg_l),
+    .io_ptw_pmp_3_cfg_a(tlb_io_ptw_pmp_3_cfg_a),
+    .io_ptw_pmp_3_cfg_x(tlb_io_ptw_pmp_3_cfg_x),
+    .io_ptw_pmp_3_cfg_w(tlb_io_ptw_pmp_3_cfg_w),
+    .io_ptw_pmp_3_cfg_r(tlb_io_ptw_pmp_3_cfg_r),
+    .io_ptw_pmp_3_addr(tlb_io_ptw_pmp_3_addr),
+    .io_ptw_pmp_3_mask(tlb_io_ptw_pmp_3_mask),
+    .io_ptw_pmp_4_cfg_l(tlb_io_ptw_pmp_4_cfg_l),
+    .io_ptw_pmp_4_cfg_a(tlb_io_ptw_pmp_4_cfg_a),
+    .io_ptw_pmp_4_cfg_x(tlb_io_ptw_pmp_4_cfg_x),
+    .io_ptw_pmp_4_cfg_w(tlb_io_ptw_pmp_4_cfg_w),
+    .io_ptw_pmp_4_cfg_r(tlb_io_ptw_pmp_4_cfg_r),
+    .io_ptw_pmp_4_addr(tlb_io_ptw_pmp_4_addr),
+    .io_ptw_pmp_4_mask(tlb_io_ptw_pmp_4_mask),
+    .io_ptw_pmp_5_cfg_l(tlb_io_ptw_pmp_5_cfg_l),
+    .io_ptw_pmp_5_cfg_a(tlb_io_ptw_pmp_5_cfg_a),
+    .io_ptw_pmp_5_cfg_x(tlb_io_ptw_pmp_5_cfg_x),
+    .io_ptw_pmp_5_cfg_w(tlb_io_ptw_pmp_5_cfg_w),
+    .io_ptw_pmp_5_cfg_r(tlb_io_ptw_pmp_5_cfg_r),
+    .io_ptw_pmp_5_addr(tlb_io_ptw_pmp_5_addr),
+    .io_ptw_pmp_5_mask(tlb_io_ptw_pmp_5_mask),
+    .io_ptw_pmp_6_cfg_l(tlb_io_ptw_pmp_6_cfg_l),
+    .io_ptw_pmp_6_cfg_a(tlb_io_ptw_pmp_6_cfg_a),
+    .io_ptw_pmp_6_cfg_x(tlb_io_ptw_pmp_6_cfg_x),
+    .io_ptw_pmp_6_cfg_w(tlb_io_ptw_pmp_6_cfg_w),
+    .io_ptw_pmp_6_cfg_r(tlb_io_ptw_pmp_6_cfg_r),
+    .io_ptw_pmp_6_addr(tlb_io_ptw_pmp_6_addr),
+    .io_ptw_pmp_6_mask(tlb_io_ptw_pmp_6_mask),
+    .io_ptw_pmp_7_cfg_l(tlb_io_ptw_pmp_7_cfg_l),
+    .io_ptw_pmp_7_cfg_a(tlb_io_ptw_pmp_7_cfg_a),
+    .io_ptw_pmp_7_cfg_x(tlb_io_ptw_pmp_7_cfg_x),
+    .io_ptw_pmp_7_cfg_w(tlb_io_ptw_pmp_7_cfg_w),
+    .io_ptw_pmp_7_cfg_r(tlb_io_ptw_pmp_7_cfg_r),
+    .io_ptw_pmp_7_addr(tlb_io_ptw_pmp_7_addr),
+    .io_ptw_pmp_7_mask(tlb_io_ptw_pmp_7_mask)
+  );
+  BTB btb ( // @[Frontend.scala 185:21]
+    .clock(btb_clock),
+    .reset(btb_reset),
+    .io_req_bits_addr(btb_io_req_bits_addr),
+    .io_resp_valid(btb_io_resp_valid),
+    .io_resp_bits_taken(btb_io_resp_bits_taken),
+    .io_resp_bits_bridx(btb_io_resp_bits_bridx),
+    .io_resp_bits_target(btb_io_resp_bits_target),
+    .io_resp_bits_entry(btb_io_resp_bits_entry),
+    .io_resp_bits_bht_history(btb_io_resp_bits_bht_history),
+    .io_resp_bits_bht_value(btb_io_resp_bits_bht_value),
+    .io_btb_update_valid(btb_io_btb_update_valid),
+    .io_btb_update_bits_prediction_entry(btb_io_btb_update_bits_prediction_entry),
+    .io_btb_update_bits_pc(btb_io_btb_update_bits_pc),
+    .io_btb_update_bits_isValid(btb_io_btb_update_bits_isValid),
+    .io_btb_update_bits_br_pc(btb_io_btb_update_bits_br_pc),
+    .io_btb_update_bits_cfiType(btb_io_btb_update_bits_cfiType),
+    .io_bht_update_valid(btb_io_bht_update_valid),
+    .io_bht_update_bits_prediction_history(btb_io_bht_update_bits_prediction_history),
+    .io_bht_update_bits_pc(btb_io_bht_update_bits_pc),
+    .io_bht_update_bits_branch(btb_io_bht_update_bits_branch),
+    .io_bht_update_bits_taken(btb_io_bht_update_bits_taken),
+    .io_bht_update_bits_mispredict(btb_io_bht_update_bits_mispredict),
+    .io_bht_advance_valid(btb_io_bht_advance_valid),
+    .io_bht_advance_bits_bht_value(btb_io_bht_advance_bits_bht_value),
+    .io_ras_update_valid(btb_io_ras_update_valid),
+    .io_ras_update_bits_cfiType(btb_io_ras_update_bits_cfiType),
+    .io_ras_update_bits_returnAddr(btb_io_ras_update_bits_returnAddr),
+    .io_ras_head_valid(btb_io_ras_head_valid),
+    .io_ras_head_bits(btb_io_ras_head_bits),
+    .io_flush(btb_io_flush)
+  );
+  assign auto_icache_slave_in_a_ready = icache_auto_slave_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_icache_slave_in_d_valid = icache_auto_slave_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_icache_slave_in_d_bits_opcode = icache_auto_slave_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_icache_slave_in_d_bits_size = icache_auto_slave_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_icache_slave_in_d_bits_source = icache_auto_slave_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_icache_slave_in_d_bits_data = icache_auto_slave_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_icache_master_out_a_valid = icache_auto_master_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_icache_master_out_a_bits_address = icache_auto_master_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_icache_master_out_d_ready = icache_auto_master_out_d_ready; // @[LazyModule.scala 311:12]
+  assign io_cpu_resp_valid = fq_io_deq_valid; // @[Frontend.scala 331:15]
+  assign io_cpu_resp_bits_btb_taken = fq_io_deq_bits_btb_taken; // @[Frontend.scala 331:15]
+  assign io_cpu_resp_bits_btb_bridx = fq_io_deq_bits_btb_bridx; // @[Frontend.scala 331:15]
+  assign io_cpu_resp_bits_btb_entry = fq_io_deq_bits_btb_entry; // @[Frontend.scala 331:15]
+  assign io_cpu_resp_bits_btb_bht_history = fq_io_deq_bits_btb_bht_history; // @[Frontend.scala 331:15]
+  assign io_cpu_resp_bits_pc = fq_io_deq_bits_pc; // @[Frontend.scala 331:15]
+  assign io_cpu_resp_bits_data = fq_io_deq_bits_data; // @[Frontend.scala 331:15]
+  assign io_cpu_resp_bits_xcpt_ae_inst = fq_io_deq_bits_xcpt_ae_inst; // @[Frontend.scala 331:15]
+  assign io_cpu_resp_bits_replay = fq_io_deq_bits_replay; // @[Frontend.scala 331:15]
+  assign io_cpu_npc = _io_cpu_npc_T_3[31:0]; // @[Frontend.scala 173:14]
+  assign icache_clock = clock; // @[Frontend.scala 98:16]
+  assign icache_reset = reset;
+  assign icache_auto_slave_in_a_valid = auto_icache_slave_in_a_valid; // @[LazyModule.scala 309:16]
+  assign icache_auto_slave_in_a_bits_opcode = auto_icache_slave_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign icache_auto_slave_in_a_bits_size = auto_icache_slave_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign icache_auto_slave_in_a_bits_source = auto_icache_slave_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign icache_auto_slave_in_a_bits_address = auto_icache_slave_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign icache_auto_slave_in_a_bits_mask = auto_icache_slave_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign icache_auto_slave_in_a_bits_data = auto_icache_slave_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign icache_auto_slave_in_d_ready = auto_icache_slave_in_d_ready; // @[LazyModule.scala 309:16]
+  assign icache_auto_master_out_a_ready = auto_icache_master_out_a_ready; // @[LazyModule.scala 311:12]
+  assign icache_auto_master_out_d_valid = auto_icache_master_out_d_valid; // @[LazyModule.scala 311:12]
+  assign icache_auto_master_out_d_bits_opcode = auto_icache_master_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign icache_auto_master_out_d_bits_size = auto_icache_master_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign icache_auto_master_out_d_bits_data = auto_icache_master_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign icache_auto_master_out_d_bits_corrupt = auto_icache_master_out_d_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign icache_io_req_valid = io_cpu_req_valid | s0_fq_has_space; // @[Frontend.scala 110:35]
+  assign icache_io_req_bits_addr = io_cpu_npc; // @[Frontend.scala 162:27]
+  assign icache_io_s1_paddr = tlb_io_resp_paddr; // @[Frontend.scala 164:22]
+  assign icache_io_s2_vaddr = s2_pc; // @[Frontend.scala 165:22]
+  assign icache_io_s1_kill = s2_redirect | s2_replay; // @[Frontend.scala 166:56]
+  assign icache_io_s2_kill = s2_speculative & ~s2_can_speculatively_refill | s2_tlb_resp_ae_inst; // @[Frontend.scala 168:71]
+  assign icache_io_invalidate = io_cpu_flush_icache; // @[Frontend.scala 163:24]
+  assign fq_clock = clock;
+  assign fq_reset = reset | io_cpu_req_valid; // @[Frontend.scala 88:28]
+  assign fq_io_enq_valid = fq_io_enq_valid_REG & s2_valid & (icache_io_resp_valid | icache_io_s2_kill); // @[Frontend.scala 171:52]
+  assign fq_io_enq_bits_btb_taken = _taken_T_36 ? _GEN_127 : s2_btb_taken; // @[Frontend.scala 317:26 179:28]
+  assign fq_io_enq_bits_btb_bridx = _taken_T_36 ? _GEN_126 : s2_btb_resp_bits_bridx; // @[Frontend.scala 178:22 317:26]
+  assign fq_io_enq_bits_btb_entry = _taken_T_36 ? _GEN_128 : s2_btb_resp_bits_entry; // @[Frontend.scala 178:22 317:26]
+  assign fq_io_enq_bits_btb_bht_history = s2_btb_resp_bits_bht_history; // @[Frontend.scala 178:22]
+  assign fq_io_enq_bits_pc = s2_pc; // @[Frontend.scala 172:21]
+  assign fq_io_enq_bits_data = icache_io_resp_bits_data; // @[Frontend.scala 175:23]
+  assign fq_io_enq_bits_mask = _fq_io_enq_bits_mask_T_1[1:0]; // @[Frontend.scala 176:23]
+  assign fq_io_enq_bits_xcpt_ae_inst = icache_io_resp_valid & icache_io_resp_bits_ae | s2_tlb_resp_ae_inst; // @[Frontend.scala 180:23 182:{57,87}]
+  assign fq_io_enq_bits_replay = s2_valid & s2_btb_resp_valid & s2_btb_resp_bits_bridx & taken_valid_1 & ~taken_rvc_1 |
+    _GEN_48; // @[Frontend.scala 242:95 246:31]
+  assign fq_io_deq_ready = io_cpu_resp_ready; // @[Frontend.scala 331:15]
+  assign tlb_io_req_bits_vaddr = s1_pc; // @[Frontend.scala 153:25]
+  assign tlb_io_req_bits_prv = io_ptw_status_prv; // @[Frontend.scala 156:23]
+  assign tlb_io_ptw_status_debug = io_ptw_status_debug; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_0_cfg_l = io_ptw_pmp_0_cfg_l; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_0_cfg_a = io_ptw_pmp_0_cfg_a; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_0_cfg_x = io_ptw_pmp_0_cfg_x; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_0_cfg_w = io_ptw_pmp_0_cfg_w; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_0_cfg_r = io_ptw_pmp_0_cfg_r; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_0_addr = io_ptw_pmp_0_addr; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_0_mask = io_ptw_pmp_0_mask; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_1_cfg_l = io_ptw_pmp_1_cfg_l; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_1_cfg_a = io_ptw_pmp_1_cfg_a; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_1_cfg_x = io_ptw_pmp_1_cfg_x; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_1_cfg_w = io_ptw_pmp_1_cfg_w; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_1_cfg_r = io_ptw_pmp_1_cfg_r; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_1_addr = io_ptw_pmp_1_addr; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_1_mask = io_ptw_pmp_1_mask; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_2_cfg_l = io_ptw_pmp_2_cfg_l; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_2_cfg_a = io_ptw_pmp_2_cfg_a; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_2_cfg_x = io_ptw_pmp_2_cfg_x; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_2_cfg_w = io_ptw_pmp_2_cfg_w; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_2_cfg_r = io_ptw_pmp_2_cfg_r; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_2_addr = io_ptw_pmp_2_addr; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_2_mask = io_ptw_pmp_2_mask; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_3_cfg_l = io_ptw_pmp_3_cfg_l; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_3_cfg_a = io_ptw_pmp_3_cfg_a; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_3_cfg_x = io_ptw_pmp_3_cfg_x; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_3_cfg_w = io_ptw_pmp_3_cfg_w; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_3_cfg_r = io_ptw_pmp_3_cfg_r; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_3_addr = io_ptw_pmp_3_addr; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_3_mask = io_ptw_pmp_3_mask; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_4_cfg_l = io_ptw_pmp_4_cfg_l; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_4_cfg_a = io_ptw_pmp_4_cfg_a; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_4_cfg_x = io_ptw_pmp_4_cfg_x; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_4_cfg_w = io_ptw_pmp_4_cfg_w; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_4_cfg_r = io_ptw_pmp_4_cfg_r; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_4_addr = io_ptw_pmp_4_addr; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_4_mask = io_ptw_pmp_4_mask; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_5_cfg_l = io_ptw_pmp_5_cfg_l; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_5_cfg_a = io_ptw_pmp_5_cfg_a; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_5_cfg_x = io_ptw_pmp_5_cfg_x; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_5_cfg_w = io_ptw_pmp_5_cfg_w; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_5_cfg_r = io_ptw_pmp_5_cfg_r; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_5_addr = io_ptw_pmp_5_addr; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_5_mask = io_ptw_pmp_5_mask; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_6_cfg_l = io_ptw_pmp_6_cfg_l; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_6_cfg_a = io_ptw_pmp_6_cfg_a; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_6_cfg_x = io_ptw_pmp_6_cfg_x; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_6_cfg_w = io_ptw_pmp_6_cfg_w; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_6_cfg_r = io_ptw_pmp_6_cfg_r; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_6_addr = io_ptw_pmp_6_addr; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_6_mask = io_ptw_pmp_6_mask; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_7_cfg_l = io_ptw_pmp_7_cfg_l; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_7_cfg_a = io_ptw_pmp_7_cfg_a; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_7_cfg_x = io_ptw_pmp_7_cfg_x; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_7_cfg_w = io_ptw_pmp_7_cfg_w; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_7_cfg_r = io_ptw_pmp_7_cfg_r; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_7_addr = io_ptw_pmp_7_addr; // @[Frontend.scala 151:10]
+  assign tlb_io_ptw_pmp_7_mask = io_ptw_pmp_7_mask; // @[Frontend.scala 151:10]
+  assign btb_clock = clock;
+  assign btb_reset = reset;
+  assign btb_io_req_bits_addr = s1_pc; // @[Frontend.scala 188:26]
+  assign btb_io_btb_update_valid = ~io_cpu_btb_update_valid ? _s2_replay_T & ~wrong_path & fetch_bubble_likely &
+    updateBTB : io_cpu_btb_update_valid; // @[Frontend.scala 189:23 298:37 300:31]
+  assign btb_io_btb_update_bits_prediction_entry = ~io_cpu_btb_update_valid ? 5'h1c :
+    io_cpu_btb_update_bits_prediction_entry; // @[Frontend.scala 189:23 298:37 301:47]
+  assign btb_io_btb_update_bits_pc = ~io_cpu_btb_update_valid ? s2_base_pc : io_cpu_btb_update_bits_pc; // @[Frontend.scala 189:23 298:37 305:33]
+  assign btb_io_btb_update_bits_isValid = ~io_cpu_btb_update_valid | io_cpu_btb_update_bits_isValid; // @[Frontend.scala 189:23 298:37 302:38]
+  assign btb_io_btb_update_bits_br_pc = ~io_cpu_btb_update_valid ? _btb_io_btb_update_bits_br_pc_T_1 :
+    io_cpu_btb_update_bits_br_pc; // @[Frontend.scala 189:23 298:37 304:36]
+  assign btb_io_btb_update_bits_cfiType = ~io_cpu_btb_update_valid ? btb_io_ras_update_bits_cfiType :
+    io_cpu_btb_update_bits_cfiType; // @[Frontend.scala 189:23 298:37 303:38]
+  assign btb_io_bht_update_valid = io_cpu_bht_update_valid; // @[Frontend.scala 190:23 205:{24,50}]
+  assign btb_io_bht_update_bits_prediction_history = io_cpu_bht_update_bits_prediction_history; // @[Frontend.scala 190:23]
+  assign btb_io_bht_update_bits_pc = io_cpu_bht_update_bits_pc; // @[Frontend.scala 190:23]
+  assign btb_io_bht_update_bits_branch = io_cpu_bht_update_bits_branch; // @[Frontend.scala 190:23]
+  assign btb_io_bht_update_bits_taken = io_cpu_bht_update_bits_taken; // @[Frontend.scala 190:23]
+  assign btb_io_bht_update_bits_mispredict = io_cpu_bht_update_bits_mispredict; // @[Frontend.scala 190:23]
+  assign btb_io_bht_advance_valid = taken_idx ? _GEN_92 : _GEN_56; // @[Frontend.scala 251:25]
+  assign btb_io_bht_advance_bits_bht_value = s2_btb_resp_bits_bht_value; // @[Frontend.scala 251:25]
+  assign btb_io_ras_update_valid = taken_idx ? _btb_io_btb_update_valid_T_2 & (taken_prevRVI_1 & (taken_rviCall_1 |
+    taken_rviReturn_1) | taken_valid_1 & (taken_rvcCall_1 | taken_rvcReturn_1)) : _btb_io_btb_update_valid_T_2 & (
+    taken_prevRVI & (taken_rviCall | taken_rviReturn) | taken_valid & (taken_rvcCall | taken_rvcReturn)); // @[Frontend.scala 251:25 254:33]
+  assign btb_io_ras_update_bits_cfiType = taken_idx ? _taken_btb_io_ras_update_bits_cfiType_T_15 :
+    _taken_btb_io_ras_update_bits_cfiType_T_7; // @[Frontend.scala 251:25 255:40]
+  assign btb_io_ras_update_bits_returnAddr = s2_base_pc + _GEN_142; // @[Frontend.scala 308:53]
+  assign btb_io_flush = s2_valid & s2_btb_resp_valid & s2_btb_resp_bits_bridx & taken_valid_1 & ~taken_rvc_1 | s2_valid
+     & s2_btb_resp_valid & ~s2_btb_resp_bits_bridx & taken_valid & _taken_prevRVI_T_5; // @[Frontend.scala 242:95 245:22]
+  always @(posedge clock) begin
+    s1_valid <= io_cpu_req_valid | s0_fq_has_space; // @[Frontend.scala 110:35]
+    if (reset) begin // @[Frontend.scala 105:25]
+      s2_valid <= 1'h0; // @[Frontend.scala 105:25]
+    end else begin
+      s2_valid <= _GEN_0;
+    end
+    s1_pc <= io_cpu_npc; // @[Frontend.scala 134:9]
+    if (io_cpu_req_valid) begin // @[Frontend.scala 140:24]
+      s1_speculative <= io_cpu_req_bits_speculative;
+    end else if (s2_replay) begin // @[Frontend.scala 140:75]
+      s1_speculative <= s2_speculative;
+    end else begin
+      s1_speculative <= s0_speculative;
+    end
+    if (reset) begin // @[Frontend.scala 114:22]
+      s2_pc <= 32'h10040; // @[Frontend.scala 114:22]
+    end else if (~s2_replay) begin // @[Frontend.scala 144:21]
+      s2_pc <= s1_pc; // @[Frontend.scala 146:11]
+    end
+    if (_T_11) begin // @[Frontend.scala 193:23]
+      s2_btb_resp_valid <= btb_io_resp_valid; // @[Frontend.scala 195:25]
+    end
+    if (_T_11) begin // @[Frontend.scala 193:23]
+      s2_btb_resp_bits_taken <= btb_io_resp_bits_taken; // @[Frontend.scala 196:24]
+    end
+    if (_T_11) begin // @[Frontend.scala 193:23]
+      s2_btb_resp_bits_bridx <= btb_io_resp_bits_bridx; // @[Frontend.scala 196:24]
+    end
+    if (_T_11) begin // @[Frontend.scala 193:23]
+      s2_btb_resp_bits_entry <= btb_io_resp_bits_entry; // @[Frontend.scala 196:24]
+    end
+    if (_T_11) begin // @[Frontend.scala 193:23]
+      s2_btb_resp_bits_bht_history <= btb_io_resp_bits_bht_history; // @[Frontend.scala 196:24]
+    end
+    if (_T_11) begin // @[Frontend.scala 193:23]
+      s2_btb_resp_bits_bht_value <= btb_io_resp_bits_bht_value; // @[Frontend.scala 196:24]
+    end
+    if (~s2_replay) begin // @[Frontend.scala 144:21]
+      s2_tlb_resp_ae_inst <= tlb_io_resp_ae_inst; // @[Frontend.scala 148:17]
+    end
+    if (~s2_replay) begin // @[Frontend.scala 144:21]
+      s2_tlb_resp_cacheable <= tlb_io_resp_cacheable; // @[Frontend.scala 148:17]
+    end
+    if (reset) begin // @[Frontend.scala 120:27]
+      s2_speculative <= 1'h0; // @[Frontend.scala 120:27]
+    end else if (~s2_replay) begin // @[Frontend.scala 144:21]
+      s2_speculative <= s1_speculative; // @[Frontend.scala 147:20]
+    end
+    if (reset) begin // @[Frontend.scala 121:38]
+      s2_partial_insn_valid <= 1'h0; // @[Frontend.scala 121:38]
+    end else if (s2_redirect) begin // @[Frontend.scala 327:24]
+      s2_partial_insn_valid <= 1'h0; // @[Frontend.scala 327:48]
+    end else if (_s2_replay_T & (s2_btb_taken | taken)) begin // @[Frontend.scala 314:56]
+      s2_partial_insn_valid <= 1'h0; // @[Frontend.scala 315:29]
+    end else if (_s2_replay_T) begin // @[Frontend.scala 285:33]
+      s2_partial_insn_valid <= _taken_T_61;
+    end
+    if (_s2_replay_T) begin // @[Frontend.scala 285:33]
+      if (taken_valid_1 & taken_idx & _taken_T_33) begin // @[Frontend.scala 287:46]
+        s2_partial_insn <= _taken_s2_partial_insn_T; // @[Frontend.scala 289:29]
+      end
+    end
+    if (reset) begin // @[Frontend.scala 123:27]
+      wrong_path <= 1'h0; // @[Frontend.scala 123:27]
+    end else if (io_cpu_req_valid) begin // @[Frontend.scala 328:29]
+      wrong_path <= 1'h0; // @[Frontend.scala 328:42]
+    end else if (taken_idx) begin // @[Frontend.scala 251:25]
+      if (~s2_btb_taken) begin // @[Frontend.scala 260:30]
+        wrong_path <= _GEN_86;
+      end else begin
+        wrong_path <= _GEN_85;
+      end
+    end else begin
+      wrong_path <= _GEN_85;
+    end
+    s2_replay_REG <= reset | s2_replay & ~s0_valid; // @[Frontend.scala 131:{58,58,58}]
+    fq_io_enq_valid_REG <= s1_valid; // @[Frontend.scala 171:29]
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(io_cpu_req_valid | io_cpu_flush_icache | io_cpu_bht_update_valid | io_cpu_btb_update_valid) |
+          io_cpu_might_request) & ~reset) begin
+          $fatal; // @[Frontend.scala 93:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~(io_cpu_req_valid | io_cpu_flush_icache | io_cpu_bht_update_valid | io_cpu_btb_update_valid) |
+          io_cpu_might_request)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Frontend.scala:93 assert(!(io.cpu.req.valid || io.cpu.sfence.valid || io.cpu.flush_icache || io.cpu.bht_update.valid || io.cpu.btb_update.valid) || io.cpu.might_request)\n"
+            ); // @[Frontend.scala 93:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(s2_speculative & io_ptw_customCSRs_csrs_0_value[3] & ~icache_io_s2_kill)) & _T_9) begin
+          $fatal; // @[Frontend.scala 181:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_9 & ~(~(s2_speculative & io_ptw_customCSRs_csrs_0_value[3] & ~icache_io_s2_kill))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Frontend.scala:181 assert(!(s2_speculative && io.ptw.customCSRs.asInstanceOf[RocketCustomCSRs].disableSpeculativeICacheRefill && !icache.io.s2_kill))\n"
+            ); // @[Frontend.scala 181:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~s2_partial_insn_valid | fq_io_enq_bits_mask[0]) & _T_9) begin
+          $fatal; // @[Frontend.scala 326:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_9 & ~(~s2_partial_insn_valid | fq_io_enq_bits_mask[0])) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Frontend.scala:326 assert(!s2_partial_insn_valid || fq.io.enq.bits.mask(0))\n"); // @[Frontend.scala 326:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  s1_valid = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  s2_valid = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  s1_pc = _RAND_2[31:0];
+  _RAND_3 = {1{`RANDOM}};
+  s1_speculative = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  s2_pc = _RAND_4[31:0];
+  _RAND_5 = {1{`RANDOM}};
+  s2_btb_resp_valid = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  s2_btb_resp_bits_taken = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  s2_btb_resp_bits_bridx = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  s2_btb_resp_bits_entry = _RAND_8[4:0];
+  _RAND_9 = {1{`RANDOM}};
+  s2_btb_resp_bits_bht_history = _RAND_9[7:0];
+  _RAND_10 = {1{`RANDOM}};
+  s2_btb_resp_bits_bht_value = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  s2_tlb_resp_ae_inst = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  s2_tlb_resp_cacheable = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  s2_speculative = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  s2_partial_insn_valid = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  s2_partial_insn = _RAND_15[15:0];
+  _RAND_16 = {1{`RANDOM}};
+  wrong_path = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  s2_replay_REG = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  fq_io_enq_valid_REG = _RAND_18[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLFragmenter_21(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [27:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [1:0]  auto_out_a_bits_size,
+  output [7:0]  auto_out_a_bits_source,
+  output [27:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [7:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  repeater_clock; // @[Fragmenter.scala 262:30]
+  wire  repeater_reset; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_repeat; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_full; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_enq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [27:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_enq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_enq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_ready; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_valid; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_opcode; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_param; // @[Fragmenter.scala 262:30]
+  wire [2:0] repeater_io_deq_bits_size; // @[Fragmenter.scala 262:30]
+  wire [1:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [27:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [3:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [3:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [3:0] dFragnum = auto_out_d_bits_source[3:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 4'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 4'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] _dsizeOH_T = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [2:0] dsizeOH = _dsizeOH_T[2:0]; // @[OneHot.scala 64:27]
+  wire [4:0] _dsizeOH1_T_1 = 5'h3 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [1:0] dsizeOH1 = ~_dsizeOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  dHasData = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire  ack_decrement = dHasData | dsizeOH[2]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 2'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{4'd0}, dsizeOH1}; // @[Fragmenter.scala 206:69]
+  wire [5:0] _dFirst_size_T_1 = _dFirst_size_T | _GEN_7; // @[Fragmenter.scala 206:69]
+  wire [6:0] _dFirst_size_T_2 = {_dFirst_size_T_1, 1'h0}; // @[package.scala 232:35]
+  wire [6:0] _dFirst_size_T_3 = _dFirst_size_T_2 | 7'h1; // @[package.scala 232:40]
+  wire [6:0] _dFirst_size_T_4 = {1'h0,_dFirst_size_T_1}; // @[Cat.scala 31:58]
+  wire [6:0] _dFirst_size_T_5 = ~_dFirst_size_T_4; // @[package.scala 232:53]
+  wire [6:0] _dFirst_size_T_6 = _dFirst_size_T_3 & _dFirst_size_T_5; // @[package.scala 232:51]
+  wire [2:0] dFirst_size_hi = _dFirst_size_T_6[6:4]; // @[OneHot.scala 30:18]
+  wire [3:0] dFirst_size_lo = _dFirst_size_T_6[3:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_7 = |dFirst_size_hi; // @[OneHot.scala 32:14]
+  wire [3:0] _GEN_8 = {{1'd0}, dFirst_size_hi}; // @[OneHot.scala 32:28]
+  wire [3:0] _dFirst_size_T_8 = _GEN_8 | dFirst_size_lo; // @[OneHot.scala 32:28]
+  wire [1:0] dFirst_size_hi_1 = _dFirst_size_T_8[3:2]; // @[OneHot.scala 30:18]
+  wire [1:0] dFirst_size_lo_1 = _dFirst_size_T_8[1:0]; // @[OneHot.scala 31:18]
+  wire  _dFirst_size_T_9 = |dFirst_size_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _dFirst_size_T_10 = dFirst_size_hi_1 | dFirst_size_lo_1; // @[OneHot.scala 32:28]
+  wire [2:0] dFirst_size = {_dFirst_size_T_7,_dFirst_size_T_9,_dFirst_size_T_10[1]}; // @[Cat.scala 31:58]
+  wire  doEarlyAck = auto_out_d_bits_source[5]; // @[Fragmenter.scala 219:54]
+  wire  _drop_T_1 = doEarlyAck ? dFirst : dLast; // @[Fragmenter.scala 222:37]
+  wire  drop = ~dHasData & ~_drop_T_1; // @[Fragmenter.scala 222:30]
+  wire  bundleOut_0_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  wire  _T_7 = bundleOut_0_d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _GEN_9 = {{3'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [3:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h2 ? 3'h2 : repeater_io_deq_bits_size; // @[Fragmenter.scala 285:24]
+  wire [12:0] _aOrigOH1_T_1 = 13'h3f << repeater_io_deq_bits_size; // @[package.scala 234:77]
+  wire [5:0] aOrigOH1 = ~_aOrigOH1_T_1[5:0]; // @[package.scala 234:46]
+  wire [8:0] _aFragOH1_T_1 = 9'h3 << aFrag; // @[package.scala 234:77]
+  wire [1:0] aFragOH1 = ~_aFragOH1_T_1[1:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [3:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 4'h0; // @[Fragmenter.scala 292:29]
+  wire [3:0] _old_gennum1_T_2 = gennum - 4'h1; // @[Fragmenter.scala 293:79]
+  wire [3:0] old_gennum1 = aFirst ? aOrigOH1[5:2] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [3:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [3:0] new_gennum = ~_new_gennum_T; // @[Fragmenter.scala 294:26]
+  reg  aToggle_r; // @[Reg.scala 16:16]
+  wire  _GEN_5 = aFirst ? dToggle : aToggle_r; // @[Reg.scala 16:16 17:{18,22}]
+  wire  aToggle = ~_GEN_5; // @[Fragmenter.scala 297:23]
+  wire  aFull = repeater_io_deq_bits_opcode == 3'h0; // @[Fragmenter.scala 298:78]
+  wire  bundleOut_0_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  wire  _T_8 = auto_out_a_ready & bundleOut_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  _repeater_io_repeat_T = ~aHasData; // @[Fragmenter.scala 302:31]
+  wire [5:0] _bundleOut_0_a_bits_address_T = {old_gennum1, 2'h0}; // @[Fragmenter.scala 304:65]
+  wire [5:0] _bundleOut_0_a_bits_address_T_1 = ~aOrigOH1; // @[Fragmenter.scala 304:90]
+  wire [5:0] _bundleOut_0_a_bits_address_T_2 = _bundleOut_0_a_bits_address_T | _bundleOut_0_a_bits_address_T_1; // @[Fragmenter.scala 304:88]
+  wire [5:0] _GEN_10 = {{4'd0}, aFragOH1}; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_3 = _bundleOut_0_a_bits_address_T_2 | _GEN_10; // @[Fragmenter.scala 304:100]
+  wire [5:0] _bundleOut_0_a_bits_address_T_4 = _bundleOut_0_a_bits_address_T_3 | 6'h3; // @[Fragmenter.scala 304:111]
+  wire [5:0] _bundleOut_0_a_bits_address_T_5 = ~_bundleOut_0_a_bits_address_T_4; // @[Fragmenter.scala 304:51]
+  wire [27:0] _GEN_11 = {{22'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [4:0] bundleOut_0_a_bits_source_lo = {aToggle,new_gennum}; // @[Cat.scala 31:58]
+  wire [2:0] bundleOut_0_a_bits_source_hi = {repeater_io_deq_bits_source,aFull}; // @[Cat.scala 31:58]
+  wire  _T_9 = ~repeater_io_full; // @[Fragmenter.scala 309:17]
+  Repeater_16 repeater ( // @[Fragmenter.scala 262:30]
+    .clock(repeater_clock),
+    .reset(repeater_reset),
+    .io_repeat(repeater_io_repeat),
+    .io_full(repeater_io_full),
+    .io_enq_ready(repeater_io_enq_ready),
+    .io_enq_valid(repeater_io_enq_valid),
+    .io_enq_bits_opcode(repeater_io_enq_bits_opcode),
+    .io_enq_bits_param(repeater_io_enq_bits_param),
+    .io_enq_bits_size(repeater_io_enq_bits_size),
+    .io_enq_bits_source(repeater_io_enq_bits_source),
+    .io_enq_bits_address(repeater_io_enq_bits_address),
+    .io_enq_bits_mask(repeater_io_enq_bits_mask),
+    .io_enq_bits_corrupt(repeater_io_enq_bits_corrupt),
+    .io_deq_ready(repeater_io_deq_ready),
+    .io_deq_valid(repeater_io_deq_valid),
+    .io_deq_bits_opcode(repeater_io_deq_bits_opcode),
+    .io_deq_bits_param(repeater_io_deq_bits_param),
+    .io_deq_bits_size(repeater_io_deq_bits_size),
+    .io_deq_bits_source(repeater_io_deq_bits_source),
+    .io_deq_bits_address(repeater_io_deq_bits_address),
+    .io_deq_bits_mask(repeater_io_deq_bits_mask),
+    .io_deq_bits_corrupt(repeater_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = repeater_io_enq_ready; // @[Nodes.scala 1210:84 Fragmenter.scala 263:25]
+  assign auto_in_d_valid = auto_out_d_valid & ~drop; // @[Fragmenter.scala 224:36]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = dFirst ? dFirst_size : dOrig; // @[Fragmenter.scala 227:32]
+  assign auto_in_d_bits_source = auto_out_d_bits_source[7:6]; // @[Fragmenter.scala 226:47]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = repeater_io_deq_valid; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_opcode = repeater_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Fragmenter.scala 303:15]
+  assign auto_out_a_bits_size = aFrag[1:0]; // @[Nodes.scala 1207:84 Fragmenter.scala 306:25]
+  assign auto_out_a_bits_source = {bundleOut_0_a_bits_source_hi,bundleOut_0_a_bits_source_lo}; // @[Cat.scala 31:58]
+  assign auto_out_a_bits_address = repeater_io_deq_bits_address | _GEN_11; // @[Fragmenter.scala 304:49]
+  assign auto_out_a_bits_mask = repeater_io_full ? 4'hf : auto_in_a_bits_mask; // @[Fragmenter.scala 313:31]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready | drop; // @[Fragmenter.scala 223:35]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 4'h0; // @[Fragmenter.scala 302:41]
+  assign repeater_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign repeater_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  always @(posedge clock) begin
+    if (reset) begin // @[Fragmenter.scala 189:29]
+      acknum <= 4'h0; // @[Fragmenter.scala 189:29]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 209:24]
+        acknum <= dFragnum;
+      end else begin
+        acknum <= _acknum_T_1;
+      end
+    end
+    if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dOrig <= dFirst_size; // @[Fragmenter.scala 211:19]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 191:30]
+      dToggle <= 1'h0; // @[Fragmenter.scala 191:30]
+    end else if (_T_7) begin // @[Fragmenter.scala 208:29]
+      if (dFirst) begin // @[Fragmenter.scala 210:25]
+        dToggle <= auto_out_d_bits_source[4]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 4'h0; // @[Fragmenter.scala 291:29]
+    end else if (_T_8) begin // @[Fragmenter.scala 300:29]
+      gennum <= new_gennum; // @[Fragmenter.scala 300:38]
+    end
+    if (aFirst) begin // @[Reg.scala 17:18]
+      aToggle_r <= dToggle; // @[Reg.scala 17:22]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~repeater_io_full | _repeater_io_repeat_T) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 309:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(~repeater_io_full | _repeater_io_repeat_T)) begin
+          $fwrite(32'h80000002,"Assertion failed\n    at Fragmenter.scala:309 assert (!repeater.io.full || !aHasData)\n"
+            ); // @[Fragmenter.scala 309:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_9 | repeater_io_deq_bits_mask == 4'hf) & _T_5) begin
+          $fatal; // @[Fragmenter.scala 312:16]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_5 & ~(_T_9 | repeater_io_deq_bits_mask == 4'hf)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Fragmenter.scala:312 assert (!repeater.io.full || in_a.bits.mask === fullMask)\n"
+            ); // @[Fragmenter.scala 312:16]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  acknum = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dOrig = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  dToggle = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  gennum = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  aToggle_r = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module HellaCacheArbiter(
+  output        io_requestor_0_req_ready,
+  input         io_requestor_0_req_valid,
+  input  [31:0] io_requestor_0_req_bits_addr,
+  input  [5:0]  io_requestor_0_req_bits_tag,
+  input  [4:0]  io_requestor_0_req_bits_cmd,
+  input  [1:0]  io_requestor_0_req_bits_size,
+  input         io_requestor_0_req_bits_signed,
+  input  [1:0]  io_requestor_0_req_bits_dprv,
+  input         io_requestor_0_s1_kill,
+  input  [31:0] io_requestor_0_s1_data_data,
+  output        io_requestor_0_s2_nack,
+  output        io_requestor_0_resp_valid,
+  output [5:0]  io_requestor_0_resp_bits_tag,
+  output [31:0] io_requestor_0_resp_bits_data,
+  output        io_requestor_0_resp_bits_replay,
+  output        io_requestor_0_resp_bits_has_data,
+  output [31:0] io_requestor_0_resp_bits_data_word_bypass,
+  output        io_requestor_0_replay_next,
+  output        io_requestor_0_s2_xcpt_ma_ld,
+  output        io_requestor_0_s2_xcpt_ma_st,
+  output        io_requestor_0_s2_xcpt_pf_ld,
+  output        io_requestor_0_s2_xcpt_pf_st,
+  output        io_requestor_0_s2_xcpt_ae_ld,
+  output        io_requestor_0_s2_xcpt_ae_st,
+  output        io_requestor_0_ordered,
+  output        io_requestor_0_perf_release,
+  output        io_requestor_0_perf_grant,
+  input         io_mem_req_ready,
+  output        io_mem_req_valid,
+  output [31:0] io_mem_req_bits_addr,
+  output [5:0]  io_mem_req_bits_tag,
+  output [4:0]  io_mem_req_bits_cmd,
+  output [1:0]  io_mem_req_bits_size,
+  output        io_mem_req_bits_signed,
+  output [1:0]  io_mem_req_bits_dprv,
+  output        io_mem_s1_kill,
+  output [31:0] io_mem_s1_data_data,
+  input         io_mem_s2_nack,
+  input         io_mem_resp_valid,
+  input  [5:0]  io_mem_resp_bits_tag,
+  input  [31:0] io_mem_resp_bits_data,
+  input         io_mem_resp_bits_replay,
+  input         io_mem_resp_bits_has_data,
+  input  [31:0] io_mem_resp_bits_data_word_bypass,
+  input         io_mem_replay_next,
+  input         io_mem_s2_xcpt_ma_ld,
+  input         io_mem_s2_xcpt_ma_st,
+  input         io_mem_s2_xcpt_pf_ld,
+  input         io_mem_s2_xcpt_pf_st,
+  input         io_mem_s2_xcpt_ae_ld,
+  input         io_mem_s2_xcpt_ae_st,
+  input         io_mem_ordered,
+  input         io_mem_perf_release,
+  input         io_mem_perf_grant
+);
+  assign io_requestor_0_req_ready = io_mem_req_ready; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_s2_nack = io_mem_s2_nack; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_resp_valid = io_mem_resp_valid; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_resp_bits_tag = io_mem_resp_bits_tag; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_resp_bits_data = io_mem_resp_bits_data; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_resp_bits_replay = io_mem_resp_bits_replay; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_resp_bits_has_data = io_mem_resp_bits_has_data; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_resp_bits_data_word_bypass = io_mem_resp_bits_data_word_bypass; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_replay_next = io_mem_replay_next; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_s2_xcpt_ma_ld = io_mem_s2_xcpt_ma_ld; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_s2_xcpt_ma_st = io_mem_s2_xcpt_ma_st; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_s2_xcpt_pf_ld = io_mem_s2_xcpt_pf_ld; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_s2_xcpt_pf_st = io_mem_s2_xcpt_pf_st; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_s2_xcpt_ae_ld = io_mem_s2_xcpt_ae_ld; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_s2_xcpt_ae_st = io_mem_s2_xcpt_ae_st; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_ordered = io_mem_ordered; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_perf_release = io_mem_perf_release; // @[HellaCacheArbiter.scala 17:12]
+  assign io_requestor_0_perf_grant = io_mem_perf_grant; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_req_valid = io_requestor_0_req_valid; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_req_bits_addr = io_requestor_0_req_bits_addr; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_req_bits_tag = io_requestor_0_req_bits_tag; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_req_bits_cmd = io_requestor_0_req_bits_cmd; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_req_bits_size = io_requestor_0_req_bits_size; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_req_bits_signed = io_requestor_0_req_bits_signed; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_req_bits_dprv = io_requestor_0_req_bits_dprv; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_s1_kill = io_requestor_0_s1_kill; // @[HellaCacheArbiter.scala 17:12]
+  assign io_mem_s1_data_data = io_requestor_0_s1_data_data; // @[HellaCacheArbiter.scala 17:12]
+endmodule
+module PTW(
+  input         clock,
+  input         reset,
+  output        io_requestor_0_status_debug,
+  output        io_requestor_0_pmp_0_cfg_l,
+  output [1:0]  io_requestor_0_pmp_0_cfg_a,
+  output        io_requestor_0_pmp_0_cfg_x,
+  output        io_requestor_0_pmp_0_cfg_w,
+  output        io_requestor_0_pmp_0_cfg_r,
+  output [28:0] io_requestor_0_pmp_0_addr,
+  output [30:0] io_requestor_0_pmp_0_mask,
+  output        io_requestor_0_pmp_1_cfg_l,
+  output [1:0]  io_requestor_0_pmp_1_cfg_a,
+  output        io_requestor_0_pmp_1_cfg_x,
+  output        io_requestor_0_pmp_1_cfg_w,
+  output        io_requestor_0_pmp_1_cfg_r,
+  output [28:0] io_requestor_0_pmp_1_addr,
+  output [30:0] io_requestor_0_pmp_1_mask,
+  output        io_requestor_0_pmp_2_cfg_l,
+  output [1:0]  io_requestor_0_pmp_2_cfg_a,
+  output        io_requestor_0_pmp_2_cfg_x,
+  output        io_requestor_0_pmp_2_cfg_w,
+  output        io_requestor_0_pmp_2_cfg_r,
+  output [28:0] io_requestor_0_pmp_2_addr,
+  output [30:0] io_requestor_0_pmp_2_mask,
+  output        io_requestor_0_pmp_3_cfg_l,
+  output [1:0]  io_requestor_0_pmp_3_cfg_a,
+  output        io_requestor_0_pmp_3_cfg_x,
+  output        io_requestor_0_pmp_3_cfg_w,
+  output        io_requestor_0_pmp_3_cfg_r,
+  output [28:0] io_requestor_0_pmp_3_addr,
+  output [30:0] io_requestor_0_pmp_3_mask,
+  output        io_requestor_0_pmp_4_cfg_l,
+  output [1:0]  io_requestor_0_pmp_4_cfg_a,
+  output        io_requestor_0_pmp_4_cfg_x,
+  output        io_requestor_0_pmp_4_cfg_w,
+  output        io_requestor_0_pmp_4_cfg_r,
+  output [28:0] io_requestor_0_pmp_4_addr,
+  output [30:0] io_requestor_0_pmp_4_mask,
+  output        io_requestor_0_pmp_5_cfg_l,
+  output [1:0]  io_requestor_0_pmp_5_cfg_a,
+  output        io_requestor_0_pmp_5_cfg_x,
+  output        io_requestor_0_pmp_5_cfg_w,
+  output        io_requestor_0_pmp_5_cfg_r,
+  output [28:0] io_requestor_0_pmp_5_addr,
+  output [30:0] io_requestor_0_pmp_5_mask,
+  output        io_requestor_0_pmp_6_cfg_l,
+  output [1:0]  io_requestor_0_pmp_6_cfg_a,
+  output        io_requestor_0_pmp_6_cfg_x,
+  output        io_requestor_0_pmp_6_cfg_w,
+  output        io_requestor_0_pmp_6_cfg_r,
+  output [28:0] io_requestor_0_pmp_6_addr,
+  output [30:0] io_requestor_0_pmp_6_mask,
+  output        io_requestor_0_pmp_7_cfg_l,
+  output [1:0]  io_requestor_0_pmp_7_cfg_a,
+  output        io_requestor_0_pmp_7_cfg_x,
+  output        io_requestor_0_pmp_7_cfg_w,
+  output        io_requestor_0_pmp_7_cfg_r,
+  output [28:0] io_requestor_0_pmp_7_addr,
+  output [30:0] io_requestor_0_pmp_7_mask,
+  output        io_requestor_1_status_debug,
+  output [1:0]  io_requestor_1_status_prv,
+  output        io_requestor_1_pmp_0_cfg_l,
+  output [1:0]  io_requestor_1_pmp_0_cfg_a,
+  output        io_requestor_1_pmp_0_cfg_x,
+  output        io_requestor_1_pmp_0_cfg_w,
+  output        io_requestor_1_pmp_0_cfg_r,
+  output [28:0] io_requestor_1_pmp_0_addr,
+  output [30:0] io_requestor_1_pmp_0_mask,
+  output        io_requestor_1_pmp_1_cfg_l,
+  output [1:0]  io_requestor_1_pmp_1_cfg_a,
+  output        io_requestor_1_pmp_1_cfg_x,
+  output        io_requestor_1_pmp_1_cfg_w,
+  output        io_requestor_1_pmp_1_cfg_r,
+  output [28:0] io_requestor_1_pmp_1_addr,
+  output [30:0] io_requestor_1_pmp_1_mask,
+  output        io_requestor_1_pmp_2_cfg_l,
+  output [1:0]  io_requestor_1_pmp_2_cfg_a,
+  output        io_requestor_1_pmp_2_cfg_x,
+  output        io_requestor_1_pmp_2_cfg_w,
+  output        io_requestor_1_pmp_2_cfg_r,
+  output [28:0] io_requestor_1_pmp_2_addr,
+  output [30:0] io_requestor_1_pmp_2_mask,
+  output        io_requestor_1_pmp_3_cfg_l,
+  output [1:0]  io_requestor_1_pmp_3_cfg_a,
+  output        io_requestor_1_pmp_3_cfg_x,
+  output        io_requestor_1_pmp_3_cfg_w,
+  output        io_requestor_1_pmp_3_cfg_r,
+  output [28:0] io_requestor_1_pmp_3_addr,
+  output [30:0] io_requestor_1_pmp_3_mask,
+  output        io_requestor_1_pmp_4_cfg_l,
+  output [1:0]  io_requestor_1_pmp_4_cfg_a,
+  output        io_requestor_1_pmp_4_cfg_x,
+  output        io_requestor_1_pmp_4_cfg_w,
+  output        io_requestor_1_pmp_4_cfg_r,
+  output [28:0] io_requestor_1_pmp_4_addr,
+  output [30:0] io_requestor_1_pmp_4_mask,
+  output        io_requestor_1_pmp_5_cfg_l,
+  output [1:0]  io_requestor_1_pmp_5_cfg_a,
+  output        io_requestor_1_pmp_5_cfg_x,
+  output        io_requestor_1_pmp_5_cfg_w,
+  output        io_requestor_1_pmp_5_cfg_r,
+  output [28:0] io_requestor_1_pmp_5_addr,
+  output [30:0] io_requestor_1_pmp_5_mask,
+  output        io_requestor_1_pmp_6_cfg_l,
+  output [1:0]  io_requestor_1_pmp_6_cfg_a,
+  output        io_requestor_1_pmp_6_cfg_x,
+  output        io_requestor_1_pmp_6_cfg_w,
+  output        io_requestor_1_pmp_6_cfg_r,
+  output [28:0] io_requestor_1_pmp_6_addr,
+  output [30:0] io_requestor_1_pmp_6_mask,
+  output        io_requestor_1_pmp_7_cfg_l,
+  output [1:0]  io_requestor_1_pmp_7_cfg_a,
+  output        io_requestor_1_pmp_7_cfg_x,
+  output        io_requestor_1_pmp_7_cfg_w,
+  output        io_requestor_1_pmp_7_cfg_r,
+  output [28:0] io_requestor_1_pmp_7_addr,
+  output [30:0] io_requestor_1_pmp_7_mask,
+  output [31:0] io_requestor_1_customCSRs_csrs_0_value,
+  input         io_dpath_status_debug,
+  input  [1:0]  io_dpath_status_prv,
+  input         io_dpath_pmp_0_cfg_l,
+  input  [1:0]  io_dpath_pmp_0_cfg_a,
+  input         io_dpath_pmp_0_cfg_x,
+  input         io_dpath_pmp_0_cfg_w,
+  input         io_dpath_pmp_0_cfg_r,
+  input  [28:0] io_dpath_pmp_0_addr,
+  input  [30:0] io_dpath_pmp_0_mask,
+  input         io_dpath_pmp_1_cfg_l,
+  input  [1:0]  io_dpath_pmp_1_cfg_a,
+  input         io_dpath_pmp_1_cfg_x,
+  input         io_dpath_pmp_1_cfg_w,
+  input         io_dpath_pmp_1_cfg_r,
+  input  [28:0] io_dpath_pmp_1_addr,
+  input  [30:0] io_dpath_pmp_1_mask,
+  input         io_dpath_pmp_2_cfg_l,
+  input  [1:0]  io_dpath_pmp_2_cfg_a,
+  input         io_dpath_pmp_2_cfg_x,
+  input         io_dpath_pmp_2_cfg_w,
+  input         io_dpath_pmp_2_cfg_r,
+  input  [28:0] io_dpath_pmp_2_addr,
+  input  [30:0] io_dpath_pmp_2_mask,
+  input         io_dpath_pmp_3_cfg_l,
+  input  [1:0]  io_dpath_pmp_3_cfg_a,
+  input         io_dpath_pmp_3_cfg_x,
+  input         io_dpath_pmp_3_cfg_w,
+  input         io_dpath_pmp_3_cfg_r,
+  input  [28:0] io_dpath_pmp_3_addr,
+  input  [30:0] io_dpath_pmp_3_mask,
+  input         io_dpath_pmp_4_cfg_l,
+  input  [1:0]  io_dpath_pmp_4_cfg_a,
+  input         io_dpath_pmp_4_cfg_x,
+  input         io_dpath_pmp_4_cfg_w,
+  input         io_dpath_pmp_4_cfg_r,
+  input  [28:0] io_dpath_pmp_4_addr,
+  input  [30:0] io_dpath_pmp_4_mask,
+  input         io_dpath_pmp_5_cfg_l,
+  input  [1:0]  io_dpath_pmp_5_cfg_a,
+  input         io_dpath_pmp_5_cfg_x,
+  input         io_dpath_pmp_5_cfg_w,
+  input         io_dpath_pmp_5_cfg_r,
+  input  [28:0] io_dpath_pmp_5_addr,
+  input  [30:0] io_dpath_pmp_5_mask,
+  input         io_dpath_pmp_6_cfg_l,
+  input  [1:0]  io_dpath_pmp_6_cfg_a,
+  input         io_dpath_pmp_6_cfg_x,
+  input         io_dpath_pmp_6_cfg_w,
+  input         io_dpath_pmp_6_cfg_r,
+  input  [28:0] io_dpath_pmp_6_addr,
+  input  [30:0] io_dpath_pmp_6_mask,
+  input         io_dpath_pmp_7_cfg_l,
+  input  [1:0]  io_dpath_pmp_7_cfg_a,
+  input         io_dpath_pmp_7_cfg_x,
+  input         io_dpath_pmp_7_cfg_w,
+  input         io_dpath_pmp_7_cfg_r,
+  input  [28:0] io_dpath_pmp_7_addr,
+  input  [30:0] io_dpath_pmp_7_mask,
+  output        io_dpath_perf_l2hit,
+  output        io_dpath_perf_pte_miss,
+  output        io_dpath_perf_pte_hit,
+  input  [31:0] io_dpath_customCSRs_csrs_0_value
+);
+  assign io_requestor_0_status_debug = io_dpath_status_debug; // @[PTW.scala 402:28]
+  assign io_requestor_0_pmp_0_cfg_l = io_dpath_pmp_0_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_0_cfg_a = io_dpath_pmp_0_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_0_cfg_x = io_dpath_pmp_0_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_0_cfg_w = io_dpath_pmp_0_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_0_cfg_r = io_dpath_pmp_0_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_0_addr = io_dpath_pmp_0_addr; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_0_mask = io_dpath_pmp_0_mask; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_1_cfg_l = io_dpath_pmp_1_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_1_cfg_a = io_dpath_pmp_1_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_1_cfg_x = io_dpath_pmp_1_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_1_cfg_w = io_dpath_pmp_1_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_1_cfg_r = io_dpath_pmp_1_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_1_addr = io_dpath_pmp_1_addr; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_1_mask = io_dpath_pmp_1_mask; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_2_cfg_l = io_dpath_pmp_2_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_2_cfg_a = io_dpath_pmp_2_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_2_cfg_x = io_dpath_pmp_2_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_2_cfg_w = io_dpath_pmp_2_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_2_cfg_r = io_dpath_pmp_2_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_2_addr = io_dpath_pmp_2_addr; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_2_mask = io_dpath_pmp_2_mask; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_3_cfg_l = io_dpath_pmp_3_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_3_cfg_a = io_dpath_pmp_3_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_3_cfg_x = io_dpath_pmp_3_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_3_cfg_w = io_dpath_pmp_3_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_3_cfg_r = io_dpath_pmp_3_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_3_addr = io_dpath_pmp_3_addr; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_3_mask = io_dpath_pmp_3_mask; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_4_cfg_l = io_dpath_pmp_4_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_4_cfg_a = io_dpath_pmp_4_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_4_cfg_x = io_dpath_pmp_4_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_4_cfg_w = io_dpath_pmp_4_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_4_cfg_r = io_dpath_pmp_4_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_4_addr = io_dpath_pmp_4_addr; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_4_mask = io_dpath_pmp_4_mask; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_5_cfg_l = io_dpath_pmp_5_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_5_cfg_a = io_dpath_pmp_5_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_5_cfg_x = io_dpath_pmp_5_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_5_cfg_w = io_dpath_pmp_5_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_5_cfg_r = io_dpath_pmp_5_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_5_addr = io_dpath_pmp_5_addr; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_5_mask = io_dpath_pmp_5_mask; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_6_cfg_l = io_dpath_pmp_6_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_6_cfg_a = io_dpath_pmp_6_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_6_cfg_x = io_dpath_pmp_6_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_6_cfg_w = io_dpath_pmp_6_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_6_cfg_r = io_dpath_pmp_6_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_6_addr = io_dpath_pmp_6_addr; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_6_mask = io_dpath_pmp_6_mask; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_7_cfg_l = io_dpath_pmp_7_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_7_cfg_a = io_dpath_pmp_7_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_7_cfg_x = io_dpath_pmp_7_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_7_cfg_w = io_dpath_pmp_7_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_7_cfg_r = io_dpath_pmp_7_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_7_addr = io_dpath_pmp_7_addr; // @[PTW.scala 405:25]
+  assign io_requestor_0_pmp_7_mask = io_dpath_pmp_7_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_status_debug = io_dpath_status_debug; // @[PTW.scala 402:28]
+  assign io_requestor_1_status_prv = io_dpath_status_prv; // @[PTW.scala 402:28]
+  assign io_requestor_1_pmp_0_cfg_l = io_dpath_pmp_0_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_0_cfg_a = io_dpath_pmp_0_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_0_cfg_x = io_dpath_pmp_0_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_0_cfg_w = io_dpath_pmp_0_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_0_cfg_r = io_dpath_pmp_0_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_0_addr = io_dpath_pmp_0_addr; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_0_mask = io_dpath_pmp_0_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_1_cfg_l = io_dpath_pmp_1_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_1_cfg_a = io_dpath_pmp_1_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_1_cfg_x = io_dpath_pmp_1_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_1_cfg_w = io_dpath_pmp_1_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_1_cfg_r = io_dpath_pmp_1_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_1_addr = io_dpath_pmp_1_addr; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_1_mask = io_dpath_pmp_1_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_2_cfg_l = io_dpath_pmp_2_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_2_cfg_a = io_dpath_pmp_2_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_2_cfg_x = io_dpath_pmp_2_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_2_cfg_w = io_dpath_pmp_2_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_2_cfg_r = io_dpath_pmp_2_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_2_addr = io_dpath_pmp_2_addr; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_2_mask = io_dpath_pmp_2_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_3_cfg_l = io_dpath_pmp_3_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_3_cfg_a = io_dpath_pmp_3_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_3_cfg_x = io_dpath_pmp_3_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_3_cfg_w = io_dpath_pmp_3_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_3_cfg_r = io_dpath_pmp_3_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_3_addr = io_dpath_pmp_3_addr; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_3_mask = io_dpath_pmp_3_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_4_cfg_l = io_dpath_pmp_4_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_4_cfg_a = io_dpath_pmp_4_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_4_cfg_x = io_dpath_pmp_4_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_4_cfg_w = io_dpath_pmp_4_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_4_cfg_r = io_dpath_pmp_4_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_4_addr = io_dpath_pmp_4_addr; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_4_mask = io_dpath_pmp_4_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_5_cfg_l = io_dpath_pmp_5_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_5_cfg_a = io_dpath_pmp_5_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_5_cfg_x = io_dpath_pmp_5_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_5_cfg_w = io_dpath_pmp_5_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_5_cfg_r = io_dpath_pmp_5_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_5_addr = io_dpath_pmp_5_addr; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_5_mask = io_dpath_pmp_5_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_6_cfg_l = io_dpath_pmp_6_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_6_cfg_a = io_dpath_pmp_6_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_6_cfg_x = io_dpath_pmp_6_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_6_cfg_w = io_dpath_pmp_6_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_6_cfg_r = io_dpath_pmp_6_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_6_addr = io_dpath_pmp_6_addr; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_6_mask = io_dpath_pmp_6_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_7_cfg_l = io_dpath_pmp_7_cfg_l; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_7_cfg_a = io_dpath_pmp_7_cfg_a; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_7_cfg_x = io_dpath_pmp_7_cfg_x; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_7_cfg_w = io_dpath_pmp_7_cfg_w; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_7_cfg_r = io_dpath_pmp_7_cfg_r; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_7_addr = io_dpath_pmp_7_addr; // @[PTW.scala 405:25]
+  assign io_requestor_1_pmp_7_mask = io_dpath_pmp_7_mask; // @[PTW.scala 405:25]
+  assign io_requestor_1_customCSRs_csrs_0_value = io_dpath_customCSRs_csrs_0_value; // @[PTW.scala 401:32]
+  assign io_dpath_perf_l2hit = 1'h0; // @[PTW.scala 264:23]
+  assign io_dpath_perf_pte_miss = 1'h0; // @[PTW.scala 413:18 256:26]
+  assign io_dpath_perf_pte_hit = 1'h0; // @[PTW.scala 257:57]
+  always @(posedge clock) begin
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(io_dpath_perf_l2hit & (io_dpath_perf_pte_miss | io_dpath_perf_pte_hit))) & ~reset) begin
+          $fatal; // @[PTW.scala 258:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~(io_dpath_perf_l2hit & (io_dpath_perf_pte_miss | io_dpath_perf_pte_hit)))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: PTE Cache Hit/Miss Performance Monitor Events are lower priority than L2TLB Hit event\n    at PTW.scala:258 assert(!(io.dpath.perf.l2hit && (io.dpath.perf.pte_miss || io.dpath.perf.pte_hit)),\n"
+            ); // @[PTW.scala 258:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+endmodule
+module RVCExpander(
+  input  [31:0] io_in,
+  output [31:0] io_out_bits,
+  output [4:0]  io_out_rd,
+  output [4:0]  io_out_rs1,
+  output [4:0]  io_out_rs2,
+  output        io_rvc
+);
+  wire [6:0] io_out_s_opc = |io_in[12:5] ? 7'h13 : 7'h1f; // @[RVC.scala 53:20]
+  wire [4:0] _io_out_s_T_6 = {2'h1,io_in[4:2]}; // @[Cat.scala 31:58]
+  wire [29:0] _io_out_s_T_7 = {io_in[10:7],io_in[12:11],io_in[5],io_in[6],2'h0,5'h2,3'h0,2'h1,io_in[4:2],io_out_s_opc}; // @[Cat.scala 31:58]
+  wire [7:0] _io_out_s_T_15 = {io_in[6:5],io_in[12:10],3'h0}; // @[Cat.scala 31:58]
+  wire [4:0] _io_out_s_T_17 = {2'h1,io_in[9:7]}; // @[Cat.scala 31:58]
+  wire [27:0] _io_out_s_T_20 = {io_in[6:5],io_in[12:10],3'h0,2'h1,io_in[9:7],3'h3,2'h1,io_in[4:2],7'h7}; // @[Cat.scala 31:58]
+  wire [6:0] _io_out_s_T_31 = {io_in[5],io_in[12:10],io_in[6],2'h0}; // @[Cat.scala 31:58]
+  wire [26:0] _io_out_s_T_36 = {io_in[5],io_in[12:10],io_in[6],2'h0,2'h1,io_in[9:7],3'h2,2'h1,io_in[4:2],7'h3}; // @[Cat.scala 31:58]
+  wire [26:0] _io_out_s_T_52 = {io_in[5],io_in[12:10],io_in[6],2'h0,2'h1,io_in[9:7],3'h2,2'h1,io_in[4:2],7'h7}; // @[Cat.scala 31:58]
+  wire [26:0] _io_out_s_T_74 = {_io_out_s_T_31[6:5],2'h1,io_in[4:2],2'h1,io_in[9:7],3'h2,_io_out_s_T_31[4:0],7'h3f}; // @[Cat.scala 31:58]
+  wire [27:0] _io_out_s_T_94 = {_io_out_s_T_15[7:5],2'h1,io_in[4:2],2'h1,io_in[9:7],3'h3,_io_out_s_T_15[4:0],7'h27}; // @[Cat.scala 31:58]
+  wire [26:0] _io_out_s_T_116 = {_io_out_s_T_31[6:5],2'h1,io_in[4:2],2'h1,io_in[9:7],3'h2,_io_out_s_T_31[4:0],7'h23}; // @[Cat.scala 31:58]
+  wire [26:0] _io_out_s_T_138 = {_io_out_s_T_31[6:5],2'h1,io_in[4:2],2'h1,io_in[9:7],3'h2,_io_out_s_T_31[4:0],7'h27}; // @[Cat.scala 31:58]
+  wire [6:0] _io_out_s_T_148 = io_in[12] ? 7'h7f : 7'h0; // @[Bitwise.scala 74:12]
+  wire [11:0] _io_out_s_T_150 = {_io_out_s_T_148,io_in[6:2]}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_8_bits = {_io_out_s_T_148,io_in[6:2],io_in[11:7],3'h0,io_in[11:7],7'h13}; // @[Cat.scala 31:58]
+  wire [9:0] _io_out_s_T_161 = io_in[12] ? 10'h3ff : 10'h0; // @[Bitwise.scala 74:12]
+  wire [20:0] _io_out_s_T_169 = {_io_out_s_T_161,io_in[8],io_in[10:9],io_in[6],io_in[7],io_in[2],io_in[11],io_in[5:3],1'h0
+    }; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_9_bits = {_io_out_s_T_169[20],_io_out_s_T_169[10:1],_io_out_s_T_169[11],_io_out_s_T_169[19:12],5'h1
+    ,7'h6f}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_10_bits = {_io_out_s_T_148,io_in[6:2],5'h0,3'h0,io_in[11:7],7'h13}; // @[Cat.scala 31:58]
+  wire  _io_out_s_opc_T_7 = |_io_out_s_T_150; // @[RVC.scala 90:29]
+  wire [6:0] io_out_s_opc_1 = |_io_out_s_T_150 ? 7'h37 : 7'h3f; // @[RVC.scala 90:20]
+  wire [14:0] _io_out_s_me_T_2 = io_in[12] ? 15'h7fff : 15'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] _io_out_s_me_T_4 = {_io_out_s_me_T_2,io_in[6:2],12'h0}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_me_bits = {_io_out_s_me_T_4[31:12],io_in[11:7],io_out_s_opc_1}; // @[Cat.scala 31:58]
+  wire [6:0] io_out_s_opc_2 = _io_out_s_opc_T_7 ? 7'h13 : 7'h1f; // @[RVC.scala 86:20]
+  wire [2:0] _io_out_s_T_230 = io_in[12] ? 3'h7 : 3'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] io_out_s_res_bits = {_io_out_s_T_230,io_in[4:3],io_in[5],io_in[2],io_in[6],4'h0,io_in[11:7],3'h0,io_in[11:
+    7],io_out_s_opc_2}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_11_bits = io_in[11:7] == 5'h0 | io_in[11:7] == 5'h2 ? io_out_s_res_bits : io_out_s_me_bits; // @[RVC.scala 92:10]
+  wire [4:0] io_out_s_11_rd = io_in[11:7] == 5'h0 | io_in[11:7] == 5'h2 ? io_in[11:7] : io_in[11:7]; // @[RVC.scala 92:10]
+  wire [4:0] io_out_s_11_rs2 = io_in[11:7] == 5'h0 | io_in[11:7] == 5'h2 ? _io_out_s_T_6 : _io_out_s_T_6; // @[RVC.scala 92:10]
+  wire [25:0] _io_out_s_T_251 = {io_in[12],io_in[6:2],2'h1,io_in[9:7],3'h5,2'h1,io_in[9:7],7'h13}; // @[Cat.scala 31:58]
+  wire [30:0] _GEN_0 = {{5'd0}, _io_out_s_T_251}; // @[RVC.scala 99:23]
+  wire [30:0] _io_out_s_T_260 = _GEN_0 | 31'h40000000; // @[RVC.scala 99:23]
+  wire [31:0] _io_out_s_T_270 = {_io_out_s_T_148,io_in[6:2],2'h1,io_in[9:7],3'h7,2'h1,io_in[9:7],7'h13}; // @[Cat.scala 31:58]
+  wire [2:0] _io_out_s_funct_T_2 = {io_in[12],io_in[6:5]}; // @[Cat.scala 31:58]
+  wire [2:0] _io_out_s_funct_T_4 = _io_out_s_funct_T_2 == 3'h1 ? 3'h4 : 3'h0; // @[package.scala 32:76]
+  wire [2:0] _io_out_s_funct_T_6 = _io_out_s_funct_T_2 == 3'h2 ? 3'h6 : _io_out_s_funct_T_4; // @[package.scala 32:76]
+  wire [2:0] _io_out_s_funct_T_8 = _io_out_s_funct_T_2 == 3'h3 ? 3'h7 : _io_out_s_funct_T_6; // @[package.scala 32:76]
+  wire [2:0] _io_out_s_funct_T_10 = _io_out_s_funct_T_2 == 3'h4 ? 3'h0 : _io_out_s_funct_T_8; // @[package.scala 32:76]
+  wire [2:0] _io_out_s_funct_T_12 = _io_out_s_funct_T_2 == 3'h5 ? 3'h0 : _io_out_s_funct_T_10; // @[package.scala 32:76]
+  wire [2:0] _io_out_s_funct_T_14 = _io_out_s_funct_T_2 == 3'h6 ? 3'h2 : _io_out_s_funct_T_12; // @[package.scala 32:76]
+  wire [2:0] io_out_s_funct = _io_out_s_funct_T_2 == 3'h7 ? 3'h3 : _io_out_s_funct_T_14; // @[package.scala 32:76]
+  wire [30:0] io_out_s_sub = io_in[6:5] == 2'h0 ? 31'h40000000 : 31'h0; // @[RVC.scala 103:22]
+  wire [6:0] io_out_s_opc_3 = io_in[12] ? 7'h3b : 7'h33; // @[RVC.scala 104:22]
+  wire [24:0] _io_out_s_T_277 = {2'h1,io_in[4:2],2'h1,io_in[9:7],io_out_s_funct,2'h1,io_in[9:7],io_out_s_opc_3}; // @[Cat.scala 31:58]
+  wire [30:0] _GEN_1 = {{6'd0}, _io_out_s_T_277}; // @[RVC.scala 105:43]
+  wire [30:0] _io_out_s_T_278 = _GEN_1 | io_out_s_sub; // @[RVC.scala 105:43]
+  wire [30:0] _io_out_s_T_281 = io_in[11:10] == 2'h1 ? _io_out_s_T_260 : {{5'd0}, _io_out_s_T_251}; // @[package.scala 32:76]
+  wire [31:0] _io_out_s_T_283 = io_in[11:10] == 2'h2 ? _io_out_s_T_270 : {{1'd0}, _io_out_s_T_281}; // @[package.scala 32:76]
+  wire [31:0] io_out_s_12_bits = io_in[11:10] == 2'h3 ? {{1'd0}, _io_out_s_T_278} : _io_out_s_T_283; // @[package.scala 32:76]
+  wire [31:0] io_out_s_13_bits = {_io_out_s_T_169[20],_io_out_s_T_169[10:1],_io_out_s_T_169[11],_io_out_s_T_169[19:12],5'h0
+    ,7'h6f}; // @[Cat.scala 31:58]
+  wire [4:0] _io_out_s_T_349 = io_in[12] ? 5'h1f : 5'h0; // @[Bitwise.scala 74:12]
+  wire [12:0] _io_out_s_T_354 = {_io_out_s_T_349,io_in[6:5],io_in[2],io_in[11:10],io_in[4:3],1'h0}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_14_bits = {_io_out_s_T_354[12],_io_out_s_T_354[10:5],5'h0,2'h1,io_in[9:7],3'h0,_io_out_s_T_354[4:
+    1],_io_out_s_T_354[11],7'h63}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_15_bits = {_io_out_s_T_354[12],_io_out_s_T_354[10:5],5'h0,2'h1,io_in[9:7],3'h1,_io_out_s_T_354[4:
+    1],_io_out_s_T_354[11],7'h63}; // @[Cat.scala 31:58]
+  wire  _io_out_s_load_opc_T_1 = |io_in[11:7]; // @[RVC.scala 113:27]
+  wire [6:0] io_out_s_load_opc = |io_in[11:7] ? 7'h3 : 7'h1f; // @[RVC.scala 113:23]
+  wire [25:0] _io_out_s_T_438 = {io_in[12],io_in[6:2],io_in[11:7],3'h1,io_in[11:7],7'h13}; // @[Cat.scala 31:58]
+  wire [28:0] _io_out_s_T_448 = {io_in[4:2],io_in[12],io_in[6:5],3'h0,5'h2,3'h3,io_in[11:7],7'h7}; // @[Cat.scala 31:58]
+  wire [27:0] _io_out_s_T_457 = {io_in[3:2],io_in[12],io_in[6:4],2'h0,5'h2,3'h2,io_in[11:7],io_out_s_load_opc}; // @[Cat.scala 31:58]
+  wire [27:0] _io_out_s_T_466 = {io_in[3:2],io_in[12],io_in[6:4],2'h0,5'h2,3'h2,io_in[11:7],7'h7}; // @[Cat.scala 31:58]
+  wire [24:0] _io_out_s_mv_T_2 = {io_in[6:2],5'h0,3'h0,io_in[11:7],7'h33}; // @[Cat.scala 31:58]
+  wire [24:0] _io_out_s_add_T_3 = {io_in[6:2],io_in[11:7],3'h0,io_in[11:7],7'h33}; // @[Cat.scala 31:58]
+  wire [24:0] io_out_s_jr = {io_in[6:2],io_in[11:7],3'h0,12'h67}; // @[Cat.scala 31:58]
+  wire [24:0] io_out_s_reserved = {io_out_s_jr[24:7],7'h1f}; // @[Cat.scala 31:58]
+  wire [24:0] _io_out_s_jr_reserved_T_2 = _io_out_s_load_opc_T_1 ? io_out_s_jr : io_out_s_reserved; // @[RVC.scala 134:33]
+  wire  _io_out_s_jr_mv_T_1 = |io_in[6:2]; // @[RVC.scala 135:27]
+  wire [31:0] io_out_s_mv_bits = {{7'd0}, _io_out_s_mv_T_2}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] io_out_s_jr_reserved_bits = {{7'd0}, _io_out_s_jr_reserved_T_2}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] io_out_s_jr_mv_bits = |io_in[6:2] ? io_out_s_mv_bits : io_out_s_jr_reserved_bits; // @[RVC.scala 135:22]
+  wire [4:0] io_out_s_jr_mv_rd = |io_in[6:2] ? io_in[11:7] : 5'h0; // @[RVC.scala 135:22]
+  wire [4:0] io_out_s_jr_mv_rs1 = |io_in[6:2] ? 5'h0 : io_in[11:7]; // @[RVC.scala 135:22]
+  wire [4:0] io_out_s_jr_mv_rs2 = |io_in[6:2] ? io_in[6:2] : io_in[6:2]; // @[RVC.scala 135:22]
+  wire [24:0] io_out_s_jalr = {io_in[6:2],io_in[11:7],3'h0,12'he7}; // @[Cat.scala 31:58]
+  wire [24:0] _io_out_s_ebreak_T_1 = {io_out_s_jr[24:7],7'h73}; // @[Cat.scala 31:58]
+  wire [24:0] io_out_s_ebreak = _io_out_s_ebreak_T_1 | 25'h100000; // @[RVC.scala 137:46]
+  wire [24:0] _io_out_s_jalr_ebreak_T_2 = _io_out_s_load_opc_T_1 ? io_out_s_jalr : io_out_s_ebreak; // @[RVC.scala 138:33]
+  wire [31:0] io_out_s_add_bits = {{7'd0}, _io_out_s_add_T_3}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] io_out_s_jalr_ebreak_bits = {{7'd0}, _io_out_s_jalr_ebreak_T_2}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] io_out_s_jalr_add_bits = _io_out_s_jr_mv_T_1 ? io_out_s_add_bits : io_out_s_jalr_ebreak_bits; // @[RVC.scala 139:25]
+  wire [4:0] io_out_s_jalr_add_rd = _io_out_s_jr_mv_T_1 ? io_in[11:7] : 5'h1; // @[RVC.scala 139:25]
+  wire [4:0] io_out_s_jalr_add_rs1 = _io_out_s_jr_mv_T_1 ? io_in[11:7] : io_in[11:7]; // @[RVC.scala 139:25]
+  wire [31:0] io_out_s_20_bits = io_in[12] ? io_out_s_jalr_add_bits : io_out_s_jr_mv_bits; // @[RVC.scala 140:10]
+  wire [4:0] io_out_s_20_rd = io_in[12] ? io_out_s_jalr_add_rd : io_out_s_jr_mv_rd; // @[RVC.scala 140:10]
+  wire [4:0] io_out_s_20_rs1 = io_in[12] ? io_out_s_jalr_add_rs1 : io_out_s_jr_mv_rs1; // @[RVC.scala 140:10]
+  wire [4:0] io_out_s_20_rs2 = io_in[12] ? io_out_s_jr_mv_rs2 : io_out_s_jr_mv_rs2; // @[RVC.scala 140:10]
+  wire [8:0] _io_out_s_T_473 = {io_in[9:7],io_in[12:10],3'h0}; // @[Cat.scala 31:58]
+  wire [28:0] _io_out_s_T_480 = {_io_out_s_T_473[8:5],io_in[6:2],5'h2,3'h3,_io_out_s_T_473[4:0],7'h27}; // @[Cat.scala 31:58]
+  wire [7:0] _io_out_s_T_486 = {io_in[8:7],io_in[12:9],2'h0}; // @[Cat.scala 31:58]
+  wire [27:0] _io_out_s_T_493 = {_io_out_s_T_486[7:5],io_in[6:2],5'h2,3'h2,_io_out_s_T_486[4:0],7'h23}; // @[Cat.scala 31:58]
+  wire [27:0] _io_out_s_T_506 = {_io_out_s_T_486[7:5],io_in[6:2],5'h2,3'h2,_io_out_s_T_486[4:0],7'h27}; // @[Cat.scala 31:58]
+  wire [4:0] io_out_s_24_rs1 = io_in[19:15]; // @[RVC.scala 20:57]
+  wire [4:0] io_out_s_24_rs2 = io_in[24:20]; // @[RVC.scala 20:79]
+  wire [4:0] _io_out_T_2 = {io_in[1:0],io_in[15:13]}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_1_bits = {{4'd0}, _io_out_s_T_20}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] io_out_s_0_bits = {{2'd0}, _io_out_s_T_7}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_4_bits = _io_out_T_2 == 5'h1 ? io_out_s_1_bits : io_out_s_0_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_4_rd = _io_out_T_2 == 5'h1 ? _io_out_s_T_6 : _io_out_s_T_6; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_4_rs1 = _io_out_T_2 == 5'h1 ? _io_out_s_T_17 : 5'h2; // @[package.scala 32:76]
+  wire [31:0] io_out_s_2_bits = {{5'd0}, _io_out_s_T_36}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_6_bits = _io_out_T_2 == 5'h2 ? io_out_s_2_bits : _io_out_T_4_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_6_rd = _io_out_T_2 == 5'h2 ? _io_out_s_T_6 : _io_out_T_4_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_6_rs1 = _io_out_T_2 == 5'h2 ? _io_out_s_T_17 : _io_out_T_4_rs1; // @[package.scala 32:76]
+  wire [31:0] io_out_s_3_bits = {{5'd0}, _io_out_s_T_52}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_8_bits = _io_out_T_2 == 5'h3 ? io_out_s_3_bits : _io_out_T_6_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_8_rd = _io_out_T_2 == 5'h3 ? _io_out_s_T_6 : _io_out_T_6_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_8_rs1 = _io_out_T_2 == 5'h3 ? _io_out_s_T_17 : _io_out_T_6_rs1; // @[package.scala 32:76]
+  wire [31:0] io_out_s_4_bits = {{5'd0}, _io_out_s_T_74}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_10_bits = _io_out_T_2 == 5'h4 ? io_out_s_4_bits : _io_out_T_8_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_10_rd = _io_out_T_2 == 5'h4 ? _io_out_s_T_6 : _io_out_T_8_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_10_rs1 = _io_out_T_2 == 5'h4 ? _io_out_s_T_17 : _io_out_T_8_rs1; // @[package.scala 32:76]
+  wire [31:0] io_out_s_5_bits = {{4'd0}, _io_out_s_T_94}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_12_bits = _io_out_T_2 == 5'h5 ? io_out_s_5_bits : _io_out_T_10_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_12_rd = _io_out_T_2 == 5'h5 ? _io_out_s_T_6 : _io_out_T_10_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_12_rs1 = _io_out_T_2 == 5'h5 ? _io_out_s_T_17 : _io_out_T_10_rs1; // @[package.scala 32:76]
+  wire [31:0] io_out_s_6_bits = {{5'd0}, _io_out_s_T_116}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_14_bits = _io_out_T_2 == 5'h6 ? io_out_s_6_bits : _io_out_T_12_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_14_rd = _io_out_T_2 == 5'h6 ? _io_out_s_T_6 : _io_out_T_12_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_14_rs1 = _io_out_T_2 == 5'h6 ? _io_out_s_T_17 : _io_out_T_12_rs1; // @[package.scala 32:76]
+  wire [31:0] io_out_s_7_bits = {{5'd0}, _io_out_s_T_138}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_16_bits = _io_out_T_2 == 5'h7 ? io_out_s_7_bits : _io_out_T_14_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_16_rd = _io_out_T_2 == 5'h7 ? _io_out_s_T_6 : _io_out_T_14_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_16_rs1 = _io_out_T_2 == 5'h7 ? _io_out_s_T_17 : _io_out_T_14_rs1; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_18_bits = _io_out_T_2 == 5'h8 ? io_out_s_8_bits : _io_out_T_16_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_18_rd = _io_out_T_2 == 5'h8 ? io_in[11:7] : _io_out_T_16_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_18_rs1 = _io_out_T_2 == 5'h8 ? io_in[11:7] : _io_out_T_16_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_18_rs2 = _io_out_T_2 == 5'h8 ? _io_out_s_T_6 : _io_out_T_16_rd; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_20_bits = _io_out_T_2 == 5'h9 ? io_out_s_9_bits : _io_out_T_18_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_20_rd = _io_out_T_2 == 5'h9 ? 5'h1 : _io_out_T_18_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_20_rs1 = _io_out_T_2 == 5'h9 ? io_in[11:7] : _io_out_T_18_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_20_rs2 = _io_out_T_2 == 5'h9 ? _io_out_s_T_6 : _io_out_T_18_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_22_bits = _io_out_T_2 == 5'ha ? io_out_s_10_bits : _io_out_T_20_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_22_rd = _io_out_T_2 == 5'ha ? io_in[11:7] : _io_out_T_20_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_22_rs1 = _io_out_T_2 == 5'ha ? 5'h0 : _io_out_T_20_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_22_rs2 = _io_out_T_2 == 5'ha ? _io_out_s_T_6 : _io_out_T_20_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_24_bits = _io_out_T_2 == 5'hb ? io_out_s_11_bits : _io_out_T_22_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_24_rd = _io_out_T_2 == 5'hb ? io_out_s_11_rd : _io_out_T_22_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_24_rs1 = _io_out_T_2 == 5'hb ? io_out_s_11_rd : _io_out_T_22_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_24_rs2 = _io_out_T_2 == 5'hb ? io_out_s_11_rs2 : _io_out_T_22_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_26_bits = _io_out_T_2 == 5'hc ? io_out_s_12_bits : _io_out_T_24_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_26_rd = _io_out_T_2 == 5'hc ? _io_out_s_T_17 : _io_out_T_24_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_26_rs1 = _io_out_T_2 == 5'hc ? _io_out_s_T_17 : _io_out_T_24_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_26_rs2 = _io_out_T_2 == 5'hc ? _io_out_s_T_6 : _io_out_T_24_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_28_bits = _io_out_T_2 == 5'hd ? io_out_s_13_bits : _io_out_T_26_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_28_rd = _io_out_T_2 == 5'hd ? 5'h0 : _io_out_T_26_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_28_rs1 = _io_out_T_2 == 5'hd ? _io_out_s_T_17 : _io_out_T_26_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_28_rs2 = _io_out_T_2 == 5'hd ? _io_out_s_T_6 : _io_out_T_26_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_30_bits = _io_out_T_2 == 5'he ? io_out_s_14_bits : _io_out_T_28_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_30_rd = _io_out_T_2 == 5'he ? _io_out_s_T_17 : _io_out_T_28_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_30_rs1 = _io_out_T_2 == 5'he ? _io_out_s_T_17 : _io_out_T_28_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_30_rs2 = _io_out_T_2 == 5'he ? 5'h0 : _io_out_T_28_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_32_bits = _io_out_T_2 == 5'hf ? io_out_s_15_bits : _io_out_T_30_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_32_rd = _io_out_T_2 == 5'hf ? 5'h0 : _io_out_T_30_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_32_rs1 = _io_out_T_2 == 5'hf ? _io_out_s_T_17 : _io_out_T_30_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_32_rs2 = _io_out_T_2 == 5'hf ? 5'h0 : _io_out_T_30_rs2; // @[package.scala 32:76]
+  wire [31:0] io_out_s_16_bits = {{6'd0}, _io_out_s_T_438}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_34_bits = _io_out_T_2 == 5'h10 ? io_out_s_16_bits : _io_out_T_32_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_34_rd = _io_out_T_2 == 5'h10 ? io_in[11:7] : _io_out_T_32_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_34_rs1 = _io_out_T_2 == 5'h10 ? io_in[11:7] : _io_out_T_32_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_34_rs2 = _io_out_T_2 == 5'h10 ? io_in[6:2] : _io_out_T_32_rs2; // @[package.scala 32:76]
+  wire [31:0] io_out_s_17_bits = {{3'd0}, _io_out_s_T_448}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_36_bits = _io_out_T_2 == 5'h11 ? io_out_s_17_bits : _io_out_T_34_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_36_rd = _io_out_T_2 == 5'h11 ? io_in[11:7] : _io_out_T_34_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_36_rs1 = _io_out_T_2 == 5'h11 ? 5'h2 : _io_out_T_34_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_36_rs2 = _io_out_T_2 == 5'h11 ? io_in[6:2] : _io_out_T_34_rs2; // @[package.scala 32:76]
+  wire [31:0] io_out_s_18_bits = {{4'd0}, _io_out_s_T_457}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_38_bits = _io_out_T_2 == 5'h12 ? io_out_s_18_bits : _io_out_T_36_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_38_rd = _io_out_T_2 == 5'h12 ? io_in[11:7] : _io_out_T_36_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_38_rs1 = _io_out_T_2 == 5'h12 ? 5'h2 : _io_out_T_36_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_38_rs2 = _io_out_T_2 == 5'h12 ? io_in[6:2] : _io_out_T_36_rs2; // @[package.scala 32:76]
+  wire [31:0] io_out_s_19_bits = {{4'd0}, _io_out_s_T_466}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_40_bits = _io_out_T_2 == 5'h13 ? io_out_s_19_bits : _io_out_T_38_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_40_rd = _io_out_T_2 == 5'h13 ? io_in[11:7] : _io_out_T_38_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_40_rs1 = _io_out_T_2 == 5'h13 ? 5'h2 : _io_out_T_38_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_40_rs2 = _io_out_T_2 == 5'h13 ? io_in[6:2] : _io_out_T_38_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_42_bits = _io_out_T_2 == 5'h14 ? io_out_s_20_bits : _io_out_T_40_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_42_rd = _io_out_T_2 == 5'h14 ? io_out_s_20_rd : _io_out_T_40_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_42_rs1 = _io_out_T_2 == 5'h14 ? io_out_s_20_rs1 : _io_out_T_40_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_42_rs2 = _io_out_T_2 == 5'h14 ? io_out_s_20_rs2 : _io_out_T_40_rs2; // @[package.scala 32:76]
+  wire [31:0] io_out_s_21_bits = {{3'd0}, _io_out_s_T_480}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_44_bits = _io_out_T_2 == 5'h15 ? io_out_s_21_bits : _io_out_T_42_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_44_rd = _io_out_T_2 == 5'h15 ? io_in[11:7] : _io_out_T_42_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_44_rs1 = _io_out_T_2 == 5'h15 ? 5'h2 : _io_out_T_42_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_44_rs2 = _io_out_T_2 == 5'h15 ? io_in[6:2] : _io_out_T_42_rs2; // @[package.scala 32:76]
+  wire [31:0] io_out_s_22_bits = {{4'd0}, _io_out_s_T_493}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_46_bits = _io_out_T_2 == 5'h16 ? io_out_s_22_bits : _io_out_T_44_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_46_rd = _io_out_T_2 == 5'h16 ? io_in[11:7] : _io_out_T_44_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_46_rs1 = _io_out_T_2 == 5'h16 ? 5'h2 : _io_out_T_44_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_46_rs2 = _io_out_T_2 == 5'h16 ? io_in[6:2] : _io_out_T_44_rs2; // @[package.scala 32:76]
+  wire [31:0] io_out_s_23_bits = {{4'd0}, _io_out_s_T_506}; // @[RVC.scala 21:19 22:14]
+  wire [31:0] _io_out_T_48_bits = _io_out_T_2 == 5'h17 ? io_out_s_23_bits : _io_out_T_46_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_48_rd = _io_out_T_2 == 5'h17 ? io_in[11:7] : _io_out_T_46_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_48_rs1 = _io_out_T_2 == 5'h17 ? 5'h2 : _io_out_T_46_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_48_rs2 = _io_out_T_2 == 5'h17 ? io_in[6:2] : _io_out_T_46_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_50_bits = _io_out_T_2 == 5'h18 ? io_in : _io_out_T_48_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_50_rd = _io_out_T_2 == 5'h18 ? io_in[11:7] : _io_out_T_48_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_50_rs1 = _io_out_T_2 == 5'h18 ? io_out_s_24_rs1 : _io_out_T_48_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_50_rs2 = _io_out_T_2 == 5'h18 ? io_out_s_24_rs2 : _io_out_T_48_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_52_bits = _io_out_T_2 == 5'h19 ? io_in : _io_out_T_50_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_52_rd = _io_out_T_2 == 5'h19 ? io_in[11:7] : _io_out_T_50_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_52_rs1 = _io_out_T_2 == 5'h19 ? io_out_s_24_rs1 : _io_out_T_50_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_52_rs2 = _io_out_T_2 == 5'h19 ? io_out_s_24_rs2 : _io_out_T_50_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_54_bits = _io_out_T_2 == 5'h1a ? io_in : _io_out_T_52_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_54_rd = _io_out_T_2 == 5'h1a ? io_in[11:7] : _io_out_T_52_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_54_rs1 = _io_out_T_2 == 5'h1a ? io_out_s_24_rs1 : _io_out_T_52_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_54_rs2 = _io_out_T_2 == 5'h1a ? io_out_s_24_rs2 : _io_out_T_52_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_56_bits = _io_out_T_2 == 5'h1b ? io_in : _io_out_T_54_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_56_rd = _io_out_T_2 == 5'h1b ? io_in[11:7] : _io_out_T_54_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_56_rs1 = _io_out_T_2 == 5'h1b ? io_out_s_24_rs1 : _io_out_T_54_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_56_rs2 = _io_out_T_2 == 5'h1b ? io_out_s_24_rs2 : _io_out_T_54_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_58_bits = _io_out_T_2 == 5'h1c ? io_in : _io_out_T_56_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_58_rd = _io_out_T_2 == 5'h1c ? io_in[11:7] : _io_out_T_56_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_58_rs1 = _io_out_T_2 == 5'h1c ? io_out_s_24_rs1 : _io_out_T_56_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_58_rs2 = _io_out_T_2 == 5'h1c ? io_out_s_24_rs2 : _io_out_T_56_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_60_bits = _io_out_T_2 == 5'h1d ? io_in : _io_out_T_58_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_60_rd = _io_out_T_2 == 5'h1d ? io_in[11:7] : _io_out_T_58_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_60_rs1 = _io_out_T_2 == 5'h1d ? io_out_s_24_rs1 : _io_out_T_58_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_60_rs2 = _io_out_T_2 == 5'h1d ? io_out_s_24_rs2 : _io_out_T_58_rs2; // @[package.scala 32:76]
+  wire [31:0] _io_out_T_62_bits = _io_out_T_2 == 5'h1e ? io_in : _io_out_T_60_bits; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_62_rd = _io_out_T_2 == 5'h1e ? io_in[11:7] : _io_out_T_60_rd; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_62_rs1 = _io_out_T_2 == 5'h1e ? io_out_s_24_rs1 : _io_out_T_60_rs1; // @[package.scala 32:76]
+  wire [4:0] _io_out_T_62_rs2 = _io_out_T_2 == 5'h1e ? io_out_s_24_rs2 : _io_out_T_60_rs2; // @[package.scala 32:76]
+  assign io_out_bits = _io_out_T_2 == 5'h1f ? io_in : _io_out_T_62_bits; // @[package.scala 32:76]
+  assign io_out_rd = _io_out_T_2 == 5'h1f ? io_in[11:7] : _io_out_T_62_rd; // @[package.scala 32:76]
+  assign io_out_rs1 = _io_out_T_2 == 5'h1f ? io_out_s_24_rs1 : _io_out_T_62_rs1; // @[package.scala 32:76]
+  assign io_out_rs2 = _io_out_T_2 == 5'h1f ? io_out_s_24_rs2 : _io_out_T_62_rs2; // @[package.scala 32:76]
+  assign io_rvc = io_in[1:0] != 2'h3; // @[RVC.scala 163:26]
+endmodule
+module IBuf(
+  input         clock,
+  input         reset,
+  output        io_imem_ready,
+  input         io_imem_valid,
+  input         io_imem_bits_btb_taken,
+  input         io_imem_bits_btb_bridx,
+  input  [4:0]  io_imem_bits_btb_entry,
+  input  [7:0]  io_imem_bits_btb_bht_history,
+  input  [31:0] io_imem_bits_pc,
+  input  [31:0] io_imem_bits_data,
+  input         io_imem_bits_xcpt_ae_inst,
+  input         io_imem_bits_replay,
+  input         io_kill,
+  output [31:0] io_pc,
+  output [4:0]  io_btb_resp_entry,
+  output [7:0]  io_btb_resp_bht_history,
+  input         io_inst_0_ready,
+  output        io_inst_0_valid,
+  output        io_inst_0_bits_xcpt0_ae_inst,
+  output        io_inst_0_bits_xcpt1_pf_inst,
+  output        io_inst_0_bits_xcpt1_gf_inst,
+  output        io_inst_0_bits_xcpt1_ae_inst,
+  output        io_inst_0_bits_replay,
+  output        io_inst_0_bits_rvc,
+  output [31:0] io_inst_0_bits_inst_bits,
+  output [4:0]  io_inst_0_bits_inst_rd,
+  output [4:0]  io_inst_0_bits_inst_rs1,
+  output [4:0]  io_inst_0_bits_inst_rs2,
+  output [31:0] io_inst_0_bits_raw
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] exp_io_in; // @[IBuf.scala 86:21]
+  wire [31:0] exp_io_out_bits; // @[IBuf.scala 86:21]
+  wire [4:0] exp_io_out_rd; // @[IBuf.scala 86:21]
+  wire [4:0] exp_io_out_rs1; // @[IBuf.scala 86:21]
+  wire [4:0] exp_io_out_rs2; // @[IBuf.scala 86:21]
+  wire  exp_io_rvc; // @[IBuf.scala 86:21]
+  reg  nBufValid; // @[IBuf.scala 34:47]
+  reg [31:0] buf__pc; // @[IBuf.scala 35:16]
+  reg [31:0] buf__data; // @[IBuf.scala 35:16]
+  reg  buf__xcpt_ae_inst; // @[IBuf.scala 35:16]
+  reg  buf__replay; // @[IBuf.scala 35:16]
+  reg [4:0] ibufBTBResp_entry; // @[IBuf.scala 36:24]
+  reg [7:0] ibufBTBResp_bht_history; // @[IBuf.scala 36:24]
+  wire  pcWordBits = io_imem_bits_pc[1]; // @[package.scala 154:13]
+  wire [1:0] _nIC_T = io_imem_bits_btb_bridx + 1'h1; // @[IBuf.scala 41:64]
+  wire [1:0] _nIC_T_1 = io_imem_bits_btb_taken ? _nIC_T : 2'h2; // @[IBuf.scala 41:16]
+  wire [1:0] _GEN_58 = {{1'd0}, pcWordBits}; // @[IBuf.scala 41:88]
+  wire [1:0] nIC = _nIC_T_1 - _GEN_58; // @[IBuf.scala 41:88]
+  wire [1:0] _nValid_T = io_imem_valid ? nIC : 2'h0; // @[IBuf.scala 43:19]
+  wire [1:0] _GEN_59 = {{1'd0}, nBufValid}; // @[IBuf.scala 43:49]
+  wire [1:0] nValid = _nValid_T + _GEN_59; // @[IBuf.scala 43:49]
+  wire [3:0] _valid_T = 4'h1 << nValid; // @[OneHot.scala 57:35]
+  wire [3:0] _valid_T_2 = _valid_T - 4'h1; // @[IBuf.scala 74:33]
+  wire [1:0] valid = _valid_T_2[1:0]; // @[IBuf.scala 74:37]
+  wire [1:0] _full_insn_T_2 = {{1'd0}, valid[1]}; // @[IBuf.scala 93:42]
+  wire [1:0] _bufMask_T = 2'h1 << nBufValid; // @[OneHot.scala 57:35]
+  wire [1:0] bufMask = _bufMask_T - 2'h1; // @[IBuf.scala 75:37]
+  wire [1:0] buf_replay = buf__replay ? bufMask : 2'h0; // @[IBuf.scala 77:23]
+  wire  full_insn = exp_io_rvc | _full_insn_T_2[0] | buf_replay[0]; // @[IBuf.scala 93:48]
+  wire [1:0] _nReady_T_4 = exp_io_rvc ? 2'h1 : 2'h2; // @[IBuf.scala 102:71]
+  wire [1:0] nReady = full_insn ? _nReady_T_4 : 2'h0; // @[IBuf.scala 102:{56,65}]
+  wire [1:0] nICReady = nReady - _GEN_59; // @[IBuf.scala 42:25]
+  wire  _io_imem_ready_T = nReady >= _GEN_59; // @[IBuf.scala 44:47]
+  wire [1:0] _io_imem_ready_T_4 = nIC - nICReady; // @[IBuf.scala 44:92]
+  wire  _io_imem_ready_T_5 = 2'h1 >= _io_imem_ready_T_4; // @[IBuf.scala 44:85]
+  wire  _nBufValid_T_2 = _io_imem_ready_T | ~nBufValid; // @[package.scala 209:38]
+  wire [1:0] _nBufValid_T_4 = _GEN_59 - nReady; // @[IBuf.scala 48:65]
+  wire [1:0] _nBufValid_T_5 = _nBufValid_T_2 ? 2'h0 : _nBufValid_T_4; // @[IBuf.scala 48:23]
+  wire [1:0] shamt = _GEN_58 + nICReady; // @[IBuf.scala 55:32]
+  wire [63:0] buf_data_data = {io_imem_bits_data[31:16],io_imem_bits_data[31:16],io_imem_bits_data}; // @[Cat.scala 31:58]
+  wire [5:0] _buf_data_T = {shamt, 4'h0}; // @[IBuf.scala 128:19]
+  wire [63:0] _buf_data_T_1 = buf_data_data >> _buf_data_T; // @[IBuf.scala 128:10]
+  wire [31:0] _buf_pc_T_1 = io_imem_bits_pc & 32'hfffffffc; // @[IBuf.scala 59:35]
+  wire [2:0] _buf_pc_T_2 = {nICReady, 1'h0}; // @[IBuf.scala 59:80]
+  wire [31:0] _GEN_67 = {{29'd0}, _buf_pc_T_2}; // @[IBuf.scala 59:68]
+  wire [31:0] _buf_pc_T_4 = io_imem_bits_pc + _GEN_67; // @[IBuf.scala 59:68]
+  wire [31:0] _buf_pc_T_5 = _buf_pc_T_4 & 32'h3; // @[IBuf.scala 59:109]
+  wire [31:0] _buf_pc_T_6 = _buf_pc_T_1 | _buf_pc_T_5; // @[IBuf.scala 59:49]
+  wire [1:0] _GEN_0 = io_imem_valid & _io_imem_ready_T & nICReady < nIC & _io_imem_ready_T_5 ? _io_imem_ready_T_4 :
+    _nBufValid_T_5; // @[IBuf.scala 48:17 54:92 56:19]
+  wire [1:0] _GEN_24 = io_inst_0_ready ? _GEN_0 : {{1'd0}, nBufValid}; // @[IBuf.scala 47:29 34:47]
+  wire [1:0] _GEN_48 = io_kill ? 2'h0 : _GEN_24; // @[IBuf.scala 63:20 64:17]
+  wire [1:0] _icShiftAmt_T_1 = 2'h2 + _GEN_59; // @[IBuf.scala 68:32]
+  wire [1:0] icShiftAmt = _icShiftAmt_T_1 - _GEN_58; // @[IBuf.scala 68:44]
+  wire [63:0] _icData_T_2 = {io_imem_bits_data,io_imem_bits_data[15:0],io_imem_bits_data[15:0]}; // @[Cat.scala 31:58]
+  wire [127:0] icData_data = {_icData_T_2[63:48],_icData_T_2[63:48],_icData_T_2[63:48],_icData_T_2[63:48],
+    io_imem_bits_data,io_imem_bits_data[15:0],io_imem_bits_data[15:0]}; // @[Cat.scala 31:58]
+  wire [5:0] _icData_T_3 = {icShiftAmt, 4'h0}; // @[IBuf.scala 121:19]
+  wire [190:0] _GEN_1 = {{63'd0}, icData_data}; // @[IBuf.scala 121:10]
+  wire [190:0] _icData_T_4 = _GEN_1 << _icData_T_3; // @[IBuf.scala 121:10]
+  wire [31:0] icData = _icData_T_4[95:64]; // @[package.scala 154:13]
+  wire [4:0] _icMask_T_1 = {nBufValid, 4'h0}; // @[IBuf.scala 71:65]
+  wire [62:0] _icMask_T_2 = 63'hffffffff << _icMask_T_1; // @[IBuf.scala 71:51]
+  wire [31:0] icMask = _icMask_T_2[31:0]; // @[IBuf.scala 71:92]
+  wire [31:0] _inst_T = icData & icMask; // @[IBuf.scala 72:21]
+  wire [31:0] _inst_T_1 = ~icMask; // @[IBuf.scala 72:43]
+  wire [31:0] _inst_T_2 = buf__data & _inst_T_1; // @[IBuf.scala 72:41]
+  wire  xcpt_1_ae_inst = bufMask[1] ? buf__xcpt_ae_inst : io_imem_bits_xcpt_ae_inst; // @[IBuf.scala 76:53]
+  wire [1:0] _ic_replay_T = ~bufMask; // @[IBuf.scala 78:65]
+  wire [1:0] _ic_replay_T_1 = valid & _ic_replay_T; // @[IBuf.scala 78:63]
+  wire [1:0] _ic_replay_T_2 = io_imem_bits_replay ? _ic_replay_T_1 : 2'h0; // @[IBuf.scala 78:35]
+  wire [1:0] ic_replay = buf_replay | _ic_replay_T_2; // @[IBuf.scala 78:30]
+  wire [1:0] _replay_T_5 = {{1'd0}, ic_replay[1]}; // @[IBuf.scala 92:61]
+  wire [2:0] _io_inst_0_bits_xcpt1_T_4 = {2'h0,xcpt_1_ae_inst}; // @[IBuf.scala 96:63]
+  wire [2:0] _io_inst_0_bits_xcpt1_T_5 = exp_io_rvc ? 3'h0 : _io_inst_0_bits_xcpt1_T_4; // @[IBuf.scala 96:35]
+  wire [1:0] _T_21 = {{1'd0}, bufMask[1]}; // @[IBuf.scala 100:50]
+  RVCExpander exp ( // @[IBuf.scala 86:21]
+    .io_in(exp_io_in),
+    .io_out_bits(exp_io_out_bits),
+    .io_out_rd(exp_io_out_rd),
+    .io_out_rs1(exp_io_out_rs1),
+    .io_out_rs2(exp_io_out_rs2),
+    .io_rvc(exp_io_rvc)
+  );
+  assign io_imem_ready = io_inst_0_ready & nReady >= _GEN_59 & (nICReady >= nIC | 2'h1 >= _io_imem_ready_T_4); // @[IBuf.scala 44:60]
+  assign io_pc = nBufValid > 1'h0 ? buf__pc : io_imem_bits_pc; // @[IBuf.scala 82:15]
+  assign io_btb_resp_entry = bufMask[0] & exp_io_rvc | _T_21[0] ? ibufBTBResp_entry : io_imem_bits_btb_entry; // @[IBuf.scala 100:{57,71} 81:15]
+  assign io_btb_resp_bht_history = bufMask[0] & exp_io_rvc | _T_21[0] ? ibufBTBResp_bht_history :
+    io_imem_bits_btb_bht_history; // @[IBuf.scala 100:{57,71} 81:15]
+  assign io_inst_0_valid = valid[0] & full_insn; // @[IBuf.scala 94:36]
+  assign io_inst_0_bits_xcpt0_ae_inst = bufMask[0] ? buf__xcpt_ae_inst : io_imem_bits_xcpt_ae_inst; // @[IBuf.scala 76:53]
+  assign io_inst_0_bits_xcpt1_pf_inst = _io_inst_0_bits_xcpt1_T_5[2]; // @[IBuf.scala 96:79]
+  assign io_inst_0_bits_xcpt1_gf_inst = _io_inst_0_bits_xcpt1_T_5[1]; // @[IBuf.scala 96:79]
+  assign io_inst_0_bits_xcpt1_ae_inst = _io_inst_0_bits_xcpt1_T_5[0]; // @[IBuf.scala 96:79]
+  assign io_inst_0_bits_replay = ic_replay[0] | ~exp_io_rvc & _replay_T_5[0]; // @[IBuf.scala 92:33]
+  assign io_inst_0_bits_rvc = exp_io_rvc; // @[IBuf.scala 98:27]
+  assign io_inst_0_bits_inst_bits = exp_io_out_bits; // @[IBuf.scala 88:26]
+  assign io_inst_0_bits_inst_rd = exp_io_out_rd; // @[IBuf.scala 88:26]
+  assign io_inst_0_bits_inst_rs1 = exp_io_out_rs1; // @[IBuf.scala 88:26]
+  assign io_inst_0_bits_inst_rs2 = exp_io_out_rs2; // @[IBuf.scala 88:26]
+  assign io_inst_0_bits_raw = _inst_T | _inst_T_2; // @[IBuf.scala 72:30]
+  assign exp_io_in = _inst_T | _inst_T_2; // @[IBuf.scala 72:30]
+  always @(posedge clock) begin
+    if (reset) begin // @[IBuf.scala 34:47]
+      nBufValid <= 1'h0; // @[IBuf.scala 34:47]
+    end else begin
+      nBufValid <= _GEN_48[0];
+    end
+    if (io_inst_0_ready) begin // @[IBuf.scala 47:29]
+      if (io_imem_valid & _io_imem_ready_T & nICReady < nIC & _io_imem_ready_T_5) begin // @[IBuf.scala 54:92]
+        buf__pc <= _buf_pc_T_6; // @[IBuf.scala 59:16]
+      end
+    end
+    if (io_inst_0_ready) begin // @[IBuf.scala 47:29]
+      if (io_imem_valid & _io_imem_ready_T & nICReady < nIC & _io_imem_ready_T_5) begin // @[IBuf.scala 54:92]
+        buf__data <= {{16'd0}, _buf_data_T_1[15:0]}; // @[IBuf.scala 58:18]
+      end
+    end
+    if (io_inst_0_ready) begin // @[IBuf.scala 47:29]
+      if (io_imem_valid & _io_imem_ready_T & nICReady < nIC & _io_imem_ready_T_5) begin // @[IBuf.scala 54:92]
+        buf__xcpt_ae_inst <= io_imem_bits_xcpt_ae_inst; // @[IBuf.scala 57:13]
+      end
+    end
+    if (io_inst_0_ready) begin // @[IBuf.scala 47:29]
+      if (io_imem_valid & _io_imem_ready_T & nICReady < nIC & _io_imem_ready_T_5) begin // @[IBuf.scala 54:92]
+        buf__replay <= io_imem_bits_replay; // @[IBuf.scala 57:13]
+      end
+    end
+    if (io_inst_0_ready) begin // @[IBuf.scala 47:29]
+      if (io_imem_valid & _io_imem_ready_T & nICReady < nIC & _io_imem_ready_T_5) begin // @[IBuf.scala 54:92]
+        ibufBTBResp_entry <= io_imem_bits_btb_entry; // @[IBuf.scala 60:21]
+      end
+    end
+    if (io_inst_0_ready) begin // @[IBuf.scala 47:29]
+      if (io_imem_valid & _io_imem_ready_T & nICReady < nIC & _io_imem_ready_T_5) begin // @[IBuf.scala 54:92]
+        ibufBTBResp_bht_history <= io_imem_bits_btb_bht_history; // @[IBuf.scala 60:21]
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~io_imem_valid | ~io_imem_bits_btb_taken | io_imem_bits_btb_bridx >= pcWordBits) & ~reset) begin
+          $fatal; // @[IBuf.scala 79:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~io_imem_valid | ~io_imem_bits_btb_taken | io_imem_bits_btb_bridx >= pcWordBits)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at IBuf.scala:79 assert(!io.imem.valid || !io.imem.bits.btb.taken || io.imem.bits.btb.bridx >= pcWordBits)\n"
+            ); // @[IBuf.scala 79:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  nBufValid = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  buf__pc = _RAND_1[31:0];
+  _RAND_2 = {1{`RANDOM}};
+  buf__data = _RAND_2[31:0];
+  _RAND_3 = {1{`RANDOM}};
+  buf__xcpt_ae_inst = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  buf__replay = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  ibufBTBResp_entry = _RAND_5[4:0];
+  _RAND_6 = {1{`RANDOM}};
+  ibufBTBResp_bht_history = _RAND_6[7:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module CSRFile(
+  input         clock,
+  input         reset,
+  input         io_ungated_clock,
+  input         io_interrupts_debug,
+  input         io_interrupts_mtip,
+  input         io_interrupts_msip,
+  input         io_interrupts_meip,
+  input         io_interrupts_seip,
+  input         io_hartid,
+  input  [11:0] io_rw_addr,
+  input  [2:0]  io_rw_cmd,
+  output [31:0] io_rw_rdata,
+  input  [31:0] io_rw_wdata,
+  input  [31:0] io_decode_0_inst,
+  output        io_decode_0_fp_illegal,
+  output        io_decode_0_fp_csr,
+  output        io_decode_0_read_illegal,
+  output        io_decode_0_write_illegal,
+  output        io_decode_0_write_flush,
+  output        io_decode_0_system_illegal,
+  output        io_csr_stall,
+  output        io_eret,
+  output        io_singleStep,
+  output        io_status_debug,
+  output        io_status_cease,
+  output        io_status_wfi,
+  output [31:0] io_status_isa,
+  output [1:0]  io_status_dprv,
+  output        io_status_dv,
+  output [1:0]  io_status_prv,
+  output        io_status_v,
+  output        io_status_sd,
+  output [22:0] io_status_zero2,
+  output        io_status_mpv,
+  output        io_status_gva,
+  output        io_status_mbe,
+  output        io_status_sbe,
+  output [1:0]  io_status_sxl,
+  output [1:0]  io_status_uxl,
+  output        io_status_sd_rv32,
+  output [7:0]  io_status_zero1,
+  output        io_status_tsr,
+  output        io_status_tw,
+  output        io_status_tvm,
+  output        io_status_mxr,
+  output        io_status_sum,
+  output        io_status_mprv,
+  output [1:0]  io_status_xs,
+  output [1:0]  io_status_fs,
+  output [1:0]  io_status_mpp,
+  output [1:0]  io_status_vs,
+  output        io_status_spp,
+  output        io_status_mpie,
+  output        io_status_ube,
+  output        io_status_spie,
+  output        io_status_upie,
+  output        io_status_mie,
+  output        io_status_hie,
+  output        io_status_sie,
+  output        io_status_uie,
+  output [31:0] io_evec,
+  input         io_exception,
+  input         io_retire,
+  input  [31:0] io_cause,
+  input  [31:0] io_pc,
+  input  [31:0] io_tval,
+  input         io_gva,
+  output [31:0] io_time,
+  output        io_interrupt,
+  output [31:0] io_interrupt_cause,
+  output        io_bp_0_control_action,
+  output        io_bp_0_control_chain,
+  output [1:0]  io_bp_0_control_tmatch,
+  output        io_bp_0_control_m,
+  output        io_bp_0_control_s,
+  output        io_bp_0_control_u,
+  output        io_bp_0_control_x,
+  output        io_bp_0_control_w,
+  output        io_bp_0_control_r,
+  output [31:0] io_bp_0_address,
+  output        io_bp_1_control_action,
+  output [1:0]  io_bp_1_control_tmatch,
+  output        io_bp_1_control_m,
+  output        io_bp_1_control_s,
+  output        io_bp_1_control_u,
+  output        io_bp_1_control_x,
+  output        io_bp_1_control_w,
+  output        io_bp_1_control_r,
+  output [31:0] io_bp_1_address,
+  output        io_pmp_0_cfg_l,
+  output [1:0]  io_pmp_0_cfg_a,
+  output        io_pmp_0_cfg_x,
+  output        io_pmp_0_cfg_w,
+  output        io_pmp_0_cfg_r,
+  output [28:0] io_pmp_0_addr,
+  output [30:0] io_pmp_0_mask,
+  output        io_pmp_1_cfg_l,
+  output [1:0]  io_pmp_1_cfg_a,
+  output        io_pmp_1_cfg_x,
+  output        io_pmp_1_cfg_w,
+  output        io_pmp_1_cfg_r,
+  output [28:0] io_pmp_1_addr,
+  output [30:0] io_pmp_1_mask,
+  output        io_pmp_2_cfg_l,
+  output [1:0]  io_pmp_2_cfg_a,
+  output        io_pmp_2_cfg_x,
+  output        io_pmp_2_cfg_w,
+  output        io_pmp_2_cfg_r,
+  output [28:0] io_pmp_2_addr,
+  output [30:0] io_pmp_2_mask,
+  output        io_pmp_3_cfg_l,
+  output [1:0]  io_pmp_3_cfg_a,
+  output        io_pmp_3_cfg_x,
+  output        io_pmp_3_cfg_w,
+  output        io_pmp_3_cfg_r,
+  output [28:0] io_pmp_3_addr,
+  output [30:0] io_pmp_3_mask,
+  output        io_pmp_4_cfg_l,
+  output [1:0]  io_pmp_4_cfg_a,
+  output        io_pmp_4_cfg_x,
+  output        io_pmp_4_cfg_w,
+  output        io_pmp_4_cfg_r,
+  output [28:0] io_pmp_4_addr,
+  output [30:0] io_pmp_4_mask,
+  output        io_pmp_5_cfg_l,
+  output [1:0]  io_pmp_5_cfg_a,
+  output        io_pmp_5_cfg_x,
+  output        io_pmp_5_cfg_w,
+  output        io_pmp_5_cfg_r,
+  output [28:0] io_pmp_5_addr,
+  output [30:0] io_pmp_5_mask,
+  output        io_pmp_6_cfg_l,
+  output [1:0]  io_pmp_6_cfg_a,
+  output        io_pmp_6_cfg_x,
+  output        io_pmp_6_cfg_w,
+  output        io_pmp_6_cfg_r,
+  output [28:0] io_pmp_6_addr,
+  output [30:0] io_pmp_6_mask,
+  output        io_pmp_7_cfg_l,
+  output [1:0]  io_pmp_7_cfg_a,
+  output        io_pmp_7_cfg_x,
+  output        io_pmp_7_cfg_w,
+  output        io_pmp_7_cfg_r,
+  output [28:0] io_pmp_7_addr,
+  output [30:0] io_pmp_7_mask,
+  output        io_inhibit_cycle,
+  input  [31:0] io_inst_0,
+  output        io_trace_0_valid,
+  output [31:0] io_trace_0_iaddr,
+  output [31:0] io_trace_0_insn,
+  output        io_trace_0_exception,
+  output [31:0] io_customCSRs_0_value
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+  reg [31:0] _RAND_47;
+  reg [31:0] _RAND_48;
+  reg [31:0] _RAND_49;
+  reg [31:0] _RAND_50;
+  reg [31:0] _RAND_51;
+  reg [31:0] _RAND_52;
+  reg [31:0] _RAND_53;
+  reg [31:0] _RAND_54;
+  reg [31:0] _RAND_55;
+  reg [31:0] _RAND_56;
+  reg [31:0] _RAND_57;
+  reg [31:0] _RAND_58;
+  reg [31:0] _RAND_59;
+  reg [31:0] _RAND_60;
+  reg [31:0] _RAND_61;
+  reg [31:0] _RAND_62;
+  reg [31:0] _RAND_63;
+  reg [31:0] _RAND_64;
+  reg [31:0] _RAND_65;
+  reg [31:0] _RAND_66;
+  reg [31:0] _RAND_67;
+  reg [31:0] _RAND_68;
+  reg [31:0] _RAND_69;
+  reg [31:0] _RAND_70;
+  reg [31:0] _RAND_71;
+  reg [31:0] _RAND_72;
+  reg [31:0] _RAND_73;
+  reg [31:0] _RAND_74;
+  reg [31:0] _RAND_75;
+  reg [31:0] _RAND_76;
+  reg [31:0] _RAND_77;
+  reg [31:0] _RAND_78;
+  reg [31:0] _RAND_79;
+  reg [31:0] _RAND_80;
+  reg [31:0] _RAND_81;
+  reg [31:0] _RAND_82;
+  reg [31:0] _RAND_83;
+  reg [31:0] _RAND_84;
+  reg [31:0] _RAND_85;
+  reg [31:0] _RAND_86;
+  reg [31:0] _RAND_87;
+  reg [31:0] _RAND_88;
+  reg [31:0] _RAND_89;
+  reg [31:0] _RAND_90;
+  reg [31:0] _RAND_91;
+  reg [31:0] _RAND_92;
+  reg [31:0] _RAND_93;
+  reg [31:0] _RAND_94;
+  reg [31:0] _RAND_95;
+  reg [31:0] _RAND_96;
+  reg [31:0] _RAND_97;
+  reg [31:0] _RAND_98;
+  reg [31:0] _RAND_99;
+  reg [31:0] _RAND_100;
+  reg [31:0] _RAND_101;
+  reg [31:0] _RAND_102;
+  reg [31:0] _RAND_103;
+  reg [31:0] _RAND_104;
+  reg [31:0] _RAND_105;
+  reg [31:0] _RAND_106;
+  reg [31:0] _RAND_107;
+  reg [31:0] _RAND_108;
+  reg [31:0] _RAND_109;
+  reg [31:0] _RAND_110;
+  reg [31:0] _RAND_111;
+  reg [31:0] _RAND_112;
+  reg [63:0] _RAND_113;
+  reg [31:0] _RAND_114;
+  reg [63:0] _RAND_115;
+  reg [31:0] _RAND_116;
+  reg [31:0] _RAND_117;
+  reg [31:0] _RAND_118;
+`endif // RANDOMIZE_REG_INIT
+  reg [1:0] reg_mstatus_prv; // @[CSR.scala 369:24]
+  reg  reg_mstatus_gva; // @[CSR.scala 369:24]
+  reg  reg_mstatus_tsr; // @[CSR.scala 369:24]
+  reg  reg_mstatus_tw; // @[CSR.scala 369:24]
+  reg  reg_mstatus_mprv; // @[CSR.scala 369:24]
+  reg [1:0] reg_mstatus_fs; // @[CSR.scala 369:24]
+  reg [1:0] reg_mstatus_mpp; // @[CSR.scala 369:24]
+  reg  reg_mstatus_spp; // @[CSR.scala 369:24]
+  reg  reg_mstatus_mpie; // @[CSR.scala 369:24]
+  reg  reg_mstatus_spie; // @[CSR.scala 369:24]
+  reg  reg_mstatus_mie; // @[CSR.scala 369:24]
+  reg  reg_mstatus_sie; // @[CSR.scala 369:24]
+  wire  system_insn = io_rw_cmd == 3'h4; // @[CSR.scala 813:31]
+  wire [31:0] _T_327 = {io_rw_addr, 20'h0}; // @[CSR.scala 829:28]
+  wire [31:0] _T_334 = _T_327 & 32'h10400000; // @[Decode.scala 14:65]
+  wire  _T_335 = _T_334 == 32'h10000000; // @[Decode.scala 14:121]
+  wire  insn_ret = system_insn & _T_335; // @[CSR.scala 829:95]
+  reg [1:0] reg_dcsr_prv; // @[CSR.scala 377:21]
+  wire [1:0] _GEN_236 = io_rw_addr[10] & io_rw_addr[7] ? reg_dcsr_prv : reg_mstatus_mpp; // @[CSR.scala 1064:70 1065:15]
+  wire [1:0] ret_prv = ~io_rw_addr[9] ? {{1'd0}, reg_mstatus_spp} : _GEN_236; // @[CSR.scala 1047:52]
+  wire [31:0] _T_328 = _T_327 & 32'h10100000; // @[Decode.scala 14:65]
+  wire  _T_329 = _T_328 == 32'h0; // @[Decode.scala 14:121]
+  wire  insn_call = system_insn & _T_329; // @[CSR.scala 829:95]
+  wire  _T_332 = _T_328 == 32'h100000; // @[Decode.scala 14:121]
+  wire  insn_break = system_insn & _T_332; // @[CSR.scala 829:95]
+  wire  _exception_T = insn_call | insn_break; // @[CSR.scala 953:29]
+  wire  exception = insn_call | insn_break | io_exception; // @[CSR.scala 953:43]
+  reg  reg_singleStepped; // @[CSR.scala 453:30]
+  wire [3:0] _GEN_34 = {{2'd0}, reg_mstatus_prv}; // @[CSR.scala 893:38]
+  wire [3:0] _cause_T_4 = 4'h8 + _GEN_34; // @[CSR.scala 893:38]
+  wire [31:0] _cause_T_5 = insn_break ? 32'h3 : io_cause; // @[CSR.scala 894:14]
+  wire [31:0] cause = insn_call ? {{28'd0}, _cause_T_4} : _cause_T_5; // @[CSR.scala 893:8]
+  wire [7:0] cause_lsbs = cause[7:0]; // @[CSR.scala 895:25]
+  wire  _causeIsDebugInt_T_1 = cause_lsbs == 8'he; // @[CSR.scala 896:53]
+  wire  causeIsDebugInt = cause[31] & cause_lsbs == 8'he; // @[CSR.scala 896:39]
+  wire  _causeIsDebugTrigger_T_1 = ~cause[31]; // @[CSR.scala 897:29]
+  wire  causeIsDebugTrigger = ~cause[31] & _causeIsDebugInt_T_1; // @[CSR.scala 897:44]
+  reg  reg_dcsr_ebreakm; // @[CSR.scala 377:21]
+  reg  reg_dcsr_ebreaks; // @[CSR.scala 377:21]
+  reg  reg_dcsr_ebreaku; // @[CSR.scala 377:21]
+  wire [3:0] _causeIsDebugBreak_T_3 = {reg_dcsr_ebreakm,1'h0,reg_dcsr_ebreaks,reg_dcsr_ebreaku}; // @[Cat.scala 31:58]
+  wire [3:0] _causeIsDebugBreak_T_4 = _causeIsDebugBreak_T_3 >> reg_mstatus_prv; // @[CSR.scala 898:134]
+  wire  causeIsDebugBreak = _causeIsDebugTrigger_T_1 & insn_break & _causeIsDebugBreak_T_4[0]; // @[CSR.scala 898:56]
+  reg  reg_debug; // @[CSR.scala 449:22]
+  wire  trapToDebug = reg_singleStepped | causeIsDebugInt | causeIsDebugTrigger | causeIsDebugBreak | reg_debug; // @[CSR.scala 899:123]
+  wire  _T_401 = ~reg_debug; // @[CSR.scala 969:13]
+  wire [1:0] _GEN_56 = ~reg_debug ? 2'h3 : reg_mstatus_prv; // @[CSR.scala 969:25 976:17]
+  wire  _delegate_T = reg_mstatus_prv <= 2'h1; // @[CSR.scala 903:59]
+  reg [31:0] reg_mideleg; // @[CSR.scala 464:18]
+  wire [31:0] read_mideleg = reg_mideleg & 32'h222; // @[CSR.scala 465:36]
+  wire [31:0] _delegate_T_3 = read_mideleg >> cause_lsbs; // @[CSR.scala 903:102]
+  reg [31:0] reg_medeleg; // @[CSR.scala 468:18]
+  wire [31:0] read_medeleg = reg_medeleg & 32'hf0b55d; // @[CSR.scala 469:36]
+  wire [31:0] _delegate_T_5 = read_medeleg >> cause_lsbs; // @[CSR.scala 903:128]
+  wire  _delegate_T_7 = cause[31] ? _delegate_T_3[0] : _delegate_T_5[0]; // @[CSR.scala 903:74]
+  wire  delegate = reg_mstatus_prv <= 2'h1 & _delegate_T_7; // @[CSR.scala 903:68]
+  wire [1:0] _GEN_75 = delegate ? 2'h1 : 2'h3; // @[CSR.scala 1009:15 1021:15 997:35]
+  wire [1:0] _GEN_150 = trapToDebug ? _GEN_56 : _GEN_75; // @[CSR.scala 968:24]
+  wire [1:0] _GEN_187 = exception ? _GEN_150 : reg_mstatus_prv; // @[CSR.scala 967:20]
+  wire [1:0] new_prv = insn_ret ? ret_prv : _GEN_187; // @[CSR.scala 1045:19 1084:13]
+  reg [2:0] reg_dcsr_cause; // @[CSR.scala 377:21]
+  reg  reg_dcsr_step; // @[CSR.scala 377:21]
+  reg [31:0] reg_dpc; // @[CSR.scala 450:20]
+  reg [31:0] reg_dscratch; // @[CSR.scala 451:25]
+  reg  reg_tselect; // @[CSR.scala 458:24]
+  reg  reg_bp_0_control_dmode; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_action; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_chain; // @[CSR.scala 459:19]
+  reg [1:0] reg_bp_0_control_tmatch; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_m; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_s; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_u; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_x; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_w; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_r; // @[CSR.scala 459:19]
+  reg [31:0] reg_bp_0_address; // @[CSR.scala 459:19]
+  reg  reg_bp_1_control_dmode; // @[CSR.scala 459:19]
+  reg  reg_bp_1_control_action; // @[CSR.scala 459:19]
+  reg [1:0] reg_bp_1_control_tmatch; // @[CSR.scala 459:19]
+  reg  reg_bp_1_control_m; // @[CSR.scala 459:19]
+  reg  reg_bp_1_control_s; // @[CSR.scala 459:19]
+  reg  reg_bp_1_control_u; // @[CSR.scala 459:19]
+  reg  reg_bp_1_control_x; // @[CSR.scala 459:19]
+  reg  reg_bp_1_control_w; // @[CSR.scala 459:19]
+  reg  reg_bp_1_control_r; // @[CSR.scala 459:19]
+  reg [31:0] reg_bp_1_address; // @[CSR.scala 459:19]
+  reg  reg_pmp_0_cfg_l; // @[CSR.scala 460:20]
+  reg [1:0] reg_pmp_0_cfg_a; // @[CSR.scala 460:20]
+  reg  reg_pmp_0_cfg_x; // @[CSR.scala 460:20]
+  reg  reg_pmp_0_cfg_w; // @[CSR.scala 460:20]
+  reg  reg_pmp_0_cfg_r; // @[CSR.scala 460:20]
+  reg [28:0] reg_pmp_0_addr; // @[CSR.scala 460:20]
+  reg  reg_pmp_1_cfg_l; // @[CSR.scala 460:20]
+  reg [1:0] reg_pmp_1_cfg_a; // @[CSR.scala 460:20]
+  reg  reg_pmp_1_cfg_x; // @[CSR.scala 460:20]
+  reg  reg_pmp_1_cfg_w; // @[CSR.scala 460:20]
+  reg  reg_pmp_1_cfg_r; // @[CSR.scala 460:20]
+  reg [28:0] reg_pmp_1_addr; // @[CSR.scala 460:20]
+  reg  reg_pmp_2_cfg_l; // @[CSR.scala 460:20]
+  reg [1:0] reg_pmp_2_cfg_a; // @[CSR.scala 460:20]
+  reg  reg_pmp_2_cfg_x; // @[CSR.scala 460:20]
+  reg  reg_pmp_2_cfg_w; // @[CSR.scala 460:20]
+  reg  reg_pmp_2_cfg_r; // @[CSR.scala 460:20]
+  reg [28:0] reg_pmp_2_addr; // @[CSR.scala 460:20]
+  reg  reg_pmp_3_cfg_l; // @[CSR.scala 460:20]
+  reg [1:0] reg_pmp_3_cfg_a; // @[CSR.scala 460:20]
+  reg  reg_pmp_3_cfg_x; // @[CSR.scala 460:20]
+  reg  reg_pmp_3_cfg_w; // @[CSR.scala 460:20]
+  reg  reg_pmp_3_cfg_r; // @[CSR.scala 460:20]
+  reg [28:0] reg_pmp_3_addr; // @[CSR.scala 460:20]
+  reg  reg_pmp_4_cfg_l; // @[CSR.scala 460:20]
+  reg [1:0] reg_pmp_4_cfg_a; // @[CSR.scala 460:20]
+  reg  reg_pmp_4_cfg_x; // @[CSR.scala 460:20]
+  reg  reg_pmp_4_cfg_w; // @[CSR.scala 460:20]
+  reg  reg_pmp_4_cfg_r; // @[CSR.scala 460:20]
+  reg [28:0] reg_pmp_4_addr; // @[CSR.scala 460:20]
+  reg  reg_pmp_5_cfg_l; // @[CSR.scala 460:20]
+  reg [1:0] reg_pmp_5_cfg_a; // @[CSR.scala 460:20]
+  reg  reg_pmp_5_cfg_x; // @[CSR.scala 460:20]
+  reg  reg_pmp_5_cfg_w; // @[CSR.scala 460:20]
+  reg  reg_pmp_5_cfg_r; // @[CSR.scala 460:20]
+  reg [28:0] reg_pmp_5_addr; // @[CSR.scala 460:20]
+  reg  reg_pmp_6_cfg_l; // @[CSR.scala 460:20]
+  reg [1:0] reg_pmp_6_cfg_a; // @[CSR.scala 460:20]
+  reg  reg_pmp_6_cfg_x; // @[CSR.scala 460:20]
+  reg  reg_pmp_6_cfg_w; // @[CSR.scala 460:20]
+  reg  reg_pmp_6_cfg_r; // @[CSR.scala 460:20]
+  reg [28:0] reg_pmp_6_addr; // @[CSR.scala 460:20]
+  reg  reg_pmp_7_cfg_l; // @[CSR.scala 460:20]
+  reg [1:0] reg_pmp_7_cfg_a; // @[CSR.scala 460:20]
+  reg  reg_pmp_7_cfg_x; // @[CSR.scala 460:20]
+  reg  reg_pmp_7_cfg_w; // @[CSR.scala 460:20]
+  reg  reg_pmp_7_cfg_r; // @[CSR.scala 460:20]
+  reg [28:0] reg_pmp_7_addr; // @[CSR.scala 460:20]
+  reg [31:0] reg_mie; // @[CSR.scala 462:20]
+  reg  reg_mip_seip; // @[CSR.scala 471:20]
+  reg  reg_mip_stip; // @[CSR.scala 471:20]
+  reg  reg_mip_ssip; // @[CSR.scala 471:20]
+  reg [31:0] reg_mepc; // @[CSR.scala 472:21]
+  reg [31:0] reg_mcause; // @[CSR.scala 473:27]
+  reg [31:0] reg_mtval; // @[CSR.scala 474:22]
+  reg [31:0] reg_mscratch; // @[CSR.scala 476:25]
+  reg [30:0] reg_mtvec; // @[CSR.scala 479:27]
+  reg [31:0] reg_mcounteren; // @[CSR.scala 494:18]
+  wire [31:0] read_mcounteren = reg_mcounteren & 32'h7; // @[CSR.scala 495:30]
+  reg [31:0] reg_scounteren; // @[CSR.scala 498:18]
+  wire [31:0] read_scounteren = reg_scounteren & 32'h7; // @[CSR.scala 499:36]
+  wire [15:0] _read_hvip_T = {4'h0,2'h0,reg_mip_seip,1'h0,2'h0,reg_mip_stip,1'h0,2'h0,reg_mip_ssip,1'h0}; // @[CSR.scala 518:27]
+  reg [31:0] reg_sepc; // @[CSR.scala 532:21]
+  reg [31:0] reg_scause; // @[CSR.scala 533:23]
+  reg [31:0] reg_stval; // @[CSR.scala 534:22]
+  reg [31:0] reg_sscratch; // @[CSR.scala 535:25]
+  reg [31:0] reg_stvec; // @[CSR.scala 536:22]
+  reg  reg_wfi; // @[CSR.scala 538:50]
+  reg [2:0] reg_mcountinhibit; // @[CSR.scala 547:34]
+  wire  x79 = reg_mcountinhibit[2]; // @[CSR.scala 549:75]
+  reg [5:0] small_; // @[Counters.scala 45:37]
+  wire [5:0] _GEN_35 = {{5'd0}, io_retire}; // @[Counters.scala 46:33]
+  wire [6:0] nextSmall = small_ + _GEN_35; // @[Counters.scala 46:33]
+  wire  _T_14 = ~x79; // @[Counters.scala 47:9]
+  wire [6:0] _GEN_0 = ~x79 ? nextSmall : {{1'd0}, small_}; // @[Counters.scala 47:{19,27} 45:37]
+  reg [57:0] large_; // @[Counters.scala 50:27]
+  wire [57:0] _large_r_T_1 = large_ + 58'h1; // @[Counters.scala 51:55]
+  wire [57:0] _GEN_1 = nextSmall[6] & _T_14 ? _large_r_T_1 : large_; // @[Counters.scala 50:27 51:{46,50}]
+  wire [63:0] value = {large_,small_}; // @[Cat.scala 31:58]
+  wire  x86 = ~io_csr_stall; // @[CSR.scala 551:56]
+  reg [5:0] small_1; // @[Counters.scala 45:37]
+  wire [5:0] _GEN_40 = {{5'd0}, x86}; // @[Counters.scala 46:33]
+  wire [6:0] nextSmall_1 = small_1 + _GEN_40; // @[Counters.scala 46:33]
+  wire  _T_15 = ~reg_mcountinhibit[0]; // @[Counters.scala 47:9]
+  wire [6:0] _GEN_2 = ~reg_mcountinhibit[0] ? nextSmall_1 : {{1'd0}, small_1}; // @[Counters.scala 47:{19,27} 45:37]
+  reg [57:0] large_1; // @[Counters.scala 50:27]
+  wire [57:0] _large_r_T_3 = large_1 + 58'h1; // @[Counters.scala 51:55]
+  wire [57:0] _GEN_3 = nextSmall_1[6] & _T_15 ? _large_r_T_3 : large_1; // @[Counters.scala 50:27 51:{46,50}]
+  wire [63:0] value_1 = {large_1,small_1}; // @[Cat.scala 31:58]
+  wire  mip_seip = reg_mip_seip | io_interrupts_seip; // @[CSR.scala 563:57]
+  wire [7:0] read_mip_lo = {io_interrupts_mtip,1'h0,reg_mip_stip,1'h0,io_interrupts_msip,1'h0,reg_mip_ssip,1'h0}; // @[CSR.scala 567:22]
+  wire [15:0] _read_mip_T = {4'h0,io_interrupts_meip,1'h0,mip_seip,1'h0,read_mip_lo}; // @[CSR.scala 567:22]
+  wire [15:0] read_mip = _read_mip_T & 16'haaa; // @[CSR.scala 567:29]
+  wire [31:0] _GEN_41 = {{16'd0}, read_mip}; // @[CSR.scala 571:56]
+  wire [31:0] pending_interrupts = _GEN_41 & reg_mie; // @[CSR.scala 571:56]
+  wire [14:0] d_interrupts = {io_interrupts_debug, 14'h0}; // @[CSR.scala 572:42]
+  wire [31:0] _m_interrupts_T_3 = ~pending_interrupts; // @[CSR.scala 577:83]
+  wire [31:0] _m_interrupts_T_4 = _m_interrupts_T_3 | read_mideleg; // @[CSR.scala 577:103]
+  wire [31:0] _m_interrupts_T_5 = ~_m_interrupts_T_4; // @[CSR.scala 577:81]
+  wire [31:0] m_interrupts = _delegate_T | reg_mstatus_mie ? _m_interrupts_T_5 : 32'h0; // @[CSR.scala 577:25]
+  wire [31:0] _s_interrupts_T_6 = pending_interrupts & read_mideleg; // @[CSR.scala 578:147]
+  wire [31:0] s_interrupts = reg_mstatus_prv < 2'h1 | reg_mstatus_prv == 2'h1 & reg_mstatus_sie ? _s_interrupts_T_6 : 32'h0
+    ; // @[CSR.scala 578:25]
+  wire  _any_T_78 = d_interrupts[14] | d_interrupts[13] | d_interrupts[12] | d_interrupts[11] | d_interrupts[3] |
+    d_interrupts[7] | d_interrupts[9] | d_interrupts[1] | d_interrupts[5] | d_interrupts[10] | d_interrupts[2] |
+    d_interrupts[6] | d_interrupts[8] | d_interrupts[0] | d_interrupts[4] | m_interrupts[15]; // @[CSR.scala 1534:90]
+  wire  _any_T_93 = _any_T_78 | m_interrupts[14] | m_interrupts[13] | m_interrupts[12] | m_interrupts[11] | m_interrupts
+    [3] | m_interrupts[7] | m_interrupts[9] | m_interrupts[1] | m_interrupts[5] | m_interrupts[10] | m_interrupts[2] |
+    m_interrupts[6] | m_interrupts[8] | m_interrupts[0] | m_interrupts[4]; // @[CSR.scala 1534:90]
+  wire  _any_T_108 = _any_T_93 | s_interrupts[15] | s_interrupts[14] | s_interrupts[13] | s_interrupts[12] |
+    s_interrupts[11] | s_interrupts[3] | s_interrupts[7] | s_interrupts[9] | s_interrupts[1] | s_interrupts[5] |
+    s_interrupts[10] | s_interrupts[2] | s_interrupts[6] | s_interrupts[8] | s_interrupts[0]; // @[CSR.scala 1534:90]
+  wire  anyInterrupt = _any_T_108 | s_interrupts[4]; // @[CSR.scala 1534:90]
+  wire [3:0] _which_T_79 = s_interrupts[0] ? 4'h0 : 4'h4; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_80 = s_interrupts[8] ? 4'h8 : _which_T_79; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_81 = s_interrupts[6] ? 4'h6 : _which_T_80; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_82 = s_interrupts[2] ? 4'h2 : _which_T_81; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_83 = s_interrupts[10] ? 4'ha : _which_T_82; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_84 = s_interrupts[5] ? 4'h5 : _which_T_83; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_85 = s_interrupts[1] ? 4'h1 : _which_T_84; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_86 = s_interrupts[9] ? 4'h9 : _which_T_85; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_87 = s_interrupts[7] ? 4'h7 : _which_T_86; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_88 = s_interrupts[3] ? 4'h3 : _which_T_87; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_89 = s_interrupts[11] ? 4'hb : _which_T_88; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_90 = s_interrupts[12] ? 4'hc : _which_T_89; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_91 = s_interrupts[13] ? 4'hd : _which_T_90; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_92 = s_interrupts[14] ? 4'he : _which_T_91; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_93 = s_interrupts[15] ? 4'hf : _which_T_92; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_94 = m_interrupts[4] ? 4'h4 : _which_T_93; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_95 = m_interrupts[0] ? 4'h0 : _which_T_94; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_96 = m_interrupts[8] ? 4'h8 : _which_T_95; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_97 = m_interrupts[6] ? 4'h6 : _which_T_96; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_98 = m_interrupts[2] ? 4'h2 : _which_T_97; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_99 = m_interrupts[10] ? 4'ha : _which_T_98; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_100 = m_interrupts[5] ? 4'h5 : _which_T_99; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_101 = m_interrupts[1] ? 4'h1 : _which_T_100; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_102 = m_interrupts[9] ? 4'h9 : _which_T_101; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_103 = m_interrupts[7] ? 4'h7 : _which_T_102; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_104 = m_interrupts[3] ? 4'h3 : _which_T_103; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_105 = m_interrupts[11] ? 4'hb : _which_T_104; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_106 = m_interrupts[12] ? 4'hc : _which_T_105; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_107 = m_interrupts[13] ? 4'hd : _which_T_106; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_108 = m_interrupts[14] ? 4'he : _which_T_107; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_109 = m_interrupts[15] ? 4'hf : _which_T_108; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_111 = d_interrupts[4] ? 4'h4 : _which_T_109; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_112 = d_interrupts[0] ? 4'h0 : _which_T_111; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_113 = d_interrupts[8] ? 4'h8 : _which_T_112; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_114 = d_interrupts[6] ? 4'h6 : _which_T_113; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_115 = d_interrupts[2] ? 4'h2 : _which_T_114; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_116 = d_interrupts[10] ? 4'ha : _which_T_115; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_117 = d_interrupts[5] ? 4'h5 : _which_T_116; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_118 = d_interrupts[1] ? 4'h1 : _which_T_117; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_119 = d_interrupts[9] ? 4'h9 : _which_T_118; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_120 = d_interrupts[7] ? 4'h7 : _which_T_119; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_121 = d_interrupts[3] ? 4'h3 : _which_T_120; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_122 = d_interrupts[11] ? 4'hb : _which_T_121; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_123 = d_interrupts[12] ? 4'hc : _which_T_122; // @[Mux.scala 47:70]
+  wire [3:0] _which_T_124 = d_interrupts[13] ? 4'hd : _which_T_123; // @[Mux.scala 47:70]
+  wire [3:0] whichInterrupt = d_interrupts[14] ? 4'he : _which_T_124; // @[Mux.scala 47:70]
+  wire [31:0] _GEN_639 = {{28'd0}, whichInterrupt}; // @[CSR.scala 582:67]
+  wire  _io_interrupt_T = ~io_singleStep; // @[CSR.scala 583:36]
+  wire [29:0] pmp_mask_base = {reg_pmp_0_addr,reg_pmp_0_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [29:0] _pmp_mask_T_1 = pmp_mask_base + 30'h1; // @[PMP.scala 59:23]
+  wire [29:0] _pmp_mask_T_2 = ~_pmp_mask_T_1; // @[PMP.scala 59:16]
+  wire [29:0] _pmp_mask_T_3 = pmp_mask_base & _pmp_mask_T_2; // @[PMP.scala 59:14]
+  wire [31:0] _pmp_mask_T_4 = {_pmp_mask_T_3,2'h3}; // @[Cat.scala 31:58]
+  wire [29:0] pmp_mask_base_1 = {reg_pmp_1_addr,reg_pmp_1_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [29:0] _pmp_mask_T_6 = pmp_mask_base_1 + 30'h1; // @[PMP.scala 59:23]
+  wire [29:0] _pmp_mask_T_7 = ~_pmp_mask_T_6; // @[PMP.scala 59:16]
+  wire [29:0] _pmp_mask_T_8 = pmp_mask_base_1 & _pmp_mask_T_7; // @[PMP.scala 59:14]
+  wire [31:0] _pmp_mask_T_9 = {_pmp_mask_T_8,2'h3}; // @[Cat.scala 31:58]
+  wire [29:0] pmp_mask_base_2 = {reg_pmp_2_addr,reg_pmp_2_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [29:0] _pmp_mask_T_11 = pmp_mask_base_2 + 30'h1; // @[PMP.scala 59:23]
+  wire [29:0] _pmp_mask_T_12 = ~_pmp_mask_T_11; // @[PMP.scala 59:16]
+  wire [29:0] _pmp_mask_T_13 = pmp_mask_base_2 & _pmp_mask_T_12; // @[PMP.scala 59:14]
+  wire [31:0] _pmp_mask_T_14 = {_pmp_mask_T_13,2'h3}; // @[Cat.scala 31:58]
+  wire [29:0] pmp_mask_base_3 = {reg_pmp_3_addr,reg_pmp_3_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [29:0] _pmp_mask_T_16 = pmp_mask_base_3 + 30'h1; // @[PMP.scala 59:23]
+  wire [29:0] _pmp_mask_T_17 = ~_pmp_mask_T_16; // @[PMP.scala 59:16]
+  wire [29:0] _pmp_mask_T_18 = pmp_mask_base_3 & _pmp_mask_T_17; // @[PMP.scala 59:14]
+  wire [31:0] _pmp_mask_T_19 = {_pmp_mask_T_18,2'h3}; // @[Cat.scala 31:58]
+  wire [29:0] pmp_mask_base_4 = {reg_pmp_4_addr,reg_pmp_4_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [29:0] _pmp_mask_T_21 = pmp_mask_base_4 + 30'h1; // @[PMP.scala 59:23]
+  wire [29:0] _pmp_mask_T_22 = ~_pmp_mask_T_21; // @[PMP.scala 59:16]
+  wire [29:0] _pmp_mask_T_23 = pmp_mask_base_4 & _pmp_mask_T_22; // @[PMP.scala 59:14]
+  wire [31:0] _pmp_mask_T_24 = {_pmp_mask_T_23,2'h3}; // @[Cat.scala 31:58]
+  wire [29:0] pmp_mask_base_5 = {reg_pmp_5_addr,reg_pmp_5_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [29:0] _pmp_mask_T_26 = pmp_mask_base_5 + 30'h1; // @[PMP.scala 59:23]
+  wire [29:0] _pmp_mask_T_27 = ~_pmp_mask_T_26; // @[PMP.scala 59:16]
+  wire [29:0] _pmp_mask_T_28 = pmp_mask_base_5 & _pmp_mask_T_27; // @[PMP.scala 59:14]
+  wire [31:0] _pmp_mask_T_29 = {_pmp_mask_T_28,2'h3}; // @[Cat.scala 31:58]
+  wire [29:0] pmp_mask_base_6 = {reg_pmp_6_addr,reg_pmp_6_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [29:0] _pmp_mask_T_31 = pmp_mask_base_6 + 30'h1; // @[PMP.scala 59:23]
+  wire [29:0] _pmp_mask_T_32 = ~_pmp_mask_T_31; // @[PMP.scala 59:16]
+  wire [29:0] _pmp_mask_T_33 = pmp_mask_base_6 & _pmp_mask_T_32; // @[PMP.scala 59:14]
+  wire [31:0] _pmp_mask_T_34 = {_pmp_mask_T_33,2'h3}; // @[Cat.scala 31:58]
+  wire [29:0] pmp_mask_base_7 = {reg_pmp_7_addr,reg_pmp_7_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [29:0] _pmp_mask_T_36 = pmp_mask_base_7 + 30'h1; // @[PMP.scala 59:23]
+  wire [29:0] _pmp_mask_T_37 = ~_pmp_mask_T_36; // @[PMP.scala 59:16]
+  wire [29:0] _pmp_mask_T_38 = pmp_mask_base_7 & _pmp_mask_T_37; // @[PMP.scala 59:14]
+  wire [31:0] _pmp_mask_T_39 = {_pmp_mask_T_38,2'h3}; // @[Cat.scala 31:58]
+  reg [31:0] reg_misa; // @[CSR.scala 605:21]
+  wire [8:0] read_mstatus_lo_lo = {io_status_spp,io_status_mpie,io_status_ube,io_status_spie,io_status_upie,
+    io_status_mie,io_status_hie,io_status_sie,io_status_uie}; // @[CSR.scala 606:38]
+  wire [21:0] read_mstatus_lo = {io_status_tw,io_status_tvm,io_status_mxr,io_status_sum,io_status_mprv,io_status_xs,
+    io_status_fs,io_status_mpp,io_status_vs,read_mstatus_lo_lo}; // @[CSR.scala 606:38]
+  wire [64:0] read_mstatus_hi_hi = {io_status_debug,io_status_cease,io_status_wfi,io_status_isa,io_status_dprv,
+    io_status_dv,io_status_prv,io_status_v,io_status_sd,io_status_zero2}; // @[CSR.scala 606:38]
+  wire [82:0] read_mstatus_hi = {read_mstatus_hi_hi,io_status_mpv,io_status_gva,io_status_mbe,io_status_sbe,
+    io_status_sxl,io_status_uxl,io_status_sd_rv32,io_status_zero1,io_status_tsr}; // @[CSR.scala 606:38]
+  wire [104:0] _read_mstatus_T = {read_mstatus_hi,read_mstatus_lo}; // @[CSR.scala 606:38]
+  wire [31:0] read_mstatus = _read_mstatus_T[31:0]; // @[CSR.scala 606:40]
+  wire [6:0] _read_mtvec_T_1 = reg_mtvec[0] ? 7'h7e : 7'h2; // @[CSR.scala 1563:39]
+  wire [30:0] _read_mtvec_T_3 = {{24'd0}, _read_mtvec_T_1}; // @[package.scala 165:41]
+  wire [30:0] _read_mtvec_T_4 = ~_read_mtvec_T_3; // @[package.scala 165:37]
+  wire [30:0] _read_mtvec_T_5 = reg_mtvec & _read_mtvec_T_4; // @[package.scala 165:35]
+  wire [31:0] read_mtvec = {1'h0,_read_mtvec_T_5}; // @[Cat.scala 31:58]
+  wire [6:0] _read_stvec_T_1 = reg_stvec[0] ? 7'h7e : 7'h2; // @[CSR.scala 1563:39]
+  wire [31:0] _read_stvec_T_3 = {{25'd0}, _read_stvec_T_1}; // @[package.scala 165:41]
+  wire [31:0] _read_stvec_T_4 = ~_read_stvec_T_3; // @[package.scala 165:37]
+  wire [31:0] read_stvec = reg_stvec & _read_stvec_T_4; // @[package.scala 165:35]
+  wire  _GEN_5 = reg_tselect ? reg_bp_1_control_x : reg_bp_0_control_x; // @[CSR.scala 612:{48,48}]
+  wire  _GEN_7 = reg_tselect ? reg_bp_1_control_w : reg_bp_0_control_w; // @[CSR.scala 612:{48,48}]
+  wire  _GEN_9 = reg_tselect ? reg_bp_1_control_r : reg_bp_0_control_r; // @[CSR.scala 612:{48,48}]
+  wire  _GEN_11 = reg_tselect ? reg_bp_1_control_s : reg_bp_0_control_s; // @[CSR.scala 612:{48,48}]
+  wire  _GEN_13 = reg_tselect ? reg_bp_1_control_u : reg_bp_0_control_u; // @[CSR.scala 612:{48,48}]
+  wire  _GEN_15 = reg_tselect ? reg_bp_1_control_m : reg_bp_0_control_m; // @[CSR.scala 612:{48,48}]
+  wire [6:0] lo_4 = {_GEN_15,1'h0,_GEN_11,_GEN_13,_GEN_5,_GEN_7,_GEN_9}; // @[CSR.scala 612:48]
+  wire [1:0] _GEN_21 = reg_tselect ? reg_bp_1_control_tmatch : reg_bp_0_control_tmatch; // @[CSR.scala 612:{48,48}]
+  wire  _GEN_23 = reg_tselect ? reg_bp_1_control_action : reg_bp_0_control_action; // @[CSR.scala 612:{48,48}]
+  wire  _GEN_25 = reg_tselect ? 1'h0 : reg_bp_0_control_chain; // @[CSR.scala 612:{48,48}]
+  wire  _GEN_33 = reg_tselect ? reg_bp_1_control_dmode : reg_bp_0_control_dmode; // @[CSR.scala 612:{48,48}]
+  wire [31:0] _T_16 = {4'h2,_GEN_33,14'h400,_GEN_23,_GEN_25,2'h0,_GEN_21,lo_4}; // @[CSR.scala 612:48]
+  wire [31:0] _T_18 = ~reg_mepc; // @[CSR.scala 1562:28]
+  wire [1:0] _T_20 = reg_misa[2] ? 2'h1 : 2'h3; // @[CSR.scala 1562:36]
+  wire [31:0] _GEN_640 = {{30'd0}, _T_20}; // @[CSR.scala 1562:31]
+  wire [31:0] _T_21 = _T_18 | _GEN_640; // @[CSR.scala 1562:31]
+  wire [31:0] _T_22 = ~_T_21; // @[CSR.scala 1562:26]
+  wire [10:0] lo_6 = {2'h0,reg_dcsr_cause,1'h0,2'h0,reg_dcsr_step,reg_dcsr_prv}; // @[CSR.scala 627:27]
+  wire [31:0] _T_23 = {4'h4,12'h0,reg_dcsr_ebreakm,1'h0,reg_dcsr_ebreaks,reg_dcsr_ebreaku,1'h0,lo_6}; // @[CSR.scala 627:27]
+  wire [31:0] _T_24 = ~reg_dpc; // @[CSR.scala 1562:28]
+  wire [31:0] _T_27 = _T_24 | _GEN_640; // @[CSR.scala 1562:31]
+  wire [31:0] _T_28 = ~_T_27; // @[CSR.scala 1562:26]
+  wire [31:0] sie_mask = read_mideleg & 32'hefff; // @[CSR.scala 703:18]
+  wire [31:0] read_sie = reg_mie & sie_mask; // @[CSR.scala 706:28]
+  wire [31:0] read_sip = _GEN_41 & sie_mask; // @[CSR.scala 707:29]
+  wire [8:0] lo_lo_6 = {io_status_spp,1'h0,1'h0,io_status_spie,1'h0,2'h0,io_status_sie,1'h0}; // @[CSR.scala 721:57]
+  wire [21:0] lo_7 = {2'h0,io_status_mxr,io_status_sum,1'h0,io_status_xs,io_status_fs,2'h0,io_status_vs,lo_lo_6}; // @[CSR.scala 721:57]
+  wire [104:0] _T_91 = {37'h0,4'h0,io_status_sd,23'h0,6'h0,io_status_uxl,io_status_sd_rv32,9'h0,lo_7}; // @[CSR.scala 721:57]
+  wire [31:0] _T_94 = ~reg_sepc; // @[CSR.scala 1562:28]
+  wire [31:0] _T_97 = _T_94 | _GEN_640; // @[CSR.scala 1562:31]
+  wire [31:0] _T_98 = ~_T_97; // @[CSR.scala 1562:26]
+  wire [7:0] _T_99 = {reg_pmp_0_cfg_l,2'h0,reg_pmp_0_cfg_a,reg_pmp_0_cfg_x,reg_pmp_0_cfg_w,reg_pmp_0_cfg_r}; // @[package.scala 36:38]
+  wire [7:0] _T_101 = {reg_pmp_2_cfg_l,2'h0,reg_pmp_2_cfg_a,reg_pmp_2_cfg_x,reg_pmp_2_cfg_w,reg_pmp_2_cfg_r}; // @[package.scala 36:38]
+  wire [15:0] lo_12 = {reg_pmp_1_cfg_l,2'h0,reg_pmp_1_cfg_a,reg_pmp_1_cfg_x,reg_pmp_1_cfg_w,reg_pmp_1_cfg_r,_T_99}; // @[Cat.scala 31:58]
+  wire [31:0] _T_103 = {reg_pmp_3_cfg_l,2'h0,reg_pmp_3_cfg_a,reg_pmp_3_cfg_x,reg_pmp_3_cfg_w,reg_pmp_3_cfg_r,_T_101,
+    lo_12}; // @[Cat.scala 31:58]
+  wire [7:0] _T_104 = {reg_pmp_4_cfg_l,2'h0,reg_pmp_4_cfg_a,reg_pmp_4_cfg_x,reg_pmp_4_cfg_w,reg_pmp_4_cfg_r}; // @[package.scala 36:38]
+  wire [7:0] _T_106 = {reg_pmp_6_cfg_l,2'h0,reg_pmp_6_cfg_a,reg_pmp_6_cfg_x,reg_pmp_6_cfg_w,reg_pmp_6_cfg_r}; // @[package.scala 36:38]
+  wire [15:0] lo_17 = {reg_pmp_5_cfg_l,2'h0,reg_pmp_5_cfg_a,reg_pmp_5_cfg_x,reg_pmp_5_cfg_w,reg_pmp_5_cfg_r,_T_104}; // @[Cat.scala 31:58]
+  wire [31:0] _T_108 = {reg_pmp_7_cfg_l,2'h0,reg_pmp_7_cfg_a,reg_pmp_7_cfg_x,reg_pmp_7_cfg_w,reg_pmp_7_cfg_r,_T_106,
+    lo_17}; // @[Cat.scala 31:58]
+  reg [31:0] reg_custom_0; // @[CSR.scala 750:43]
+  wire [12:0] addr = {io_status_v,io_rw_addr}; // @[Cat.scala 31:58]
+  wire [12:0] _decoded_T = addr & 13'hc13; // @[Decode.scala 14:65]
+  wire  decoded_0 = _decoded_T == 13'h400; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_2 = addr & 13'hc53; // @[Decode.scala 14:65]
+  wire  decoded_1 = _decoded_T_2 == 13'h401; // @[Decode.scala 14:121]
+  wire  decoded_2 = _decoded_T == 13'h402; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_8 = addr & 13'h867; // @[Decode.scala 14:65]
+  wire  decoded_4 = _decoded_T_8 == 13'h1; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_10 = addr & 13'ha67; // @[Decode.scala 14:65]
+  wire  decoded_5 = _decoded_T_10 == 13'h200; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_12 = addr & 13'ha25; // @[Decode.scala 14:65]
+  wire  decoded_6 = _decoded_T_12 == 13'h205; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_14 = addr & 13'h244; // @[Decode.scala 14:65]
+  wire  decoded_7 = _decoded_T_14 == 13'h244; // @[Decode.scala 14:121]
+  wire  decoded_8 = _decoded_T_10 == 13'h204; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_18 = addr & 13'h247; // @[Decode.scala 14:65]
+  wire  decoded_9 = _decoded_T_18 == 13'h240; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_20 = addr & 13'h643; // @[Decode.scala 14:65]
+  wire  decoded_10 = _decoded_T_20 == 13'h241; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_22 = addr & 13'h243; // @[Decode.scala 14:65]
+  wire  decoded_11 = _decoded_T_22 == 13'h243; // @[Decode.scala 14:121]
+  wire  decoded_12 = _decoded_T_22 == 13'h242; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_26 = addr & 13'h683; // @[Decode.scala 14:65]
+  wire  decoded_13 = _decoded_T_26 == 13'h600; // @[Decode.scala 14:121]
+  wire  decoded_14 = _decoded_T == 13'h410; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_30 = addr & 13'hc11; // @[Decode.scala 14:65]
+  wire  decoded_15 = _decoded_T_30 == 13'h411; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_32 = addr & 13'hc12; // @[Decode.scala 14:65]
+  wire  decoded_16 = _decoded_T_32 == 13'h412; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_34 = addr & 13'hbe; // @[Decode.scala 14:65]
+  wire  decoded_17 = _decoded_T_34 == 13'h20; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_36 = addr & 13'hc9e; // @[Decode.scala 14:65]
+  wire  decoded_18 = _decoded_T_36 == 13'h800; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_38 = addr & 13'hc9f; // @[Decode.scala 14:65]
+  wire  decoded_19 = _decoded_T_38 == 13'h802; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_54 = addr & 13'h19f; // @[Decode.scala 14:65]
+  wire [12:0] _decoded_T_58 = addr & 13'h29f; // @[Decode.scala 14:65]
+  wire [12:0] _decoded_T_82 = addr & 13'h4bf; // @[Decode.scala 14:65]
+  wire [12:0] _decoded_T_170 = addr & 13'h89f; // @[Decode.scala 14:65]
+  wire [12:0] _decoded_T_330 = addr & 13'ha26; // @[Decode.scala 14:65]
+  wire  decoded_165 = _decoded_T_330 == 13'h206; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_332 = addr & 13'h19e; // @[Decode.scala 14:65]
+  wire  decoded_166 = _decoded_T_332 == 13'h0; // @[Decode.scala 14:121]
+  wire  decoded_167 = _decoded_T_54 == 13'h2; // @[Decode.scala 14:121]
+  wire  decoded_168 = _decoded_T_36 == 13'h880; // @[Decode.scala 14:121]
+  wire  decoded_169 = _decoded_T_82 == 13'h82; // @[Decode.scala 14:121]
+  wire  decoded_170 = _decoded_T_332 == 13'h80; // @[Decode.scala 14:121]
+  wire  decoded_171 = _decoded_T_58 == 13'h82; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_344 = addr & 13'hac4; // @[Decode.scala 14:65]
+  wire  decoded_172 = _decoded_T_344 == 13'h0; // @[Decode.scala 14:121]
+  wire  decoded_173 = _decoded_T_14 == 13'h44; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_348 = addr & 13'ha47; // @[Decode.scala 14:65]
+  wire  decoded_174 = _decoded_T_348 == 13'h4; // @[Decode.scala 14:121]
+  wire  decoded_175 = _decoded_T_18 == 13'h40; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_352 = addr & 13'ha07; // @[Decode.scala 14:65]
+  wire  decoded_176 = _decoded_T_352 == 13'h2; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_354 = addr & 13'ha03; // @[Decode.scala 14:65]
+  wire  decoded_177 = _decoded_T_354 == 13'h3; // @[Decode.scala 14:121]
+  wire  decoded_179 = _decoded_T_352 == 13'h1; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_360 = addr & 13'ha41; // @[Decode.scala 14:65]
+  wire  decoded_180 = _decoded_T_360 == 13'h1; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_362 = addr & 13'ha42; // @[Decode.scala 14:65]
+  wire  decoded_181 = _decoded_T_362 == 13'h2; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_364 = addr & 13'h863; // @[Decode.scala 14:65]
+  wire  decoded_182 = _decoded_T_364 == 13'h3; // @[Decode.scala 14:121]
+  wire  decoded_183 = _decoded_T_8 == 13'h2; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_368 = addr & 13'he93; // @[Decode.scala 14:65]
+  wire  decoded_184 = _decoded_T_368 == 13'h280; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_370 = addr & 13'hc93; // @[Decode.scala 14:65]
+  wire  decoded_185 = _decoded_T_370 == 13'h81; // @[Decode.scala 14:121]
+  wire  decoded_188 = _decoded_T_38 == 13'h90; // @[Decode.scala 14:121]
+  wire  decoded_189 = _decoded_T_38 == 13'h91; // @[Decode.scala 14:121]
+  wire  decoded_190 = _decoded_T_38 == 13'h92; // @[Decode.scala 14:121]
+  wire  decoded_191 = _decoded_T_170 == 13'h93; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_384 = addr & 13'h88f; // @[Decode.scala 14:65]
+  wire  decoded_192 = _decoded_T_384 == 13'h84; // @[Decode.scala 14:121]
+  wire  decoded_193 = _decoded_T_384 == 13'h85; // @[Decode.scala 14:121]
+  wire  decoded_194 = _decoded_T_384 == 13'h86; // @[Decode.scala 14:121]
+  wire  decoded_195 = _decoded_T_384 == 13'h87; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_408 = addr & 13'hc20; // @[Decode.scala 14:65]
+  wire  decoded_204 = _decoded_T_408 == 13'h400; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_410 = addr & 13'h685; // @[Decode.scala 14:65]
+  wire  decoded_205 = _decoded_T_410 == 13'h600; // @[Decode.scala 14:121]
+  wire  decoded_207 = _decoded_T_26 == 13'h603; // @[Decode.scala 14:121]
+  wire [31:0] _wdata_T_1 = io_rw_cmd[1] ? io_rw_rdata : 32'h0; // @[CSR.scala 1540:9]
+  wire [31:0] _wdata_T_2 = _wdata_T_1 | io_rw_wdata; // @[CSR.scala 1540:34]
+  wire [31:0] _wdata_T_5 = &io_rw_cmd[1:0] ? io_rw_wdata : 32'h0; // @[CSR.scala 1540:49]
+  wire [31:0] _wdata_T_6 = ~_wdata_T_5; // @[CSR.scala 1540:45]
+  wire [31:0] wdata = _wdata_T_2 & _wdata_T_6; // @[CSR.scala 1540:43]
+  wire [31:0] _T_337 = _T_327 & 32'h20200000; // @[Decode.scala 14:65]
+  wire  _T_338 = _T_337 == 32'h20000000; // @[Decode.scala 14:121]
+  wire [31:0] _T_340 = _T_327 & 32'h30200000; // @[Decode.scala 14:65]
+  wire  _T_341 = _T_340 == 32'h10000000; // @[Decode.scala 14:121]
+  wire  insn_cease = system_insn & _T_338; // @[CSR.scala 829:95]
+  wire  insn_wfi = system_insn & _T_341; // @[CSR.scala 829:95]
+  wire [11:0] addr_1 = io_decode_0_inst[31:20]; // @[CSR.scala 832:27]
+  wire [31:0] _T_358 = io_decode_0_inst & 32'h10400000; // @[Decode.scala 14:65]
+  wire  is_ret = _T_358 == 32'h10000000; // @[Decode.scala 14:121]
+  wire [31:0] _T_364 = io_decode_0_inst & 32'h30200000; // @[Decode.scala 14:65]
+  wire  is_wfi = _T_364 == 32'h10000000; // @[Decode.scala 14:121]
+  wire  _is_counter_T_2 = addr_1 >= 12'hc00 & addr_1 < 12'hc20; // @[package.scala 204:55]
+  wire  _is_counter_T_5 = addr_1 >= 12'hc80 & addr_1 < 12'hca0; // @[package.scala 204:55]
+  wire  is_counter = _is_counter_T_2 | _is_counter_T_5; // @[CSR.scala 839:75]
+  wire  _allow_wfi_T = reg_mstatus_prv > 2'h1; // @[CSR.scala 841:63]
+  wire  allow_wfi = reg_mstatus_prv > 2'h1 | ~reg_mstatus_tw; // @[CSR.scala 841:71]
+  wire  _allow_hfence_vvma_T_1 = reg_mstatus_prv >= 2'h1; // @[CSR.scala 843:90]
+  wire  allow_sret = _allow_wfi_T | ~reg_mstatus_tsr; // @[CSR.scala 845:72]
+  wire [4:0] counter_addr = addr_1[4:0]; // @[CSR.scala 846:28]
+  wire [31:0] _allow_counter_T_1 = read_mcounteren >> counter_addr; // @[CSR.scala 847:68]
+  wire [31:0] _allow_counter_T_6 = read_scounteren >> counter_addr; // @[CSR.scala 848:71]
+  wire  _allow_counter_T_8 = _allow_hfence_vvma_T_1 | _allow_counter_T_6[0]; // @[CSR.scala 848:53]
+  wire  allow_counter = (_allow_wfi_T | _allow_counter_T_1[0]) & _allow_counter_T_8; // @[CSR.scala 847:84]
+  wire  csr_addr_legal = reg_mstatus_prv >= addr_1[9:8]; // @[CSR.scala 854:42]
+  wire  _csr_exists_T_15 = addr_1 == 12'h7b1; // @[CSR.scala 834:93]
+  wire  _csr_exists_T_222 = addr_1 == 12'h7a0 | addr_1 == 12'h7a1 | addr_1 == 12'h7a2 | addr_1 == 12'h7a3 | addr_1 == 12'h301
+     | addr_1 == 12'h300 | addr_1 == 12'h305 | addr_1 == 12'h344 | addr_1 == 12'h304 | addr_1 == 12'h340 | addr_1 == 12'h341
+     | addr_1 == 12'h343 | addr_1 == 12'h342 | addr_1 == 12'hf14 | addr_1 == 12'h7b0 | _csr_exists_T_15; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_237 = _csr_exists_T_222 | addr_1 == 12'h7b2 | addr_1 == 12'h320 | addr_1 == 12'hb00 | addr_1 == 12'hb02
+     | addr_1 == 12'h323 | addr_1 == 12'hb03 | addr_1 == 12'hc03 | addr_1 == 12'hb83 | addr_1 == 12'hc83 | addr_1 == 12'h324
+     | addr_1 == 12'hb04 | addr_1 == 12'hc04 | addr_1 == 12'hb84 | addr_1 == 12'hc84 | addr_1 == 12'h325; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_252 = _csr_exists_T_237 | addr_1 == 12'hb05 | addr_1 == 12'hc05 | addr_1 == 12'hb85 | addr_1 == 12'hc85
+     | addr_1 == 12'h326 | addr_1 == 12'hb06 | addr_1 == 12'hc06 | addr_1 == 12'hb86 | addr_1 == 12'hc86 | addr_1 == 12'h327
+     | addr_1 == 12'hb07 | addr_1 == 12'hc07 | addr_1 == 12'hb87 | addr_1 == 12'hc87 | addr_1 == 12'h328; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_267 = _csr_exists_T_252 | addr_1 == 12'hb08 | addr_1 == 12'hc08 | addr_1 == 12'hb88 | addr_1 == 12'hc88
+     | addr_1 == 12'h329 | addr_1 == 12'hb09 | addr_1 == 12'hc09 | addr_1 == 12'hb89 | addr_1 == 12'hc89 | addr_1 == 12'h32a
+     | addr_1 == 12'hb0a | addr_1 == 12'hc0a | addr_1 == 12'hb8a | addr_1 == 12'hc8a | addr_1 == 12'h32b; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_282 = _csr_exists_T_267 | addr_1 == 12'hb0b | addr_1 == 12'hc0b | addr_1 == 12'hb8b | addr_1 == 12'hc8b
+     | addr_1 == 12'h32c | addr_1 == 12'hb0c | addr_1 == 12'hc0c | addr_1 == 12'hb8c | addr_1 == 12'hc8c | addr_1 == 12'h32d
+     | addr_1 == 12'hb0d | addr_1 == 12'hc0d | addr_1 == 12'hb8d | addr_1 == 12'hc8d | addr_1 == 12'h32e; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_297 = _csr_exists_T_282 | addr_1 == 12'hb0e | addr_1 == 12'hc0e | addr_1 == 12'hb8e | addr_1 == 12'hc8e
+     | addr_1 == 12'h32f | addr_1 == 12'hb0f | addr_1 == 12'hc0f | addr_1 == 12'hb8f | addr_1 == 12'hc8f | addr_1 == 12'h330
+     | addr_1 == 12'hb10 | addr_1 == 12'hc10 | addr_1 == 12'hb90 | addr_1 == 12'hc90 | addr_1 == 12'h331; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_312 = _csr_exists_T_297 | addr_1 == 12'hb11 | addr_1 == 12'hc11 | addr_1 == 12'hb91 | addr_1 == 12'hc91
+     | addr_1 == 12'h332 | addr_1 == 12'hb12 | addr_1 == 12'hc12 | addr_1 == 12'hb92 | addr_1 == 12'hc92 | addr_1 == 12'h333
+     | addr_1 == 12'hb13 | addr_1 == 12'hc13 | addr_1 == 12'hb93 | addr_1 == 12'hc93 | addr_1 == 12'h334; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_327 = _csr_exists_T_312 | addr_1 == 12'hb14 | addr_1 == 12'hc14 | addr_1 == 12'hb94 | addr_1 == 12'hc94
+     | addr_1 == 12'h335 | addr_1 == 12'hb15 | addr_1 == 12'hc15 | addr_1 == 12'hb95 | addr_1 == 12'hc95 | addr_1 == 12'h336
+     | addr_1 == 12'hb16 | addr_1 == 12'hc16 | addr_1 == 12'hb96 | addr_1 == 12'hc96 | addr_1 == 12'h337; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_342 = _csr_exists_T_327 | addr_1 == 12'hb17 | addr_1 == 12'hc17 | addr_1 == 12'hb97 | addr_1 == 12'hc97
+     | addr_1 == 12'h338 | addr_1 == 12'hb18 | addr_1 == 12'hc18 | addr_1 == 12'hb98 | addr_1 == 12'hc98 | addr_1 == 12'h339
+     | addr_1 == 12'hb19 | addr_1 == 12'hc19 | addr_1 == 12'hb99 | addr_1 == 12'hc99 | addr_1 == 12'h33a; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_357 = _csr_exists_T_342 | addr_1 == 12'hb1a | addr_1 == 12'hc1a | addr_1 == 12'hb9a | addr_1 == 12'hc9a
+     | addr_1 == 12'h33b | addr_1 == 12'hb1b | addr_1 == 12'hc1b | addr_1 == 12'hb9b | addr_1 == 12'hc9b | addr_1 == 12'h33c
+     | addr_1 == 12'hb1c | addr_1 == 12'hc1c | addr_1 == 12'hb9c | addr_1 == 12'hc9c | addr_1 == 12'h33d; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_372 = _csr_exists_T_357 | addr_1 == 12'hb1d | addr_1 == 12'hc1d | addr_1 == 12'hb9d | addr_1 == 12'hc9d
+     | addr_1 == 12'h33e | addr_1 == 12'hb1e | addr_1 == 12'hc1e | addr_1 == 12'hb9e | addr_1 == 12'hc9e | addr_1 == 12'h33f
+     | addr_1 == 12'hb1f | addr_1 == 12'hc1f | addr_1 == 12'hb9f | addr_1 == 12'hc9f | addr_1 == 12'h306; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_387 = _csr_exists_T_372 | addr_1 == 12'hc00 | addr_1 == 12'hc02 | addr_1 == 12'hb80 | addr_1 == 12'hb82
+     | addr_1 == 12'hc80 | addr_1 == 12'hc82 | addr_1 == 12'h100 | addr_1 == 12'h144 | addr_1 == 12'h104 | addr_1 == 12'h140
+     | addr_1 == 12'h142 | addr_1 == 12'h143 | addr_1 == 12'h180 | addr_1 == 12'h141 | addr_1 == 12'h105; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_402 = _csr_exists_T_387 | addr_1 == 12'h106 | addr_1 == 12'h303 | addr_1 == 12'h302 | addr_1 == 12'h3a0
+     | addr_1 == 12'h3a1 | addr_1 == 12'h3a2 | addr_1 == 12'h3a3 | addr_1 == 12'h3b0 | addr_1 == 12'h3b1 | addr_1 == 12'h3b2
+     | addr_1 == 12'h3b3 | addr_1 == 12'h3b4 | addr_1 == 12'h3b5 | addr_1 == 12'h3b6 | addr_1 == 12'h3b7; // @[CSR.scala 834:109]
+  wire  csr_exists = _csr_exists_T_402 | addr_1 == 12'h3b8 | addr_1 == 12'h3b9 | addr_1 == 12'h3ba | addr_1 == 12'h3bb
+     | addr_1 == 12'h3bc | addr_1 == 12'h3bd | addr_1 == 12'h3be | addr_1 == 12'h3bf | addr_1 == 12'h7c1 | addr_1 == 12'hf12
+     | addr_1 == 12'hf11 | addr_1 == 12'hf13; // @[CSR.scala 834:109]
+  wire  _io_decode_0_read_illegal_T = ~csr_addr_legal; // @[CSR.scala 857:28]
+  wire  _io_decode_0_read_illegal_T_1 = ~csr_exists; // @[CSR.scala 858:7]
+  wire  _io_decode_0_read_illegal_T_2 = ~csr_addr_legal | _io_decode_0_read_illegal_T_1; // @[CSR.scala 857:44]
+  wire  _io_decode_0_read_illegal_T_10 = is_counter & ~allow_counter; // @[CSR.scala 860:18]
+  wire  _io_decode_0_read_illegal_T_11 = _io_decode_0_read_illegal_T_2 | _io_decode_0_read_illegal_T_10; // @[CSR.scala 859:74]
+  wire [11:0] _io_decode_0_read_illegal_T_12 = addr_1 & 12'hc10; // @[Decode.scala 14:65]
+  wire  _io_decode_0_read_illegal_T_13 = _io_decode_0_read_illegal_T_12 == 12'h410; // @[Decode.scala 14:121]
+  wire  _io_decode_0_read_illegal_T_17 = _io_decode_0_read_illegal_T_13 & _T_401; // @[CSR.scala 861:42]
+  wire  _io_decode_0_read_illegal_T_18 = _io_decode_0_read_illegal_T_11 | _io_decode_0_read_illegal_T_17; // @[CSR.scala 860:36]
+  wire  _io_decode_0_read_illegal_T_21 = io_decode_0_fp_csr & io_decode_0_fp_illegal; // @[CSR.scala 863:21]
+  wire [11:0] io_decode_0_write_flush_addr_m = addr_1 | 12'h300; // @[CSR.scala 866:25]
+  wire  _io_decode_0_system_illegal_T_4 = is_wfi & ~allow_wfi; // @[CSR.scala 870:14]
+  wire  _io_decode_0_system_illegal_T_5 = _io_decode_0_read_illegal_T | _io_decode_0_system_illegal_T_4; // @[CSR.scala 869:58]
+  wire  _io_decode_0_system_illegal_T_7 = is_ret & ~allow_sret; // @[CSR.scala 871:14]
+  wire  _io_decode_0_system_illegal_T_8 = _io_decode_0_system_illegal_T_5 | _io_decode_0_system_illegal_T_7; // @[CSR.scala 870:28]
+  wire  _io_decode_0_system_illegal_T_14 = is_ret & addr_1[10] & addr_1[7] & _T_401; // @[CSR.scala 872:37]
+  wire [11:0] _debugTVec_T = insn_break ? 12'h800 : 12'h808; // @[CSR.scala 902:37]
+  wire [11:0] debugTVec = reg_debug ? _debugTVec_T : 12'h800; // @[CSR.scala 902:22]
+  wire [31:0] notDebugTVec_base = delegate ? read_stvec : read_mtvec; // @[CSR.scala 911:19]
+  wire [6:0] notDebugTVec_interruptOffset = {cause[4:0], 2'h0}; // @[CSR.scala 912:59]
+  wire [31:0] notDebugTVec_interruptVec = {notDebugTVec_base[31:7],notDebugTVec_interruptOffset}; // @[Cat.scala 31:58]
+  wire  notDebugTVec_doVector = notDebugTVec_base[0] & cause[31] & cause_lsbs[7:5] == 3'h0; // @[CSR.scala 914:55]
+  wire [31:0] _notDebugTVec_T_1 = {notDebugTVec_base[31:2], 2'h0}; // @[CSR.scala 915:56]
+  wire [31:0] notDebugTVec = notDebugTVec_doVector ? notDebugTVec_interruptVec : _notDebugTVec_T_1; // @[CSR.scala 915:8]
+  wire [31:0] tvec = trapToDebug ? {{20'd0}, debugTVec} : notDebugTVec; // @[CSR.scala 928:17]
+  wire [1:0] _T_369 = insn_ret + insn_call; // @[Bitwise.scala 48:55]
+  wire [1:0] _T_371 = insn_break + io_exception; // @[Bitwise.scala 48:55]
+  wire [2:0] _T_373 = _T_369 + _T_371; // @[Bitwise.scala 48:55]
+  wire  _T_377 = ~reset; // @[CSR.scala 954:9]
+  wire  _GEN_46 = insn_wfi & _io_interrupt_T & _T_401 | reg_wfi; // @[CSR.scala 538:50 956:{51,61}]
+  wire  _GEN_48 = io_retire | exception | reg_singleStepped; // @[CSR.scala 453:30 960:{36,56}]
+  wire [31:0] _epc_T = ~io_pc; // @[CSR.scala 1561:28]
+  wire [31:0] _epc_T_1 = _epc_T | 32'h1; // @[CSR.scala 1561:31]
+  wire [31:0] epc = ~_epc_T_1; // @[CSR.scala 1561:26]
+  wire [1:0] _reg_dcsr_cause_T = causeIsDebugTrigger ? 2'h2 : 2'h1; // @[CSR.scala 973:86]
+  wire [1:0] _reg_dcsr_cause_T_1 = causeIsDebugInt ? 2'h3 : _reg_dcsr_cause_T; // @[CSR.scala 973:56]
+  wire [2:0] _reg_dcsr_cause_T_2 = reg_singleStepped ? 3'h4 : {{1'd0}, _reg_dcsr_cause_T_1}; // @[CSR.scala 973:30]
+  wire  _GEN_51 = ~reg_debug | reg_debug; // @[CSR.scala 969:25 971:19 449:22]
+  wire [31:0] _GEN_52 = ~reg_debug ? epc : reg_dpc; // @[CSR.scala 969:25 972:17 450:20]
+  wire [1:0] _GEN_54 = ~reg_debug ? reg_mstatus_prv : reg_dcsr_prv; // @[CSR.scala 377:21 969:25 974:22]
+  wire [31:0] _GEN_68 = delegate ? epc : reg_sepc; // @[CSR.scala 1002:16 532:21 997:35]
+  wire [31:0] _GEN_69 = delegate ? cause : reg_scause; // @[CSR.scala 1003:18 533:23 997:35]
+  wire [31:0] _GEN_70 = delegate ? io_tval : reg_stval; // @[CSR.scala 1004:17 534:22 997:35]
+  wire  _GEN_72 = delegate ? reg_mstatus_sie : reg_mstatus_spie; // @[CSR.scala 1006:24 369:24 997:35]
+  wire [1:0] _GEN_73 = delegate ? reg_mstatus_prv : {{1'd0}, reg_mstatus_spp}; // @[CSR.scala 1007:23 369:24 997:35]
+  wire  _GEN_74 = delegate ? 1'h0 : reg_mstatus_sie; // @[CSR.scala 1008:23 369:24 997:35]
+  wire [31:0] _GEN_78 = delegate ? reg_mepc : epc; // @[CSR.scala 1014:16 472:21 997:35]
+  wire [31:0] _GEN_79 = delegate ? reg_mcause : cause; // @[CSR.scala 1015:18 473:27 997:35]
+  wire [31:0] _GEN_80 = delegate ? reg_mtval : io_tval; // @[CSR.scala 1016:17 474:22 997:35]
+  wire  _GEN_82 = delegate ? reg_mstatus_mpie : reg_mstatus_mie; // @[CSR.scala 1018:24 369:24 997:35]
+  wire [1:0] _GEN_83 = delegate ? reg_mstatus_mpp : reg_mstatus_prv; // @[CSR.scala 1019:23 369:24 997:35]
+  wire  _GEN_84 = delegate & reg_mstatus_mie; // @[CSR.scala 1020:23 369:24 997:35]
+  wire  _GEN_145 = trapToDebug ? _GEN_51 : reg_debug; // @[CSR.scala 449:22 968:24]
+  wire [31:0] _GEN_146 = trapToDebug ? _GEN_52 : reg_dpc; // @[CSR.scala 450:20 968:24]
+  wire [1:0] _GEN_148 = trapToDebug ? _GEN_54 : reg_dcsr_prv; // @[CSR.scala 377:21 968:24]
+  wire [31:0] _GEN_165 = trapToDebug ? reg_sepc : _GEN_68; // @[CSR.scala 532:21 968:24]
+  wire [31:0] _GEN_166 = trapToDebug ? reg_scause : _GEN_69; // @[CSR.scala 533:23 968:24]
+  wire [31:0] _GEN_167 = trapToDebug ? reg_stval : _GEN_70; // @[CSR.scala 534:22 968:24]
+  wire  _GEN_169 = trapToDebug ? reg_mstatus_spie : _GEN_72; // @[CSR.scala 369:24 968:24]
+  wire [1:0] _GEN_170 = trapToDebug ? {{1'd0}, reg_mstatus_spp} : _GEN_73; // @[CSR.scala 369:24 968:24]
+  wire  _GEN_171 = trapToDebug ? reg_mstatus_sie : _GEN_74; // @[CSR.scala 369:24 968:24]
+  wire [31:0] _GEN_174 = trapToDebug ? reg_mepc : _GEN_78; // @[CSR.scala 472:21 968:24]
+  wire [31:0] _GEN_175 = trapToDebug ? reg_mcause : _GEN_79; // @[CSR.scala 968:24 473:27]
+  wire [31:0] _GEN_176 = trapToDebug ? reg_mtval : _GEN_80; // @[CSR.scala 474:22 968:24]
+  wire  _GEN_178 = trapToDebug ? reg_mstatus_mpie : _GEN_82; // @[CSR.scala 369:24 968:24]
+  wire [1:0] _GEN_179 = trapToDebug ? reg_mstatus_mpp : _GEN_83; // @[CSR.scala 369:24 968:24]
+  wire  _GEN_180 = trapToDebug ? reg_mstatus_mie : _GEN_84; // @[CSR.scala 369:24 968:24]
+  wire  _GEN_182 = exception ? _GEN_145 : reg_debug; // @[CSR.scala 967:20 449:22]
+  wire [31:0] _GEN_183 = exception ? _GEN_146 : reg_dpc; // @[CSR.scala 450:20 967:20]
+  wire [1:0] _GEN_185 = exception ? _GEN_148 : reg_dcsr_prv; // @[CSR.scala 967:20 377:21]
+  wire [31:0] _GEN_202 = exception ? _GEN_165 : reg_sepc; // @[CSR.scala 967:20 532:21]
+  wire [31:0] _GEN_203 = exception ? _GEN_166 : reg_scause; // @[CSR.scala 967:20 533:23]
+  wire [31:0] _GEN_204 = exception ? _GEN_167 : reg_stval; // @[CSR.scala 967:20 534:22]
+  wire  _GEN_206 = exception ? _GEN_169 : reg_mstatus_spie; // @[CSR.scala 967:20 369:24]
+  wire [1:0] _GEN_207 = exception ? _GEN_170 : {{1'd0}, reg_mstatus_spp}; // @[CSR.scala 967:20 369:24]
+  wire  _GEN_208 = exception ? _GEN_171 : reg_mstatus_sie; // @[CSR.scala 967:20 369:24]
+  wire [31:0] _GEN_211 = exception ? _GEN_174 : reg_mepc; // @[CSR.scala 967:20 472:21]
+  wire [31:0] _GEN_212 = exception ? _GEN_175 : reg_mcause; // @[CSR.scala 967:20 473:27]
+  wire [31:0] _GEN_213 = exception ? _GEN_176 : reg_mtval; // @[CSR.scala 967:20 474:22]
+  wire  _GEN_215 = exception ? _GEN_178 : reg_mstatus_mpie; // @[CSR.scala 967:20 369:24]
+  wire [1:0] _GEN_216 = exception ? _GEN_179 : reg_mstatus_mpp; // @[CSR.scala 967:20 369:24]
+  wire  _GEN_217 = exception ? _GEN_180 : reg_mstatus_mie; // @[CSR.scala 967:20 369:24]
+  wire [31:0] _GEN_239 = io_rw_addr[10] & io_rw_addr[7] ? _T_28 : _T_22; // @[CSR.scala 1064:70 1068:15]
+  wire  _GEN_241 = io_rw_addr[10] & io_rw_addr[7] ? _GEN_217 : reg_mstatus_mpie; // @[CSR.scala 1064:70]
+  wire  _GEN_242 = io_rw_addr[10] & io_rw_addr[7] ? _GEN_215 : 1'h1; // @[CSR.scala 1064:70]
+  wire [1:0] _GEN_243 = io_rw_addr[10] & io_rw_addr[7] ? _GEN_216 : 2'h0; // @[CSR.scala 1064:70]
+  wire  _GEN_245 = ~io_rw_addr[9] ? reg_mstatus_spie : _GEN_208; // @[CSR.scala 1047:52]
+  wire  _GEN_246 = ~io_rw_addr[9] | _GEN_206; // @[CSR.scala 1047:52]
+  wire [1:0] _GEN_247 = ~io_rw_addr[9] ? 2'h0 : _GEN_207; // @[CSR.scala 1047:52]
+  wire [31:0] _GEN_250 = ~io_rw_addr[9] ? _T_98 : _GEN_239; // @[CSR.scala 1047:52]
+  wire  _GEN_257 = ~io_rw_addr[9] ? _GEN_217 : _GEN_241; // @[CSR.scala 1047:52]
+  wire  _GEN_258 = ~io_rw_addr[9] ? _GEN_215 : _GEN_242; // @[CSR.scala 1047:52]
+  wire [1:0] _GEN_259 = ~io_rw_addr[9] ? _GEN_216 : _GEN_243; // @[CSR.scala 1047:52]
+  wire  _GEN_261 = ret_prv <= 2'h1 ? 1'h0 : reg_mstatus_mprv; // @[CSR.scala 1085:42 1086:24 369:24]
+  wire  _GEN_262 = insn_ret ? _GEN_245 : _GEN_208; // @[CSR.scala 1045:19]
+  wire  _GEN_263 = insn_ret ? _GEN_246 : _GEN_206; // @[CSR.scala 1045:19]
+  wire [1:0] _GEN_264 = insn_ret ? _GEN_247 : _GEN_207; // @[CSR.scala 1045:19]
+  wire  _GEN_273 = insn_ret ? _GEN_257 : _GEN_217; // @[CSR.scala 1045:19]
+  wire  _GEN_274 = insn_ret ? _GEN_258 : _GEN_215; // @[CSR.scala 1045:19]
+  wire [1:0] _GEN_275 = insn_ret ? _GEN_259 : _GEN_216; // @[CSR.scala 1045:19]
+  wire  _GEN_278 = insn_ret ? _GEN_261 : reg_mstatus_mprv; // @[CSR.scala 1045:19 369:24]
+  reg  io_status_cease_r; // @[Reg.scala 28:20]
+  wire  _GEN_279 = insn_cease | io_status_cease_r; // @[Reg.scala 29:18 28:20 29:22]
+  wire  _io_rw_rdata_T = decoded_0 & reg_tselect; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_1 = decoded_1 ? _T_16 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _GEN_281 = reg_tselect ? reg_bp_1_address : reg_bp_0_address; // @[Mux.scala 27:{73,73}]
+  wire [31:0] _io_rw_rdata_T_2 = decoded_2 ? _GEN_281 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_4 = decoded_4 ? reg_misa : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_5 = decoded_5 ? read_mstatus : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_6 = decoded_6 ? read_mtvec : 32'h0; // @[Mux.scala 27:73]
+  wire [15:0] _io_rw_rdata_T_7 = decoded_7 ? read_mip : 16'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_8 = decoded_8 ? reg_mie : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_9 = decoded_9 ? reg_mscratch : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_10 = decoded_10 ? _T_22 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_11 = decoded_11 ? reg_mtval : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_12 = decoded_12 ? reg_mcause : 32'h0; // @[Mux.scala 27:73]
+  wire  _io_rw_rdata_T_13 = decoded_13 & io_hartid; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_14 = decoded_14 ? _T_23 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_15 = decoded_15 ? _T_28 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_16 = decoded_16 ? reg_dscratch : 32'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_rw_rdata_T_17 = decoded_17 ? reg_mcountinhibit : 3'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_18 = decoded_18 ? value_1 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_19 = decoded_19 ? value : 64'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_165 = decoded_165 ? read_mcounteren : 32'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_166 = decoded_166 ? value_1 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_167 = decoded_167 ? value : 64'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_168 = decoded_168 ? value_1[63:32] : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_169 = decoded_169 ? value[63:32] : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_170 = decoded_170 ? value_1[63:32] : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_171 = decoded_171 ? value[63:32] : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_172 = decoded_172 ? _T_91[31:0] : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_173 = decoded_173 ? read_sip : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_174 = decoded_174 ? read_sie : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_175 = decoded_175 ? reg_sscratch : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_176 = decoded_176 ? reg_scause : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_177 = decoded_177 ? reg_stval : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_179 = decoded_179 ? _T_98 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_180 = decoded_180 ? read_stvec : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_181 = decoded_181 ? read_scounteren : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_182 = decoded_182 ? read_mideleg : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_183 = decoded_183 ? read_medeleg : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_184 = decoded_184 ? _T_103 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_185 = decoded_185 ? _T_108 : 32'h0; // @[Mux.scala 27:73]
+  wire [28:0] _io_rw_rdata_T_188 = decoded_188 ? reg_pmp_0_addr : 29'h0; // @[Mux.scala 27:73]
+  wire [28:0] _io_rw_rdata_T_189 = decoded_189 ? reg_pmp_1_addr : 29'h0; // @[Mux.scala 27:73]
+  wire [28:0] _io_rw_rdata_T_190 = decoded_190 ? reg_pmp_2_addr : 29'h0; // @[Mux.scala 27:73]
+  wire [28:0] _io_rw_rdata_T_191 = decoded_191 ? reg_pmp_3_addr : 29'h0; // @[Mux.scala 27:73]
+  wire [28:0] _io_rw_rdata_T_192 = decoded_192 ? reg_pmp_4_addr : 29'h0; // @[Mux.scala 27:73]
+  wire [28:0] _io_rw_rdata_T_193 = decoded_193 ? reg_pmp_5_addr : 29'h0; // @[Mux.scala 27:73]
+  wire [28:0] _io_rw_rdata_T_194 = decoded_194 ? reg_pmp_6_addr : 29'h0; // @[Mux.scala 27:73]
+  wire [28:0] _io_rw_rdata_T_195 = decoded_195 ? reg_pmp_7_addr : 29'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_204 = decoded_204 ? reg_custom_0 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_205 = decoded_205 ? 32'h1 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_207 = decoded_207 ? 32'h20181004 : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _GEN_648 = {{31'd0}, _io_rw_rdata_T}; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_208 = _GEN_648 | _io_rw_rdata_T_1; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_209 = _io_rw_rdata_T_208 | _io_rw_rdata_T_2; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_211 = _io_rw_rdata_T_209 | _io_rw_rdata_T_4; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_212 = _io_rw_rdata_T_211 | _io_rw_rdata_T_5; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_213 = _io_rw_rdata_T_212 | _io_rw_rdata_T_6; // @[Mux.scala 27:73]
+  wire [31:0] _GEN_649 = {{16'd0}, _io_rw_rdata_T_7}; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_214 = _io_rw_rdata_T_213 | _GEN_649; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_215 = _io_rw_rdata_T_214 | _io_rw_rdata_T_8; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_216 = _io_rw_rdata_T_215 | _io_rw_rdata_T_9; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_217 = _io_rw_rdata_T_216 | _io_rw_rdata_T_10; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_218 = _io_rw_rdata_T_217 | _io_rw_rdata_T_11; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_219 = _io_rw_rdata_T_218 | _io_rw_rdata_T_12; // @[Mux.scala 27:73]
+  wire [31:0] _GEN_650 = {{31'd0}, _io_rw_rdata_T_13}; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_220 = _io_rw_rdata_T_219 | _GEN_650; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_221 = _io_rw_rdata_T_220 | _io_rw_rdata_T_14; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_222 = _io_rw_rdata_T_221 | _io_rw_rdata_T_15; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_223 = _io_rw_rdata_T_222 | _io_rw_rdata_T_16; // @[Mux.scala 27:73]
+  wire [31:0] _GEN_651 = {{29'd0}, _io_rw_rdata_T_17}; // @[Mux.scala 27:73]
+  wire [31:0] _io_rw_rdata_T_224 = _io_rw_rdata_T_223 | _GEN_651; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_652 = {{32'd0}, _io_rw_rdata_T_224}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_225 = _GEN_652 | _io_rw_rdata_T_18; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_226 = _io_rw_rdata_T_225 | _io_rw_rdata_T_19; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_653 = {{32'd0}, _io_rw_rdata_T_165}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_372 = _io_rw_rdata_T_226 | _GEN_653; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_373 = _io_rw_rdata_T_372 | _io_rw_rdata_T_166; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_374 = _io_rw_rdata_T_373 | _io_rw_rdata_T_167; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_654 = {{32'd0}, _io_rw_rdata_T_168}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_375 = _io_rw_rdata_T_374 | _GEN_654; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_655 = {{32'd0}, _io_rw_rdata_T_169}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_376 = _io_rw_rdata_T_375 | _GEN_655; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_656 = {{32'd0}, _io_rw_rdata_T_170}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_377 = _io_rw_rdata_T_376 | _GEN_656; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_657 = {{32'd0}, _io_rw_rdata_T_171}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_378 = _io_rw_rdata_T_377 | _GEN_657; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_658 = {{32'd0}, _io_rw_rdata_T_172}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_379 = _io_rw_rdata_T_378 | _GEN_658; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_659 = {{32'd0}, _io_rw_rdata_T_173}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_380 = _io_rw_rdata_T_379 | _GEN_659; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_660 = {{32'd0}, _io_rw_rdata_T_174}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_381 = _io_rw_rdata_T_380 | _GEN_660; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_661 = {{32'd0}, _io_rw_rdata_T_175}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_382 = _io_rw_rdata_T_381 | _GEN_661; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_662 = {{32'd0}, _io_rw_rdata_T_176}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_383 = _io_rw_rdata_T_382 | _GEN_662; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_663 = {{32'd0}, _io_rw_rdata_T_177}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_384 = _io_rw_rdata_T_383 | _GEN_663; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_664 = {{32'd0}, _io_rw_rdata_T_179}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_386 = _io_rw_rdata_T_384 | _GEN_664; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_665 = {{32'd0}, _io_rw_rdata_T_180}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_387 = _io_rw_rdata_T_386 | _GEN_665; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_666 = {{32'd0}, _io_rw_rdata_T_181}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_388 = _io_rw_rdata_T_387 | _GEN_666; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_667 = {{32'd0}, _io_rw_rdata_T_182}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_389 = _io_rw_rdata_T_388 | _GEN_667; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_668 = {{32'd0}, _io_rw_rdata_T_183}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_390 = _io_rw_rdata_T_389 | _GEN_668; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_669 = {{32'd0}, _io_rw_rdata_T_184}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_391 = _io_rw_rdata_T_390 | _GEN_669; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_670 = {{32'd0}, _io_rw_rdata_T_185}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_392 = _io_rw_rdata_T_391 | _GEN_670; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_671 = {{35'd0}, _io_rw_rdata_T_188}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_395 = _io_rw_rdata_T_392 | _GEN_671; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_672 = {{35'd0}, _io_rw_rdata_T_189}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_396 = _io_rw_rdata_T_395 | _GEN_672; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_673 = {{35'd0}, _io_rw_rdata_T_190}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_397 = _io_rw_rdata_T_396 | _GEN_673; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_674 = {{35'd0}, _io_rw_rdata_T_191}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_398 = _io_rw_rdata_T_397 | _GEN_674; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_675 = {{35'd0}, _io_rw_rdata_T_192}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_399 = _io_rw_rdata_T_398 | _GEN_675; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_676 = {{35'd0}, _io_rw_rdata_T_193}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_400 = _io_rw_rdata_T_399 | _GEN_676; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_677 = {{35'd0}, _io_rw_rdata_T_194}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_401 = _io_rw_rdata_T_400 | _GEN_677; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_678 = {{35'd0}, _io_rw_rdata_T_195}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_402 = _io_rw_rdata_T_401 | _GEN_678; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_679 = {{32'd0}, _io_rw_rdata_T_204}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_411 = _io_rw_rdata_T_402 | _GEN_679; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_680 = {{32'd0}, _io_rw_rdata_T_205}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_412 = _io_rw_rdata_T_411 | _GEN_680; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_681 = {{32'd0}, _io_rw_rdata_T_207}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_414 = _io_rw_rdata_T_412 | _GEN_681; // @[Mux.scala 27:73]
+  wire  _T_529 = io_rw_cmd == 3'h5; // @[package.scala 15:47]
+  wire  _T_530 = io_rw_cmd == 3'h6; // @[package.scala 15:47]
+  wire  _T_531 = io_rw_cmd == 3'h7; // @[package.scala 15:47]
+  wire  csr_wen = _T_530 | _T_531 | _T_529; // @[package.scala 72:59]
+  wire [104:0] _new_mstatus_WIRE = {{73'd0}, wdata};
+  wire  new_mstatus_sie = _new_mstatus_WIRE[1]; // @[CSR.scala 1153:47]
+  wire  new_mstatus_mie = _new_mstatus_WIRE[3]; // @[CSR.scala 1153:47]
+  wire  new_mstatus_spie = _new_mstatus_WIRE[5]; // @[CSR.scala 1153:47]
+  wire  new_mstatus_mpie = _new_mstatus_WIRE[7]; // @[CSR.scala 1153:47]
+  wire  new_mstatus_spp = _new_mstatus_WIRE[8]; // @[CSR.scala 1153:47]
+  wire [1:0] new_mstatus_mpp = _new_mstatus_WIRE[12:11]; // @[CSR.scala 1153:47]
+  wire [1:0] new_mstatus_fs = _new_mstatus_WIRE[14:13]; // @[CSR.scala 1153:47]
+  wire  new_mstatus_mprv = _new_mstatus_WIRE[17]; // @[CSR.scala 1153:47]
+  wire  new_mstatus_tw = _new_mstatus_WIRE[21]; // @[CSR.scala 1153:47]
+  wire  new_mstatus_tsr = _new_mstatus_WIRE[22]; // @[CSR.scala 1153:47]
+  wire  _reg_mstatus_fs_T = |new_mstatus_fs; // @[CSR.scala 1565:73]
+  wire [1:0] _reg_mstatus_fs_T_2 = _reg_mstatus_fs_T ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [1:0] _GEN_288 = decoded_5 ? {{1'd0}, new_mstatus_spp} : _GEN_264; // @[CSR.scala 1152:39 1161:27]
+  wire  f = wdata[5]; // @[CSR.scala 1183:20]
+  wire [31:0] _reg_misa_T = ~wdata; // @[CSR.scala 1187:25]
+  wire  _reg_misa_T_1 = ~f; // @[CSR.scala 1187:35]
+  wire [3:0] _reg_misa_T_2 = {_reg_misa_T_1, 3'h0}; // @[CSR.scala 1187:38]
+  wire [31:0] _GEN_682 = {{28'd0}, _reg_misa_T_2}; // @[CSR.scala 1187:32]
+  wire [31:0] _reg_misa_T_3 = _reg_misa_T | _GEN_682; // @[CSR.scala 1187:32]
+  wire [31:0] _reg_misa_T_4 = ~_reg_misa_T_3; // @[CSR.scala 1187:23]
+  wire [31:0] _reg_misa_T_5 = _reg_misa_T_4 & 32'h1005; // @[CSR.scala 1187:55]
+  wire [31:0] _reg_misa_T_7 = reg_misa & 32'hffffeffa; // @[CSR.scala 1187:73]
+  wire [31:0] _reg_misa_T_8 = _reg_misa_T_5 | _reg_misa_T_7; // @[CSR.scala 1187:62]
+  wire [15:0] _new_mip_T_2 = io_rw_cmd[1] ? _read_hvip_T : 16'h0; // @[CSR.scala 1540:9]
+  wire [31:0] _GEN_683 = {{16'd0}, _new_mip_T_2}; // @[CSR.scala 1540:34]
+  wire [31:0] _new_mip_T_3 = _GEN_683 | io_rw_wdata; // @[CSR.scala 1540:34]
+  wire [31:0] _new_mip_T_8 = _new_mip_T_3 & _wdata_T_6; // @[CSR.scala 1540:43]
+  wire  new_mip_ssip = _new_mip_T_8[1]; // @[CSR.scala 1195:88]
+  wire  new_mip_stip = _new_mip_T_8[5]; // @[CSR.scala 1195:88]
+  wire  new_mip_seip = _new_mip_T_8[9]; // @[CSR.scala 1195:88]
+  wire [31:0] _reg_mie_T = wdata & 32'haaa; // @[CSR.scala 1205:59]
+  wire [31:0] _reg_mepc_T_1 = _reg_misa_T | 32'h1; // @[CSR.scala 1561:31]
+  wire [31:0] _reg_mepc_T_2 = ~_reg_mepc_T_1; // @[CSR.scala 1561:26]
+  wire [31:0] _GEN_303 = decoded_6 ? wdata : {{1'd0}, reg_mtvec}; // @[CSR.scala 1209:{40,52} 479:27]
+  wire [31:0] _reg_mcause_T = wdata & 32'h8000000f; // @[CSR.scala 1210:62]
+  wire [31:0] _reg_mcountinhibit_T_1 = wdata & 32'hfffffffd; // @[CSR.scala 1230:76]
+  wire [31:0] _GEN_306 = decoded_17 ? _reg_mcountinhibit_T_1 : {{29'd0}, reg_mcountinhibit}; // @[CSR.scala 1230:{47,67} 547:34]
+  wire [63:0] _T_2681 = {value_1[63:32],wdata}; // @[Cat.scala 31:58]
+  wire [63:0] _GEN_307 = decoded_18 ? _T_2681 : {{57'd0}, _GEN_2}; // @[CSR.scala 1555:31 Counters.scala 65:11]
+  wire [63:0] _T_2684 = {wdata,value_1[31:0]}; // @[Cat.scala 31:58]
+  wire [63:0] _GEN_309 = decoded_168 ? _T_2684 : _GEN_307; // @[CSR.scala 1556:31 Counters.scala 65:11]
+  wire [63:0] _T_2686 = {value[63:32],wdata}; // @[Cat.scala 31:58]
+  wire [63:0] _GEN_311 = decoded_19 ? _T_2686 : {{57'd0}, _GEN_0}; // @[CSR.scala 1555:31 Counters.scala 65:11]
+  wire [63:0] _T_2689 = {wdata,value[31:0]}; // @[Cat.scala 31:58]
+  wire [63:0] _GEN_313 = decoded_169 ? _T_2689 : _GEN_311; // @[CSR.scala 1556:31 Counters.scala 65:11]
+  wire [1:0] new_dcsr_prv = wdata[1:0]; // @[CSR.scala 1246:43]
+  wire  new_dcsr_ebreaku = wdata[12]; // @[CSR.scala 1246:43]
+  wire  new_dcsr_ebreaks = wdata[13]; // @[CSR.scala 1246:43]
+  wire  new_dcsr_ebreakm = wdata[15]; // @[CSR.scala 1246:43]
+  wire [1:0] _GEN_324 = decoded_172 ? {{1'd0}, new_mstatus_spp} : _GEN_288; // @[CSR.scala 1261:41 1265:25]
+  wire [31:0] _new_sip_T = ~read_mideleg; // @[CSR.scala 1274:54]
+  wire [31:0] _new_sip_T_1 = _GEN_41 & _new_sip_T; // @[CSR.scala 1274:52]
+  wire [31:0] _new_sip_T_2 = wdata & read_mideleg; // @[CSR.scala 1274:78]
+  wire [31:0] _new_sip_T_3 = _new_sip_T_1 | _new_sip_T_2; // @[CSR.scala 1274:69]
+  wire  new_sip_ssip = _new_sip_T_3[1]; // @[CSR.scala 1274:41]
+  wire [31:0] _reg_mie_T_1 = ~sie_mask; // @[CSR.scala 1287:66]
+  wire [31:0] _reg_mie_T_2 = reg_mie & _reg_mie_T_1; // @[CSR.scala 1287:64]
+  wire [31:0] _reg_mie_T_3 = wdata & sie_mask; // @[CSR.scala 1287:86]
+  wire [31:0] _reg_mie_T_4 = _reg_mie_T_2 | _reg_mie_T_3; // @[CSR.scala 1287:77]
+  wire [31:0] _reg_scause_T = wdata & 32'h8000001f; // @[CSR.scala 1291:64]
+  wire [31:0] _GEN_338 = decoded_0 ? wdata : {{31'd0}, reg_tselect}; // @[CSR.scala 1373:{41,55} 458:24]
+  wire [6:0] newBPC_lo = {reg_bp_0_control_m,1'h0,reg_bp_0_control_s,reg_bp_0_control_u,reg_bp_0_control_x,
+    reg_bp_0_control_w,reg_bp_0_control_r}; // @[CSR.scala 1395:67]
+  wire [31:0] _newBPC_T = {4'h2,reg_bp_0_control_dmode,14'h400,reg_bp_0_control_action,reg_bp_0_control_chain,2'h0,
+    reg_bp_0_control_tmatch,newBPC_lo}; // @[CSR.scala 1395:67]
+  wire [31:0] _newBPC_T_2 = io_rw_cmd[1] ? _newBPC_T : 32'h0; // @[CSR.scala 1540:9]
+  wire [31:0] _newBPC_T_3 = _newBPC_T_2 | io_rw_wdata; // @[CSR.scala 1540:34]
+  wire [31:0] _newBPC_T_8 = _newBPC_T_3 & _wdata_T_6; // @[CSR.scala 1540:43]
+  wire  newBPC_chain = _newBPC_T_8[11]; // @[CSR.scala 1395:96]
+  wire  newBPC_action = _newBPC_T_8[12]; // @[CSR.scala 1395:96]
+  wire  newBPC_dmode = _newBPC_T_8[27]; // @[CSR.scala 1395:96]
+  wire  dMode = newBPC_dmode & reg_debug; // @[CSR.scala 1396:38]
+  wire  _GEN_340 = dMode & newBPC_action; // @[CSR.scala 1398:{120,51,71}]
+  wire  _reg_bp_0_control_chain_T_3 = ~reg_bp_1_control_dmode; // @[CSR.scala 1399:88]
+  wire [6:0] newBPC_lo_1 = {reg_bp_1_control_m,1'h0,reg_bp_1_control_s,reg_bp_1_control_u,reg_bp_1_control_x,
+    reg_bp_1_control_w,reg_bp_1_control_r}; // @[CSR.scala 1395:67]
+  wire [31:0] _newBPC_T_24 = {4'h2,reg_bp_1_control_dmode,14'h400,reg_bp_1_control_action,1'h0,2'h0,
+    reg_bp_1_control_tmatch,newBPC_lo_1}; // @[CSR.scala 1395:67]
+  wire [31:0] _newBPC_T_26 = io_rw_cmd[1] ? _newBPC_T_24 : 32'h0; // @[CSR.scala 1540:9]
+  wire [31:0] _newBPC_T_27 = _newBPC_T_26 | io_rw_wdata; // @[CSR.scala 1540:34]
+  wire [31:0] _newBPC_T_32 = _newBPC_T_27 & _wdata_T_6; // @[CSR.scala 1540:43]
+  wire  newBPC_1_action = _newBPC_T_32[12]; // @[CSR.scala 1395:96]
+  wire  newBPC_1_dmode = _newBPC_T_32[27]; // @[CSR.scala 1395:96]
+  wire  dMode_1 = newBPC_1_dmode & reg_debug & (reg_bp_0_control_dmode | ~reg_bp_0_control_chain); // @[CSR.scala 1396:51]
+  wire  _GEN_373 = dMode_1 & newBPC_1_action; // @[CSR.scala 1398:{120,51,71}]
+  wire  newCfg_r = wdata[0]; // @[CSR.scala 1409:46]
+  wire  newCfg_w = wdata[1]; // @[CSR.scala 1409:46]
+  wire  newCfg_x = wdata[2]; // @[CSR.scala 1409:46]
+  wire [1:0] newCfg_a = wdata[4:3]; // @[CSR.scala 1409:46]
+  wire  newCfg_l = wdata[7]; // @[CSR.scala 1409:46]
+  wire  _T_2707 = ~reg_pmp_1_cfg_a[1] & reg_pmp_1_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_2709 = reg_pmp_0_cfg_l | reg_pmp_1_cfg_l & _T_2707; // @[PMP.scala 50:44]
+  wire [31:0] _GEN_411 = decoded_188 & ~_T_2709 ? wdata : {{3'd0}, reg_pmp_0_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  newCfg_1_r = wdata[8]; // @[CSR.scala 1409:46]
+  wire  newCfg_1_w = wdata[9]; // @[CSR.scala 1409:46]
+  wire  newCfg_1_x = wdata[10]; // @[CSR.scala 1409:46]
+  wire [1:0] newCfg_1_a = wdata[12:11]; // @[CSR.scala 1409:46]
+  wire  newCfg_1_l = wdata[15]; // @[CSR.scala 1409:46]
+  wire  _T_2717 = ~reg_pmp_2_cfg_a[1] & reg_pmp_2_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_2719 = reg_pmp_1_cfg_l | reg_pmp_2_cfg_l & _T_2717; // @[PMP.scala 50:44]
+  wire [31:0] _GEN_418 = decoded_189 & ~_T_2719 ? wdata : {{3'd0}, reg_pmp_1_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  newCfg_2_r = wdata[16]; // @[CSR.scala 1409:46]
+  wire  newCfg_2_w = wdata[17]; // @[CSR.scala 1409:46]
+  wire  newCfg_2_x = wdata[18]; // @[CSR.scala 1409:46]
+  wire [1:0] newCfg_2_a = wdata[20:19]; // @[CSR.scala 1409:46]
+  wire  newCfg_2_l = wdata[23]; // @[CSR.scala 1409:46]
+  wire  _T_2727 = ~reg_pmp_3_cfg_a[1] & reg_pmp_3_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_2729 = reg_pmp_2_cfg_l | reg_pmp_3_cfg_l & _T_2727; // @[PMP.scala 50:44]
+  wire [31:0] _GEN_425 = decoded_190 & ~_T_2729 ? wdata : {{3'd0}, reg_pmp_2_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  newCfg_3_r = wdata[24]; // @[CSR.scala 1409:46]
+  wire  newCfg_3_w = wdata[25]; // @[CSR.scala 1409:46]
+  wire  newCfg_3_x = wdata[26]; // @[CSR.scala 1409:46]
+  wire [1:0] newCfg_3_a = wdata[28:27]; // @[CSR.scala 1409:46]
+  wire  newCfg_3_l = wdata[31]; // @[CSR.scala 1409:46]
+  wire  _T_2737 = ~reg_pmp_4_cfg_a[1] & reg_pmp_4_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_2739 = reg_pmp_3_cfg_l | reg_pmp_4_cfg_l & _T_2737; // @[PMP.scala 50:44]
+  wire [31:0] _GEN_432 = decoded_191 & ~_T_2739 ? wdata : {{3'd0}, reg_pmp_3_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  _T_2747 = ~reg_pmp_5_cfg_a[1] & reg_pmp_5_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_2749 = reg_pmp_4_cfg_l | reg_pmp_5_cfg_l & _T_2747; // @[PMP.scala 50:44]
+  wire [31:0] _GEN_439 = decoded_192 & ~_T_2749 ? wdata : {{3'd0}, reg_pmp_4_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  _T_2757 = ~reg_pmp_6_cfg_a[1] & reg_pmp_6_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_2759 = reg_pmp_5_cfg_l | reg_pmp_6_cfg_l & _T_2757; // @[PMP.scala 50:44]
+  wire [31:0] _GEN_446 = decoded_193 & ~_T_2759 ? wdata : {{3'd0}, reg_pmp_5_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  _T_2767 = ~reg_pmp_7_cfg_a[1] & reg_pmp_7_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_2769 = reg_pmp_6_cfg_l | reg_pmp_7_cfg_l & _T_2767; // @[PMP.scala 50:44]
+  wire [31:0] _GEN_453 = decoded_194 & ~_T_2769 ? wdata : {{3'd0}, reg_pmp_6_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  _T_2779 = reg_pmp_7_cfg_l | reg_pmp_7_cfg_l & _T_2767; // @[PMP.scala 50:44]
+  wire [31:0] _GEN_460 = decoded_195 & ~_T_2779 ? wdata : {{3'd0}, reg_pmp_7_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire [31:0] _reg_custom_0_T = wdata & 32'h208; // @[CSR.scala 1424:23]
+  wire [31:0] _reg_custom_0_T_2 = reg_custom_0 & 32'hfffffdf7; // @[CSR.scala 1424:38]
+  wire [31:0] _reg_custom_0_T_3 = _reg_custom_0_T | _reg_custom_0_T_2; // @[CSR.scala 1424:31]
+  wire [1:0] _GEN_473 = csr_wen ? _GEN_324 : _GEN_264; // @[CSR.scala 1148:18]
+  wire [31:0] _GEN_487 = csr_wen ? _GEN_303 : {{1'd0}, reg_mtvec}; // @[CSR.scala 1148:18 479:27]
+  wire [31:0] _GEN_490 = csr_wen ? _GEN_306 : {{29'd0}, reg_mcountinhibit}; // @[CSR.scala 1148:18 547:34]
+  wire [63:0] _GEN_491 = csr_wen ? _GEN_309 : {{57'd0}, _GEN_2}; // @[CSR.scala 1148:18]
+  wire [63:0] _GEN_493 = csr_wen ? _GEN_313 : {{57'd0}, _GEN_0}; // @[CSR.scala 1148:18]
+  wire [31:0] _GEN_511 = csr_wen ? _GEN_338 : {{31'd0}, reg_tselect}; // @[CSR.scala 1148:18 458:24]
+  wire [31:0] _GEN_550 = csr_wen ? _GEN_411 : {{3'd0}, reg_pmp_0_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [31:0] _GEN_557 = csr_wen ? _GEN_418 : {{3'd0}, reg_pmp_1_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [31:0] _GEN_564 = csr_wen ? _GEN_425 : {{3'd0}, reg_pmp_2_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [31:0] _GEN_571 = csr_wen ? _GEN_432 : {{3'd0}, reg_pmp_3_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [31:0] _GEN_578 = csr_wen ? _GEN_439 : {{3'd0}, reg_pmp_4_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [31:0] _GEN_585 = csr_wen ? _GEN_446 : {{3'd0}, reg_pmp_5_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [31:0] _GEN_592 = csr_wen ? _GEN_453 : {{3'd0}, reg_pmp_6_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [31:0] _GEN_599 = csr_wen ? _GEN_460 : {{3'd0}, reg_pmp_7_addr}; // @[CSR.scala 1148:18 460:20]
+  assign io_rw_rdata = _io_rw_rdata_T_414[31:0]; // @[CSR.scala 1101:15]
+  assign io_decode_0_fp_illegal = io_status_fs == 2'h0 | ~reg_misa[5]; // @[CSR.scala 850:87]
+  assign io_decode_0_fp_csr = 1'h0; // @[CSR.scala 852:19]
+  assign io_decode_0_read_illegal = _io_decode_0_read_illegal_T_18 | _io_decode_0_read_illegal_T_21; // @[CSR.scala 862:68]
+  assign io_decode_0_write_illegal = &addr_1[11:10]; // @[CSR.scala 864:41]
+  assign io_decode_0_write_flush = ~(io_decode_0_write_flush_addr_m >= 12'h340 & io_decode_0_write_flush_addr_m <= 12'h343
+    ); // @[CSR.scala 867:7]
+  assign io_decode_0_system_illegal = _io_decode_0_system_illegal_T_8 | _io_decode_0_system_illegal_T_14; // @[CSR.scala 871:29]
+  assign io_csr_stall = reg_wfi | io_status_cease; // @[CSR.scala 1091:27]
+  assign io_eret = _exception_T | insn_ret; // @[CSR.scala 933:38]
+  assign io_singleStep = reg_dcsr_step & _T_401; // @[CSR.scala 934:34]
+  assign io_status_debug = reg_debug; // @[CSR.scala 937:19]
+  assign io_status_cease = io_status_cease_r; // @[CSR.scala 1092:19]
+  assign io_status_wfi = reg_wfi; // @[CSR.scala 1093:17]
+  assign io_status_isa = reg_misa; // @[CSR.scala 938:17]
+  assign io_status_dprv = reg_mstatus_mprv & _T_401 ? reg_mstatus_mpp : reg_mstatus_prv; // @[CSR.scala 941:24]
+  assign io_status_dv = 1'h0; // @[CSR.scala 942:39]
+  assign io_status_prv = reg_mstatus_prv; // @[CSR.scala 935:13]
+  assign io_status_v = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_sd = &io_status_fs | &io_status_xs | &io_status_vs; // @[CSR.scala 936:58]
+  assign io_status_zero2 = 23'h0; // @[CSR.scala 935:13]
+  assign io_status_mpv = 1'h0; // @[CSR.scala 944:17]
+  assign io_status_gva = reg_mstatus_gva; // @[CSR.scala 945:17]
+  assign io_status_mbe = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_sbe = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_sxl = 2'h1; // @[CSR.scala 940:17]
+  assign io_status_uxl = 2'h1; // @[CSR.scala 939:17]
+  assign io_status_sd_rv32 = io_status_sd; // @[CSR.scala 943:35]
+  assign io_status_zero1 = 8'h0; // @[CSR.scala 935:13]
+  assign io_status_tsr = reg_mstatus_tsr; // @[CSR.scala 935:13]
+  assign io_status_tw = reg_mstatus_tw; // @[CSR.scala 935:13]
+  assign io_status_tvm = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_mxr = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_sum = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_mprv = reg_mstatus_mprv; // @[CSR.scala 935:13]
+  assign io_status_xs = 2'h0; // @[CSR.scala 935:13]
+  assign io_status_fs = reg_mstatus_fs; // @[CSR.scala 935:13]
+  assign io_status_mpp = reg_mstatus_mpp; // @[CSR.scala 935:13]
+  assign io_status_vs = 2'h0; // @[CSR.scala 935:13]
+  assign io_status_spp = reg_mstatus_spp; // @[CSR.scala 935:13]
+  assign io_status_mpie = reg_mstatus_mpie; // @[CSR.scala 935:13]
+  assign io_status_ube = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_spie = reg_mstatus_spie; // @[CSR.scala 935:13]
+  assign io_status_upie = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_mie = reg_mstatus_mie; // @[CSR.scala 935:13]
+  assign io_status_hie = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_sie = reg_mstatus_sie; // @[CSR.scala 935:13]
+  assign io_status_uie = 1'h0; // @[CSR.scala 935:13]
+  assign io_evec = insn_ret ? _GEN_250 : tvec; // @[CSR.scala 1045:19 929:11]
+  assign io_time = value_1[31:0]; // @[CSR.scala 1090:11]
+  assign io_interrupt = (anyInterrupt & ~io_singleStep | reg_singleStepped) & ~(reg_debug | io_status_cease); // @[CSR.scala 583:73]
+  assign io_interrupt_cause = 32'h80000000 + _GEN_639; // @[CSR.scala 582:67]
+  assign io_bp_0_control_action = reg_bp_0_control_action; // @[CSR.scala 585:9]
+  assign io_bp_0_control_chain = reg_bp_0_control_chain; // @[CSR.scala 585:9]
+  assign io_bp_0_control_tmatch = reg_bp_0_control_tmatch; // @[CSR.scala 585:9]
+  assign io_bp_0_control_m = reg_bp_0_control_m; // @[CSR.scala 585:9]
+  assign io_bp_0_control_s = reg_bp_0_control_s; // @[CSR.scala 585:9]
+  assign io_bp_0_control_u = reg_bp_0_control_u; // @[CSR.scala 585:9]
+  assign io_bp_0_control_x = reg_bp_0_control_x; // @[CSR.scala 585:9]
+  assign io_bp_0_control_w = reg_bp_0_control_w; // @[CSR.scala 585:9]
+  assign io_bp_0_control_r = reg_bp_0_control_r; // @[CSR.scala 585:9]
+  assign io_bp_0_address = reg_bp_0_address; // @[CSR.scala 585:9]
+  assign io_bp_1_control_action = reg_bp_1_control_action; // @[CSR.scala 585:9]
+  assign io_bp_1_control_tmatch = reg_bp_1_control_tmatch; // @[CSR.scala 585:9]
+  assign io_bp_1_control_m = reg_bp_1_control_m; // @[CSR.scala 585:9]
+  assign io_bp_1_control_s = reg_bp_1_control_s; // @[CSR.scala 585:9]
+  assign io_bp_1_control_u = reg_bp_1_control_u; // @[CSR.scala 585:9]
+  assign io_bp_1_control_x = reg_bp_1_control_x; // @[CSR.scala 585:9]
+  assign io_bp_1_control_w = reg_bp_1_control_w; // @[CSR.scala 585:9]
+  assign io_bp_1_control_r = reg_bp_1_control_r; // @[CSR.scala 585:9]
+  assign io_bp_1_address = reg_bp_1_address; // @[CSR.scala 585:9]
+  assign io_pmp_0_cfg_l = reg_pmp_0_cfg_l; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_0_cfg_a = reg_pmp_0_cfg_a; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_0_cfg_x = reg_pmp_0_cfg_x; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_0_cfg_w = reg_pmp_0_cfg_w; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_0_cfg_r = reg_pmp_0_cfg_r; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_0_addr = reg_pmp_0_addr; // @[PMP.scala 25:19 27:14]
+  assign io_pmp_0_mask = _pmp_mask_T_4[30:0]; // @[PMP.scala 25:19 28:14]
+  assign io_pmp_1_cfg_l = reg_pmp_1_cfg_l; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_1_cfg_a = reg_pmp_1_cfg_a; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_1_cfg_x = reg_pmp_1_cfg_x; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_1_cfg_w = reg_pmp_1_cfg_w; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_1_cfg_r = reg_pmp_1_cfg_r; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_1_addr = reg_pmp_1_addr; // @[PMP.scala 25:19 27:14]
+  assign io_pmp_1_mask = _pmp_mask_T_9[30:0]; // @[PMP.scala 25:19 28:14]
+  assign io_pmp_2_cfg_l = reg_pmp_2_cfg_l; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_2_cfg_a = reg_pmp_2_cfg_a; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_2_cfg_x = reg_pmp_2_cfg_x; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_2_cfg_w = reg_pmp_2_cfg_w; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_2_cfg_r = reg_pmp_2_cfg_r; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_2_addr = reg_pmp_2_addr; // @[PMP.scala 25:19 27:14]
+  assign io_pmp_2_mask = _pmp_mask_T_14[30:0]; // @[PMP.scala 25:19 28:14]
+  assign io_pmp_3_cfg_l = reg_pmp_3_cfg_l; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_3_cfg_a = reg_pmp_3_cfg_a; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_3_cfg_x = reg_pmp_3_cfg_x; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_3_cfg_w = reg_pmp_3_cfg_w; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_3_cfg_r = reg_pmp_3_cfg_r; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_3_addr = reg_pmp_3_addr; // @[PMP.scala 25:19 27:14]
+  assign io_pmp_3_mask = _pmp_mask_T_19[30:0]; // @[PMP.scala 25:19 28:14]
+  assign io_pmp_4_cfg_l = reg_pmp_4_cfg_l; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_4_cfg_a = reg_pmp_4_cfg_a; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_4_cfg_x = reg_pmp_4_cfg_x; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_4_cfg_w = reg_pmp_4_cfg_w; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_4_cfg_r = reg_pmp_4_cfg_r; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_4_addr = reg_pmp_4_addr; // @[PMP.scala 25:19 27:14]
+  assign io_pmp_4_mask = _pmp_mask_T_24[30:0]; // @[PMP.scala 25:19 28:14]
+  assign io_pmp_5_cfg_l = reg_pmp_5_cfg_l; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_5_cfg_a = reg_pmp_5_cfg_a; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_5_cfg_x = reg_pmp_5_cfg_x; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_5_cfg_w = reg_pmp_5_cfg_w; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_5_cfg_r = reg_pmp_5_cfg_r; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_5_addr = reg_pmp_5_addr; // @[PMP.scala 25:19 27:14]
+  assign io_pmp_5_mask = _pmp_mask_T_29[30:0]; // @[PMP.scala 25:19 28:14]
+  assign io_pmp_6_cfg_l = reg_pmp_6_cfg_l; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_6_cfg_a = reg_pmp_6_cfg_a; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_6_cfg_x = reg_pmp_6_cfg_x; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_6_cfg_w = reg_pmp_6_cfg_w; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_6_cfg_r = reg_pmp_6_cfg_r; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_6_addr = reg_pmp_6_addr; // @[PMP.scala 25:19 27:14]
+  assign io_pmp_6_mask = _pmp_mask_T_34[30:0]; // @[PMP.scala 25:19 28:14]
+  assign io_pmp_7_cfg_l = reg_pmp_7_cfg_l; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_7_cfg_a = reg_pmp_7_cfg_a; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_7_cfg_x = reg_pmp_7_cfg_x; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_7_cfg_w = reg_pmp_7_cfg_w; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_7_cfg_r = reg_pmp_7_cfg_r; // @[PMP.scala 25:19 26:13]
+  assign io_pmp_7_addr = reg_pmp_7_addr; // @[PMP.scala 25:19 27:14]
+  assign io_pmp_7_mask = _pmp_mask_T_39[30:0]; // @[PMP.scala 25:19 28:14]
+  assign io_inhibit_cycle = reg_mcountinhibit[0]; // @[CSR.scala 548:40]
+  assign io_trace_0_valid = io_retire > 1'h0 | io_trace_0_exception; // @[CSR.scala 1519:30]
+  assign io_trace_0_iaddr = io_pc; // @[CSR.scala 1521:13]
+  assign io_trace_0_insn = io_inst_0; // @[CSR.scala 1520:12]
+  assign io_trace_0_exception = insn_call | insn_break | io_exception; // @[CSR.scala 953:43]
+  assign io_customCSRs_0_value = reg_custom_0; // @[CSR.scala 1098:14]
+  always @(posedge clock) begin
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_prv <= 2'h3; // @[CSR.scala 369:24]
+    end else if (new_prv == 2'h2) begin // @[CSR.scala 1544:29]
+      reg_mstatus_prv <= 2'h0;
+    end else if (insn_ret) begin // @[CSR.scala 1045:19]
+      if (~io_rw_addr[9]) begin // @[CSR.scala 1047:52]
+        reg_mstatus_prv <= {{1'd0}, reg_mstatus_spp};
+      end else begin
+        reg_mstatus_prv <= _GEN_236;
+      end
+    end else if (exception) begin // @[CSR.scala 967:20]
+      reg_mstatus_prv <= _GEN_150;
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_gva <= 1'h0; // @[CSR.scala 369:24]
+    end else if (exception) begin // @[CSR.scala 967:20]
+      if (!(trapToDebug)) begin // @[CSR.scala 968:24]
+        if (!(delegate)) begin // @[CSR.scala 997:35]
+          reg_mstatus_gva <= io_gva; // @[CSR.scala 1013:23]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_tsr <= 1'h0; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_5) begin // @[CSR.scala 1152:39]
+        reg_mstatus_tsr <= new_mstatus_tsr; // @[CSR.scala 1165:27]
+      end
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_tw <= 1'h0; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_5) begin // @[CSR.scala 1152:39]
+        reg_mstatus_tw <= new_mstatus_tw; // @[CSR.scala 1164:26]
+      end
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_mprv <= 1'h0; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_5) begin // @[CSR.scala 1152:39]
+        reg_mstatus_mprv <= new_mstatus_mprv; // @[CSR.scala 1158:26]
+      end else begin
+        reg_mstatus_mprv <= _GEN_278;
+      end
+    end else begin
+      reg_mstatus_mprv <= _GEN_278;
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_fs <= 2'h0; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_172) begin // @[CSR.scala 1261:41]
+        reg_mstatus_fs <= _reg_mstatus_fs_T_2; // @[CSR.scala 1266:24]
+      end else if (decoded_5) begin // @[CSR.scala 1152:39]
+        reg_mstatus_fs <= _reg_mstatus_fs_T_2; // @[CSR.scala 1178:55]
+      end
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_mpp <= 2'h3; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_5) begin // @[CSR.scala 1152:39]
+        if (new_mstatus_mpp == 2'h2) begin // @[CSR.scala 1544:29]
+          reg_mstatus_mpp <= 2'h0;
+        end else begin
+          reg_mstatus_mpp <= new_mstatus_mpp;
+        end
+      end else begin
+        reg_mstatus_mpp <= _GEN_275;
+      end
+    end else begin
+      reg_mstatus_mpp <= _GEN_275;
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_spp <= 1'h0; // @[CSR.scala 369:24]
+    end else begin
+      reg_mstatus_spp <= _GEN_473[0];
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_mpie <= 1'h0; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_5) begin // @[CSR.scala 1152:39]
+        reg_mstatus_mpie <= new_mstatus_mpie; // @[CSR.scala 1155:24]
+      end else begin
+        reg_mstatus_mpie <= _GEN_274;
+      end
+    end else begin
+      reg_mstatus_mpie <= _GEN_274;
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_spie <= 1'h0; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_172) begin // @[CSR.scala 1261:41]
+        reg_mstatus_spie <= new_mstatus_spie; // @[CSR.scala 1264:26]
+      end else if (decoded_5) begin // @[CSR.scala 1152:39]
+        reg_mstatus_spie <= new_mstatus_spie; // @[CSR.scala 1162:28]
+      end else begin
+        reg_mstatus_spie <= _GEN_263;
+      end
+    end else begin
+      reg_mstatus_spie <= _GEN_263;
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_mie <= 1'h0; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_5) begin // @[CSR.scala 1152:39]
+        reg_mstatus_mie <= new_mstatus_mie; // @[CSR.scala 1154:23]
+      end else begin
+        reg_mstatus_mie <= _GEN_273;
+      end
+    end else begin
+      reg_mstatus_mie <= _GEN_273;
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_sie <= 1'h0; // @[CSR.scala 369:24]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_172) begin // @[CSR.scala 1261:41]
+        reg_mstatus_sie <= new_mstatus_sie; // @[CSR.scala 1263:25]
+      end else if (decoded_5) begin // @[CSR.scala 1152:39]
+        reg_mstatus_sie <= new_mstatus_sie; // @[CSR.scala 1163:27]
+      end else begin
+        reg_mstatus_sie <= _GEN_262;
+      end
+    end else begin
+      reg_mstatus_sie <= _GEN_262;
+    end
+    if (reset) begin // @[CSR.scala 377:21]
+      reg_dcsr_prv <= 2'h3; // @[CSR.scala 377:21]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_14) begin // @[CSR.scala 1245:38]
+        if (new_dcsr_prv == 2'h2) begin // @[CSR.scala 1544:29]
+          reg_dcsr_prv <= 2'h0;
+        end else begin
+          reg_dcsr_prv <= new_dcsr_prv;
+        end
+      end else begin
+        reg_dcsr_prv <= _GEN_185;
+      end
+    end else begin
+      reg_dcsr_prv <= _GEN_185;
+    end
+    if (_io_interrupt_T) begin // @[CSR.scala 961:25]
+      reg_singleStepped <= 1'h0; // @[CSR.scala 961:45]
+    end else begin
+      reg_singleStepped <= _GEN_48;
+    end
+    if (reset) begin // @[CSR.scala 377:21]
+      reg_dcsr_ebreakm <= 1'h0; // @[CSR.scala 377:21]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_14) begin // @[CSR.scala 1245:38]
+        reg_dcsr_ebreakm <= new_dcsr_ebreakm; // @[CSR.scala 1248:26]
+      end
+    end
+    if (reset) begin // @[CSR.scala 377:21]
+      reg_dcsr_ebreaks <= 1'h0; // @[CSR.scala 377:21]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_14) begin // @[CSR.scala 1245:38]
+        reg_dcsr_ebreaks <= new_dcsr_ebreaks; // @[CSR.scala 1249:47]
+      end
+    end
+    if (reset) begin // @[CSR.scala 377:21]
+      reg_dcsr_ebreaku <= 1'h0; // @[CSR.scala 377:21]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_14) begin // @[CSR.scala 1245:38]
+        reg_dcsr_ebreaku <= new_dcsr_ebreaku; // @[CSR.scala 1250:41]
+      end
+    end
+    if (reset) begin // @[CSR.scala 449:22]
+      reg_debug <= 1'h0; // @[CSR.scala 449:22]
+    end else if (insn_ret) begin // @[CSR.scala 1045:19]
+      if (~io_rw_addr[9]) begin // @[CSR.scala 1047:52]
+        reg_debug <= _GEN_182;
+      end else if (io_rw_addr[10] & io_rw_addr[7]) begin // @[CSR.scala 1064:70]
+        reg_debug <= 1'h0; // @[CSR.scala 1067:17]
+      end else begin
+        reg_debug <= _GEN_182;
+      end
+    end else begin
+      reg_debug <= _GEN_182;
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_182) begin // @[CSR.scala 1293:42]
+        reg_mideleg <= wdata; // @[CSR.scala 1293:56]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_183) begin // @[CSR.scala 1294:42]
+        reg_medeleg <= wdata; // @[CSR.scala 1294:56]
+      end
+    end
+    if (reset) begin // @[CSR.scala 377:21]
+      reg_dcsr_cause <= 3'h0; // @[CSR.scala 377:21]
+    end else if (exception) begin // @[CSR.scala 967:20]
+      if (trapToDebug) begin // @[CSR.scala 968:24]
+        if (~reg_debug) begin // @[CSR.scala 969:25]
+          reg_dcsr_cause <= _reg_dcsr_cause_T_2; // @[CSR.scala 973:24]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 377:21]
+      reg_dcsr_step <= 1'h0; // @[CSR.scala 377:21]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_14) begin // @[CSR.scala 1245:38]
+        reg_dcsr_step <= wdata[2]; // @[CSR.scala 1247:23]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_15) begin // @[CSR.scala 1254:42]
+        reg_dpc <= _reg_mepc_T_2; // @[CSR.scala 1254:52]
+      end else begin
+        reg_dpc <= _GEN_183;
+      end
+    end else begin
+      reg_dpc <= _GEN_183;
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_16) begin // @[CSR.scala 1255:42]
+        reg_dscratch <= wdata; // @[CSR.scala 1255:57]
+      end
+    end
+    reg_tselect <= _GEN_511[0];
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_0_control_dmode <= 1'h0; // @[CSR.scala 1499:17]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_dmode <= dMode; // @[CSR.scala 1397:30]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_0_control_action <= 1'h0; // @[CSR.scala 1498:18]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_action <= _GEN_340;
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_0_control_chain <= 1'h0; // @[CSR.scala 1500:17]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_chain <= newBPC_chain & (dMode | ~reg_bp_1_control_dmode); // @[CSR.scala 1399:30]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_tmatch <= wdata[8:7]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_m <= wdata[6]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_s <= wdata[4]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_u <= wdata[3]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_0_control_x <= 1'h0; // @[CSR.scala 1503:13]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_x <= wdata[2]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_0_control_w <= 1'h0; // @[CSR.scala 1502:13]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_w <= wdata[1]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_0_control_r <= 1'h0; // @[CSR.scala 1501:13]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_0_control_r <= wdata[0]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~reg_tselect & (~reg_bp_0_control_dmode | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_2) begin // @[CSR.scala 1377:44]
+          reg_bp_0_address <= wdata; // @[CSR.scala 1377:57]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_1_control_dmode <= 1'h0; // @[CSR.scala 1499:17]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_dmode <= dMode_1; // @[CSR.scala 1397:30]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_1_control_action <= 1'h0; // @[CSR.scala 1498:18]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_action <= _GEN_373;
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_tmatch <= wdata[8:7]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_m <= wdata[6]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_s <= wdata[4]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_u <= wdata[3]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_1_control_x <= 1'h0; // @[CSR.scala 1503:13]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_x <= wdata[2]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_1_control_w <= 1'h0; // @[CSR.scala 1502:13]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_w <= wdata[1]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1497:18]
+      reg_bp_1_control_r <= 1'h0; // @[CSR.scala 1501:13]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_1) begin // @[CSR.scala 1388:44]
+          reg_bp_1_control_r <= wdata[0]; // @[CSR.scala 1389:24]
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (reg_tselect & (_reg_bp_0_control_chain_T_3 | reg_debug)) begin // @[CSR.scala 1376:70]
+        if (decoded_2) begin // @[CSR.scala 1377:44]
+          reg_bp_1_address <= wdata; // @[CSR.scala 1377:57]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_0_cfg_l <= 1'h0; // @[PMP.scala 39:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_0_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_0_cfg_l <= newCfg_l; // @[CSR.scala 1410:17]
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_0_cfg_a <= 2'h0; // @[PMP.scala 38:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_0_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_0_cfg_a <= newCfg_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_0_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_0_cfg_x <= newCfg_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_0_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_0_cfg_w <= newCfg_w & newCfg_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_0_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_0_cfg_r <= newCfg_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_0_addr <= _GEN_550[28:0];
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_1_cfg_l <= 1'h0; // @[PMP.scala 39:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_1_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_1_cfg_l <= newCfg_1_l; // @[CSR.scala 1410:17]
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_1_cfg_a <= 2'h0; // @[PMP.scala 38:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_1_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_1_cfg_a <= newCfg_1_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_1_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_1_cfg_x <= newCfg_1_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_1_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_1_cfg_w <= newCfg_1_w & newCfg_1_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_1_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_1_cfg_r <= newCfg_1_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_1_addr <= _GEN_557[28:0];
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_2_cfg_l <= 1'h0; // @[PMP.scala 39:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_2_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_2_cfg_l <= newCfg_2_l; // @[CSR.scala 1410:17]
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_2_cfg_a <= 2'h0; // @[PMP.scala 38:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_2_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_2_cfg_a <= newCfg_2_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_2_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_2_cfg_x <= newCfg_2_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_2_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_2_cfg_w <= newCfg_2_w & newCfg_2_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_2_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_2_cfg_r <= newCfg_2_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_2_addr <= _GEN_564[28:0];
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_3_cfg_l <= 1'h0; // @[PMP.scala 39:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_3_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_3_cfg_l <= newCfg_3_l; // @[CSR.scala 1410:17]
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_3_cfg_a <= 2'h0; // @[PMP.scala 38:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_3_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_3_cfg_a <= newCfg_3_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_3_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_3_cfg_x <= newCfg_3_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_3_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_3_cfg_w <= newCfg_3_w & newCfg_3_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_184 & ~reg_pmp_3_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_3_cfg_r <= newCfg_3_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_3_addr <= _GEN_571[28:0];
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_4_cfg_l <= 1'h0; // @[PMP.scala 39:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_l <= newCfg_l; // @[CSR.scala 1410:17]
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_4_cfg_a <= 2'h0; // @[PMP.scala 38:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_a <= newCfg_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_x <= newCfg_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_w <= newCfg_w & newCfg_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_r <= newCfg_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_4_addr <= _GEN_578[28:0];
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_5_cfg_l <= 1'h0; // @[PMP.scala 39:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_l <= newCfg_1_l; // @[CSR.scala 1410:17]
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_5_cfg_a <= 2'h0; // @[PMP.scala 38:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_a <= newCfg_1_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_x <= newCfg_1_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_w <= newCfg_1_w & newCfg_1_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_r <= newCfg_1_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_5_addr <= _GEN_585[28:0];
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_6_cfg_l <= 1'h0; // @[PMP.scala 39:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_l <= newCfg_2_l; // @[CSR.scala 1410:17]
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_6_cfg_a <= 2'h0; // @[PMP.scala 38:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_a <= newCfg_2_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_x <= newCfg_2_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_w <= newCfg_2_w & newCfg_2_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_r <= newCfg_2_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_6_addr <= _GEN_592[28:0];
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_7_cfg_l <= 1'h0; // @[PMP.scala 39:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_l <= newCfg_3_l; // @[CSR.scala 1410:17]
+      end
+    end
+    if (reset) begin // @[CSR.scala 1514:18]
+      reg_pmp_7_cfg_a <= 2'h0; // @[PMP.scala 38:11]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_a <= newCfg_3_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_x <= newCfg_3_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_w <= newCfg_3_w & newCfg_3_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_185 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_r <= newCfg_3_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_7_addr <= _GEN_599[28:0];
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_174) begin // @[CSR.scala 1287:42]
+        reg_mie <= _reg_mie_T_4; // @[CSR.scala 1287:52]
+      end else if (decoded_8) begin // @[CSR.scala 1205:40]
+        reg_mie <= _reg_mie_T; // @[CSR.scala 1205:50]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_7) begin // @[CSR.scala 1190:35]
+        reg_mip_seip <= new_mip_seip; // @[CSR.scala 1199:22]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_7) begin // @[CSR.scala 1190:35]
+        reg_mip_stip <= new_mip_stip; // @[CSR.scala 1198:22]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_173) begin // @[CSR.scala 1273:37]
+        reg_mip_ssip <= new_sip_ssip; // @[CSR.scala 1275:22]
+      end else if (decoded_7) begin // @[CSR.scala 1190:35]
+        reg_mip_ssip <= new_mip_ssip; // @[CSR.scala 1197:22]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_10) begin // @[CSR.scala 1206:40]
+        reg_mepc <= _reg_mepc_T_2; // @[CSR.scala 1206:51]
+      end else begin
+        reg_mepc <= _GEN_211;
+      end
+    end else begin
+      reg_mepc <= _GEN_211;
+    end
+    if (reset) begin // @[CSR.scala 473:27]
+      reg_mcause <= 32'h0; // @[CSR.scala 473:27]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_12) begin // @[CSR.scala 1210:40]
+        reg_mcause <= _reg_mcause_T; // @[CSR.scala 1210:53]
+      end else begin
+        reg_mcause <= _GEN_212;
+      end
+    end else begin
+      reg_mcause <= _GEN_212;
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_11) begin // @[CSR.scala 1211:40]
+        reg_mtval <= wdata; // @[CSR.scala 1211:52]
+      end else begin
+        reg_mtval <= _GEN_213;
+      end
+    end else begin
+      reg_mtval <= _GEN_213;
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_9) begin // @[CSR.scala 1207:40]
+        reg_mscratch <= wdata; // @[CSR.scala 1207:55]
+      end
+    end
+    if (reset) begin // @[CSR.scala 479:27]
+      reg_mtvec <= 31'h0; // @[CSR.scala 479:27]
+    end else begin
+      reg_mtvec <= _GEN_487[30:0];
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_165) begin // @[CSR.scala 1370:44]
+        reg_mcounteren <= wdata; // @[CSR.scala 1370:61]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_181) begin // @[CSR.scala 1295:44]
+        reg_scounteren <= wdata; // @[CSR.scala 1295:61]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_179) begin // @[CSR.scala 1289:42]
+        reg_sepc <= _reg_mepc_T_2; // @[CSR.scala 1289:53]
+      end else begin
+        reg_sepc <= _GEN_202;
+      end
+    end else begin
+      reg_sepc <= _GEN_202;
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_176) begin // @[CSR.scala 1291:42]
+        reg_scause <= _reg_scause_T; // @[CSR.scala 1291:55]
+      end else begin
+        reg_scause <= _GEN_203;
+      end
+    end else begin
+      reg_scause <= _GEN_203;
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_177) begin // @[CSR.scala 1292:42]
+        reg_stval <= wdata; // @[CSR.scala 1292:54]
+      end else begin
+        reg_stval <= _GEN_204;
+      end
+    end else begin
+      reg_stval <= _GEN_204;
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_175) begin // @[CSR.scala 1288:42]
+        reg_sscratch <= wdata; // @[CSR.scala 1288:57]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_180) begin // @[CSR.scala 1290:42]
+        reg_stvec <= wdata; // @[CSR.scala 1290:54]
+      end
+    end
+    if (reset) begin // @[CSR.scala 547:34]
+      reg_mcountinhibit <= 3'h0; // @[CSR.scala 547:34]
+    end else begin
+      reg_mcountinhibit <= _GEN_490[2:0];
+    end
+    if (reset) begin // @[Counters.scala 45:37]
+      small_ <= 6'h0; // @[Counters.scala 45:37]
+    end else begin
+      small_ <= _GEN_493[5:0];
+    end
+    if (reset) begin // @[Counters.scala 50:27]
+      large_ <= 58'h0; // @[Counters.scala 50:27]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_169) begin // @[CSR.scala 1556:31]
+        large_ <= _T_2689[63:6]; // @[Counters.scala 66:23]
+      end else if (decoded_19) begin // @[CSR.scala 1555:31]
+        large_ <= _T_2686[63:6]; // @[Counters.scala 66:23]
+      end else begin
+        large_ <= _GEN_1;
+      end
+    end else begin
+      large_ <= _GEN_1;
+    end
+    if (reset) begin // @[CSR.scala 605:21]
+      reg_misa <= 32'h40941105; // @[CSR.scala 605:21]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_4) begin // @[CSR.scala 1181:36]
+        if (~io_pc[1] | wdata[2]) begin // @[CSR.scala 1185:64]
+          reg_misa <= _reg_misa_T_8; // @[CSR.scala 1187:20]
+        end
+      end
+    end
+    if (reset) begin // @[CSR.scala 750:43]
+      reg_custom_0 <= 32'h208; // @[CSR.scala 750:43]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_204) begin // @[CSR.scala 1423:35]
+        reg_custom_0 <= _reg_custom_0_T_3; // @[CSR.scala 1424:13]
+      end
+    end
+    if (reset) begin // @[Reg.scala 28:20]
+      io_status_cease_r <= 1'h0; // @[Reg.scala 28:20]
+    end else begin
+      io_status_cease_r <= _GEN_279;
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_373 <= 3'h1) & ~reset) begin
+          $fatal; // @[CSR.scala 954:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(_T_373 <= 3'h1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: these conditions must be mutually exclusive\n    at CSR.scala:954 assert(PopCount(insn_ret :: insn_call :: insn_break :: io.exception :: Nil) <= 1, \"these conditions must be mutually exclusive\")\n"
+            ); // @[CSR.scala 954:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~reg_singleStepped | ~io_retire) & _T_377) begin
+          $fatal; // @[CSR.scala 963:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_377 & ~(~reg_singleStepped | ~io_retire)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at CSR.scala:963 assert(!reg_singleStepped || io.retire === UInt(0))\n"); // @[CSR.scala 963:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+  always @(posedge io_ungated_clock) begin
+    if (reset) begin // @[CSR.scala 538:50]
+      reg_wfi <= 1'h0; // @[CSR.scala 538:50]
+    end else if (|pending_interrupts | io_interrupts_debug | exception) begin // @[CSR.scala 957:69]
+      reg_wfi <= 1'h0; // @[CSR.scala 957:79]
+    end else begin
+      reg_wfi <= _GEN_46;
+    end
+    if (reset) begin // @[Counters.scala 45:37]
+      small_1 <= 6'h0; // @[Counters.scala 45:37]
+    end else begin
+      small_1 <= _GEN_491[5:0];
+    end
+    if (reset) begin // @[Counters.scala 50:27]
+      large_1 <= 58'h0; // @[Counters.scala 50:27]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_168) begin // @[CSR.scala 1556:31]
+        large_1 <= _T_2684[63:6]; // @[Counters.scala 66:23]
+      end else if (decoded_18) begin // @[CSR.scala 1555:31]
+        large_1 <= _T_2681[63:6]; // @[Counters.scala 66:23]
+      end else begin
+        large_1 <= _GEN_3;
+      end
+    end else begin
+      large_1 <= _GEN_3;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  reg_mstatus_prv = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  reg_mstatus_gva = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  reg_mstatus_tsr = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  reg_mstatus_tw = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  reg_mstatus_mprv = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  reg_mstatus_fs = _RAND_5[1:0];
+  _RAND_6 = {1{`RANDOM}};
+  reg_mstatus_mpp = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  reg_mstatus_spp = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  reg_mstatus_mpie = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  reg_mstatus_spie = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  reg_mstatus_mie = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  reg_mstatus_sie = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  reg_dcsr_prv = _RAND_12[1:0];
+  _RAND_13 = {1{`RANDOM}};
+  reg_singleStepped = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  reg_dcsr_ebreakm = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  reg_dcsr_ebreaks = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  reg_dcsr_ebreaku = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  reg_debug = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  reg_mideleg = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  reg_medeleg = _RAND_19[31:0];
+  _RAND_20 = {1{`RANDOM}};
+  reg_dcsr_cause = _RAND_20[2:0];
+  _RAND_21 = {1{`RANDOM}};
+  reg_dcsr_step = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  reg_dpc = _RAND_22[31:0];
+  _RAND_23 = {1{`RANDOM}};
+  reg_dscratch = _RAND_23[31:0];
+  _RAND_24 = {1{`RANDOM}};
+  reg_tselect = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  reg_bp_0_control_dmode = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  reg_bp_0_control_action = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  reg_bp_0_control_chain = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  reg_bp_0_control_tmatch = _RAND_28[1:0];
+  _RAND_29 = {1{`RANDOM}};
+  reg_bp_0_control_m = _RAND_29[0:0];
+  _RAND_30 = {1{`RANDOM}};
+  reg_bp_0_control_s = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  reg_bp_0_control_u = _RAND_31[0:0];
+  _RAND_32 = {1{`RANDOM}};
+  reg_bp_0_control_x = _RAND_32[0:0];
+  _RAND_33 = {1{`RANDOM}};
+  reg_bp_0_control_w = _RAND_33[0:0];
+  _RAND_34 = {1{`RANDOM}};
+  reg_bp_0_control_r = _RAND_34[0:0];
+  _RAND_35 = {1{`RANDOM}};
+  reg_bp_0_address = _RAND_35[31:0];
+  _RAND_36 = {1{`RANDOM}};
+  reg_bp_1_control_dmode = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  reg_bp_1_control_action = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  reg_bp_1_control_tmatch = _RAND_38[1:0];
+  _RAND_39 = {1{`RANDOM}};
+  reg_bp_1_control_m = _RAND_39[0:0];
+  _RAND_40 = {1{`RANDOM}};
+  reg_bp_1_control_s = _RAND_40[0:0];
+  _RAND_41 = {1{`RANDOM}};
+  reg_bp_1_control_u = _RAND_41[0:0];
+  _RAND_42 = {1{`RANDOM}};
+  reg_bp_1_control_x = _RAND_42[0:0];
+  _RAND_43 = {1{`RANDOM}};
+  reg_bp_1_control_w = _RAND_43[0:0];
+  _RAND_44 = {1{`RANDOM}};
+  reg_bp_1_control_r = _RAND_44[0:0];
+  _RAND_45 = {1{`RANDOM}};
+  reg_bp_1_address = _RAND_45[31:0];
+  _RAND_46 = {1{`RANDOM}};
+  reg_pmp_0_cfg_l = _RAND_46[0:0];
+  _RAND_47 = {1{`RANDOM}};
+  reg_pmp_0_cfg_a = _RAND_47[1:0];
+  _RAND_48 = {1{`RANDOM}};
+  reg_pmp_0_cfg_x = _RAND_48[0:0];
+  _RAND_49 = {1{`RANDOM}};
+  reg_pmp_0_cfg_w = _RAND_49[0:0];
+  _RAND_50 = {1{`RANDOM}};
+  reg_pmp_0_cfg_r = _RAND_50[0:0];
+  _RAND_51 = {1{`RANDOM}};
+  reg_pmp_0_addr = _RAND_51[28:0];
+  _RAND_52 = {1{`RANDOM}};
+  reg_pmp_1_cfg_l = _RAND_52[0:0];
+  _RAND_53 = {1{`RANDOM}};
+  reg_pmp_1_cfg_a = _RAND_53[1:0];
+  _RAND_54 = {1{`RANDOM}};
+  reg_pmp_1_cfg_x = _RAND_54[0:0];
+  _RAND_55 = {1{`RANDOM}};
+  reg_pmp_1_cfg_w = _RAND_55[0:0];
+  _RAND_56 = {1{`RANDOM}};
+  reg_pmp_1_cfg_r = _RAND_56[0:0];
+  _RAND_57 = {1{`RANDOM}};
+  reg_pmp_1_addr = _RAND_57[28:0];
+  _RAND_58 = {1{`RANDOM}};
+  reg_pmp_2_cfg_l = _RAND_58[0:0];
+  _RAND_59 = {1{`RANDOM}};
+  reg_pmp_2_cfg_a = _RAND_59[1:0];
+  _RAND_60 = {1{`RANDOM}};
+  reg_pmp_2_cfg_x = _RAND_60[0:0];
+  _RAND_61 = {1{`RANDOM}};
+  reg_pmp_2_cfg_w = _RAND_61[0:0];
+  _RAND_62 = {1{`RANDOM}};
+  reg_pmp_2_cfg_r = _RAND_62[0:0];
+  _RAND_63 = {1{`RANDOM}};
+  reg_pmp_2_addr = _RAND_63[28:0];
+  _RAND_64 = {1{`RANDOM}};
+  reg_pmp_3_cfg_l = _RAND_64[0:0];
+  _RAND_65 = {1{`RANDOM}};
+  reg_pmp_3_cfg_a = _RAND_65[1:0];
+  _RAND_66 = {1{`RANDOM}};
+  reg_pmp_3_cfg_x = _RAND_66[0:0];
+  _RAND_67 = {1{`RANDOM}};
+  reg_pmp_3_cfg_w = _RAND_67[0:0];
+  _RAND_68 = {1{`RANDOM}};
+  reg_pmp_3_cfg_r = _RAND_68[0:0];
+  _RAND_69 = {1{`RANDOM}};
+  reg_pmp_3_addr = _RAND_69[28:0];
+  _RAND_70 = {1{`RANDOM}};
+  reg_pmp_4_cfg_l = _RAND_70[0:0];
+  _RAND_71 = {1{`RANDOM}};
+  reg_pmp_4_cfg_a = _RAND_71[1:0];
+  _RAND_72 = {1{`RANDOM}};
+  reg_pmp_4_cfg_x = _RAND_72[0:0];
+  _RAND_73 = {1{`RANDOM}};
+  reg_pmp_4_cfg_w = _RAND_73[0:0];
+  _RAND_74 = {1{`RANDOM}};
+  reg_pmp_4_cfg_r = _RAND_74[0:0];
+  _RAND_75 = {1{`RANDOM}};
+  reg_pmp_4_addr = _RAND_75[28:0];
+  _RAND_76 = {1{`RANDOM}};
+  reg_pmp_5_cfg_l = _RAND_76[0:0];
+  _RAND_77 = {1{`RANDOM}};
+  reg_pmp_5_cfg_a = _RAND_77[1:0];
+  _RAND_78 = {1{`RANDOM}};
+  reg_pmp_5_cfg_x = _RAND_78[0:0];
+  _RAND_79 = {1{`RANDOM}};
+  reg_pmp_5_cfg_w = _RAND_79[0:0];
+  _RAND_80 = {1{`RANDOM}};
+  reg_pmp_5_cfg_r = _RAND_80[0:0];
+  _RAND_81 = {1{`RANDOM}};
+  reg_pmp_5_addr = _RAND_81[28:0];
+  _RAND_82 = {1{`RANDOM}};
+  reg_pmp_6_cfg_l = _RAND_82[0:0];
+  _RAND_83 = {1{`RANDOM}};
+  reg_pmp_6_cfg_a = _RAND_83[1:0];
+  _RAND_84 = {1{`RANDOM}};
+  reg_pmp_6_cfg_x = _RAND_84[0:0];
+  _RAND_85 = {1{`RANDOM}};
+  reg_pmp_6_cfg_w = _RAND_85[0:0];
+  _RAND_86 = {1{`RANDOM}};
+  reg_pmp_6_cfg_r = _RAND_86[0:0];
+  _RAND_87 = {1{`RANDOM}};
+  reg_pmp_6_addr = _RAND_87[28:0];
+  _RAND_88 = {1{`RANDOM}};
+  reg_pmp_7_cfg_l = _RAND_88[0:0];
+  _RAND_89 = {1{`RANDOM}};
+  reg_pmp_7_cfg_a = _RAND_89[1:0];
+  _RAND_90 = {1{`RANDOM}};
+  reg_pmp_7_cfg_x = _RAND_90[0:0];
+  _RAND_91 = {1{`RANDOM}};
+  reg_pmp_7_cfg_w = _RAND_91[0:0];
+  _RAND_92 = {1{`RANDOM}};
+  reg_pmp_7_cfg_r = _RAND_92[0:0];
+  _RAND_93 = {1{`RANDOM}};
+  reg_pmp_7_addr = _RAND_93[28:0];
+  _RAND_94 = {1{`RANDOM}};
+  reg_mie = _RAND_94[31:0];
+  _RAND_95 = {1{`RANDOM}};
+  reg_mip_seip = _RAND_95[0:0];
+  _RAND_96 = {1{`RANDOM}};
+  reg_mip_stip = _RAND_96[0:0];
+  _RAND_97 = {1{`RANDOM}};
+  reg_mip_ssip = _RAND_97[0:0];
+  _RAND_98 = {1{`RANDOM}};
+  reg_mepc = _RAND_98[31:0];
+  _RAND_99 = {1{`RANDOM}};
+  reg_mcause = _RAND_99[31:0];
+  _RAND_100 = {1{`RANDOM}};
+  reg_mtval = _RAND_100[31:0];
+  _RAND_101 = {1{`RANDOM}};
+  reg_mscratch = _RAND_101[31:0];
+  _RAND_102 = {1{`RANDOM}};
+  reg_mtvec = _RAND_102[30:0];
+  _RAND_103 = {1{`RANDOM}};
+  reg_mcounteren = _RAND_103[31:0];
+  _RAND_104 = {1{`RANDOM}};
+  reg_scounteren = _RAND_104[31:0];
+  _RAND_105 = {1{`RANDOM}};
+  reg_sepc = _RAND_105[31:0];
+  _RAND_106 = {1{`RANDOM}};
+  reg_scause = _RAND_106[31:0];
+  _RAND_107 = {1{`RANDOM}};
+  reg_stval = _RAND_107[31:0];
+  _RAND_108 = {1{`RANDOM}};
+  reg_sscratch = _RAND_108[31:0];
+  _RAND_109 = {1{`RANDOM}};
+  reg_stvec = _RAND_109[31:0];
+  _RAND_110 = {1{`RANDOM}};
+  reg_wfi = _RAND_110[0:0];
+  _RAND_111 = {1{`RANDOM}};
+  reg_mcountinhibit = _RAND_111[2:0];
+  _RAND_112 = {1{`RANDOM}};
+  small_ = _RAND_112[5:0];
+  _RAND_113 = {2{`RANDOM}};
+  large_ = _RAND_113[57:0];
+  _RAND_114 = {1{`RANDOM}};
+  small_1 = _RAND_114[5:0];
+  _RAND_115 = {2{`RANDOM}};
+  large_1 = _RAND_115[57:0];
+  _RAND_116 = {1{`RANDOM}};
+  reg_misa = _RAND_116[31:0];
+  _RAND_117 = {1{`RANDOM}};
+  reg_custom_0 = _RAND_117[31:0];
+  _RAND_118 = {1{`RANDOM}};
+  io_status_cease_r = _RAND_118[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module BreakpointUnit(
+  input         io_status_debug,
+  input  [1:0]  io_status_prv,
+  input         io_bp_0_control_action,
+  input         io_bp_0_control_chain,
+  input  [1:0]  io_bp_0_control_tmatch,
+  input         io_bp_0_control_m,
+  input         io_bp_0_control_s,
+  input         io_bp_0_control_u,
+  input         io_bp_0_control_x,
+  input         io_bp_0_control_w,
+  input         io_bp_0_control_r,
+  input  [31:0] io_bp_0_address,
+  input         io_bp_1_control_action,
+  input  [1:0]  io_bp_1_control_tmatch,
+  input         io_bp_1_control_m,
+  input         io_bp_1_control_s,
+  input         io_bp_1_control_u,
+  input         io_bp_1_control_x,
+  input         io_bp_1_control_w,
+  input         io_bp_1_control_r,
+  input  [31:0] io_bp_1_address,
+  input  [31:0] io_pc,
+  input  [31:0] io_ea,
+  output        io_xcpt_if,
+  output        io_xcpt_ld,
+  output        io_xcpt_st,
+  output        io_debug_if,
+  output        io_debug_ld,
+  output        io_debug_st
+);
+  wire [3:0] _en_T_1 = {io_bp_0_control_m,1'h0,io_bp_0_control_s,io_bp_0_control_u}; // @[Cat.scala 31:58]
+  wire [3:0] _en_T_2 = _en_T_1 >> io_status_prv; // @[Breakpoint.scala 31:68]
+  wire  en = ~io_status_debug & _en_T_2[0]; // @[Breakpoint.scala 31:50]
+  wire  _r_T_4 = io_ea >= io_bp_0_address ^ io_bp_0_control_tmatch[0]; // @[Breakpoint.scala 66:20]
+  wire [31:0] _r_T_5 = ~io_ea; // @[Breakpoint.scala 63:6]
+  wire  _r_T_8 = io_bp_0_control_tmatch[0] & io_bp_0_address[0]; // @[Breakpoint.scala 60:73]
+  wire  _r_T_10 = io_bp_0_control_tmatch[0] & io_bp_0_address[0] & io_bp_0_address[1]; // @[Breakpoint.scala 60:73]
+  wire  _r_T_12 = io_bp_0_control_tmatch[0] & io_bp_0_address[0] & io_bp_0_address[1] & io_bp_0_address[2]; // @[Breakpoint.scala 60:73]
+  wire [3:0] _r_T_13 = {_r_T_12,_r_T_10,_r_T_8,io_bp_0_control_tmatch[0]}; // @[Cat.scala 31:58]
+  wire [31:0] _GEN_22 = {{28'd0}, _r_T_13}; // @[Breakpoint.scala 63:9]
+  wire [31:0] _r_T_14 = _r_T_5 | _GEN_22; // @[Breakpoint.scala 63:9]
+  wire [31:0] _r_T_15 = ~io_bp_0_address; // @[Breakpoint.scala 63:24]
+  wire [31:0] _r_T_24 = _r_T_15 | _GEN_22; // @[Breakpoint.scala 63:33]
+  wire  _r_T_25 = _r_T_14 == _r_T_24; // @[Breakpoint.scala 63:19]
+  wire  _r_T_26 = io_bp_0_control_tmatch[1] ? _r_T_4 : _r_T_25; // @[Breakpoint.scala 69:8]
+  wire  r = en & io_bp_0_control_r & _r_T_26; // @[Breakpoint.scala 107:32]
+  wire  w = en & io_bp_0_control_w & _r_T_26; // @[Breakpoint.scala 108:32]
+  wire  _x_T_4 = io_pc >= io_bp_0_address ^ io_bp_0_control_tmatch[0]; // @[Breakpoint.scala 66:20]
+  wire [31:0] _x_T_5 = ~io_pc; // @[Breakpoint.scala 63:6]
+  wire [31:0] _x_T_14 = _x_T_5 | _GEN_22; // @[Breakpoint.scala 63:9]
+  wire  _x_T_25 = _x_T_14 == _r_T_24; // @[Breakpoint.scala 63:19]
+  wire  _x_T_26 = io_bp_0_control_tmatch[1] ? _x_T_4 : _x_T_25; // @[Breakpoint.scala 69:8]
+  wire  x = en & io_bp_0_control_x & _x_T_26; // @[Breakpoint.scala 109:32]
+  wire  end_ = ~io_bp_0_control_chain; // @[Breakpoint.scala 110:15]
+  wire  _io_xcpt_ld_T = ~io_bp_0_control_action; // @[Breakpoint.scala 119:51]
+  wire  _GEN_0 = end_ & r & ~io_bp_0_control_action; // @[Breakpoint.scala 119:{27,40} 98:14]
+  wire  _GEN_1 = end_ & r & io_bp_0_control_action; // @[Breakpoint.scala 101:15 119:{27,73}]
+  wire  _GEN_3 = end_ & w & _io_xcpt_ld_T; // @[Breakpoint.scala 120:{27,40} 99:14]
+  wire  _GEN_4 = end_ & w & io_bp_0_control_action; // @[Breakpoint.scala 102:15 120:{27,73}]
+  wire  _GEN_7 = end_ & x & _io_xcpt_ld_T; // @[Breakpoint.scala 121:{27,40} 97:14]
+  wire  _GEN_8 = end_ & x & io_bp_0_control_action; // @[Breakpoint.scala 100:15 121:{27,73}]
+  wire  _T_6 = end_ | r; // @[Breakpoint.scala 123:10]
+  wire  _T_7 = end_ | w; // @[Breakpoint.scala 123:20]
+  wire  _T_8 = end_ | x; // @[Breakpoint.scala 123:30]
+  wire [3:0] _en_T_5 = {io_bp_1_control_m,1'h0,io_bp_1_control_s,io_bp_1_control_u}; // @[Cat.scala 31:58]
+  wire [3:0] _en_T_6 = _en_T_5 >> io_status_prv; // @[Breakpoint.scala 31:68]
+  wire  en_1 = ~io_status_debug & _en_T_6[0]; // @[Breakpoint.scala 31:50]
+  wire  _r_T_32 = io_ea >= io_bp_1_address ^ io_bp_1_control_tmatch[0]; // @[Breakpoint.scala 66:20]
+  wire  _r_T_36 = io_bp_1_control_tmatch[0] & io_bp_1_address[0]; // @[Breakpoint.scala 60:73]
+  wire  _r_T_38 = io_bp_1_control_tmatch[0] & io_bp_1_address[0] & io_bp_1_address[1]; // @[Breakpoint.scala 60:73]
+  wire  _r_T_40 = io_bp_1_control_tmatch[0] & io_bp_1_address[0] & io_bp_1_address[1] & io_bp_1_address[2]; // @[Breakpoint.scala 60:73]
+  wire [3:0] _r_T_41 = {_r_T_40,_r_T_38,_r_T_36,io_bp_1_control_tmatch[0]}; // @[Cat.scala 31:58]
+  wire [31:0] _GEN_28 = {{28'd0}, _r_T_41}; // @[Breakpoint.scala 63:9]
+  wire [31:0] _r_T_42 = _r_T_5 | _GEN_28; // @[Breakpoint.scala 63:9]
+  wire [31:0] _r_T_43 = ~io_bp_1_address; // @[Breakpoint.scala 63:24]
+  wire [31:0] _r_T_52 = _r_T_43 | _GEN_28; // @[Breakpoint.scala 63:33]
+  wire  _r_T_53 = _r_T_42 == _r_T_52; // @[Breakpoint.scala 63:19]
+  wire  _r_T_54 = io_bp_1_control_tmatch[1] ? _r_T_32 : _r_T_53; // @[Breakpoint.scala 69:8]
+  wire  r_1 = en_1 & io_bp_1_control_r & _r_T_54; // @[Breakpoint.scala 107:32]
+  wire  w_1 = en_1 & io_bp_1_control_w & _r_T_54; // @[Breakpoint.scala 108:32]
+  wire  _x_T_32 = io_pc >= io_bp_1_address ^ io_bp_1_control_tmatch[0]; // @[Breakpoint.scala 66:20]
+  wire [31:0] _x_T_42 = _x_T_5 | _GEN_28; // @[Breakpoint.scala 63:9]
+  wire  _x_T_53 = _x_T_42 == _r_T_52; // @[Breakpoint.scala 63:19]
+  wire  _x_T_54 = io_bp_1_control_tmatch[1] ? _x_T_32 : _x_T_53; // @[Breakpoint.scala 69:8]
+  wire  x_1 = en_1 & io_bp_1_control_x & _x_T_54; // @[Breakpoint.scala 109:32]
+  wire  _io_xcpt_ld_T_1 = ~io_bp_1_control_action; // @[Breakpoint.scala 119:51]
+  assign io_xcpt_if = x_1 & _T_8 ? _io_xcpt_ld_T_1 : _GEN_7; // @[Breakpoint.scala 121:{27,40}]
+  assign io_xcpt_ld = r_1 & _T_6 ? ~io_bp_1_control_action : _GEN_0; // @[Breakpoint.scala 119:{27,40}]
+  assign io_xcpt_st = w_1 & _T_7 ? _io_xcpt_ld_T_1 : _GEN_3; // @[Breakpoint.scala 120:{27,40}]
+  assign io_debug_if = x_1 & _T_8 ? io_bp_1_control_action : _GEN_8; // @[Breakpoint.scala 121:{27,73}]
+  assign io_debug_ld = r_1 & _T_6 ? io_bp_1_control_action : _GEN_1; // @[Breakpoint.scala 119:{27,73}]
+  assign io_debug_st = w_1 & _T_7 ? io_bp_1_control_action : _GEN_4; // @[Breakpoint.scala 120:{27,73}]
+endmodule
+module ALU(
+  input  [3:0]  io_fn,
+  input  [31:0] io_in2,
+  input  [31:0] io_in1,
+  output [31:0] io_out,
+  output [31:0] io_adder_out,
+  output        io_cmp_out
+);
+  wire [31:0] _in2_inv_T_1 = ~io_in2; // @[ALU.scala 61:35]
+  wire [31:0] in2_inv = io_fn[3] ? _in2_inv_T_1 : io_in2; // @[ALU.scala 61:20]
+  wire [31:0] in1_xor_in2 = io_in1 ^ in2_inv; // @[ALU.scala 62:28]
+  wire [31:0] _io_adder_out_T_1 = io_in1 + in2_inv; // @[ALU.scala 63:26]
+  wire [31:0] _GEN_0 = {{31'd0}, io_fn[3]}; // @[ALU.scala 63:36]
+  wire  _slt_T_7 = io_fn[1] ? io_in2[31] : io_in1[31]; // @[ALU.scala 68:8]
+  wire  slt = io_in1[31] == io_in2[31] ? io_adder_out[31] : _slt_T_7; // @[ALU.scala 67:8]
+  wire  _io_cmp_out_T_2 = ~io_fn[3]; // @[ALU.scala 44:26]
+  wire  _io_cmp_out_T_4 = _io_cmp_out_T_2 ? in1_xor_in2 == 32'h0 : slt; // @[ALU.scala 69:41]
+  wire [4:0] shamt = io_in2[4:0]; // @[ALU.scala 73:28]
+  wire  _shin_T_2 = io_fn == 4'h5 | io_fn == 4'hb; // @[ALU.scala 81:35]
+  wire [31:0] _GEN_1 = {{16'd0}, io_in1[31:16]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_6 = _GEN_1 & 32'hffff; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_8 = {io_in1[15:0], 16'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shin_T_10 = _shin_T_8 & 32'hffff0000; // @[Bitwise.scala 105:80]
+  wire [31:0] _shin_T_11 = _shin_T_6 | _shin_T_10; // @[Bitwise.scala 105:39]
+  wire [31:0] _GEN_2 = {{8'd0}, _shin_T_11[31:8]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_16 = _GEN_2 & 32'hff00ff; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_18 = {_shin_T_11[23:0], 8'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shin_T_20 = _shin_T_18 & 32'hff00ff00; // @[Bitwise.scala 105:80]
+  wire [31:0] _shin_T_21 = _shin_T_16 | _shin_T_20; // @[Bitwise.scala 105:39]
+  wire [31:0] _GEN_3 = {{4'd0}, _shin_T_21[31:4]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_26 = _GEN_3 & 32'hf0f0f0f; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_28 = {_shin_T_21[27:0], 4'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shin_T_30 = _shin_T_28 & 32'hf0f0f0f0; // @[Bitwise.scala 105:80]
+  wire [31:0] _shin_T_31 = _shin_T_26 | _shin_T_30; // @[Bitwise.scala 105:39]
+  wire [31:0] _GEN_4 = {{2'd0}, _shin_T_31[31:2]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_36 = _GEN_4 & 32'h33333333; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_38 = {_shin_T_31[29:0], 2'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shin_T_40 = _shin_T_38 & 32'hcccccccc; // @[Bitwise.scala 105:80]
+  wire [31:0] _shin_T_41 = _shin_T_36 | _shin_T_40; // @[Bitwise.scala 105:39]
+  wire [31:0] _GEN_5 = {{1'd0}, _shin_T_41[31:1]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_46 = _GEN_5 & 32'h55555555; // @[Bitwise.scala 105:31]
+  wire [31:0] _shin_T_48 = {_shin_T_41[30:0], 1'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shin_T_50 = _shin_T_48 & 32'haaaaaaaa; // @[Bitwise.scala 105:80]
+  wire [31:0] _shin_T_51 = _shin_T_46 | _shin_T_50; // @[Bitwise.scala 105:39]
+  wire [31:0] shin = io_fn == 4'h5 | io_fn == 4'hb ? io_in1 : _shin_T_51; // @[ALU.scala 81:17]
+  wire  _shout_r_T_2 = io_fn[3] & shin[31]; // @[ALU.scala 82:35]
+  wire [32:0] _shout_r_T_4 = {_shout_r_T_2,shin}; // @[ALU.scala 82:57]
+  wire [32:0] _shout_r_T_5 = $signed(_shout_r_T_4) >>> shamt; // @[ALU.scala 82:64]
+  wire [31:0] shout_r = _shout_r_T_5[31:0]; // @[ALU.scala 82:73]
+  wire [31:0] _GEN_6 = {{16'd0}, shout_r[31:16]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_3 = _GEN_6 & 32'hffff; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_5 = {shout_r[15:0], 16'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shout_l_T_7 = _shout_l_T_5 & 32'hffff0000; // @[Bitwise.scala 105:80]
+  wire [31:0] _shout_l_T_8 = _shout_l_T_3 | _shout_l_T_7; // @[Bitwise.scala 105:39]
+  wire [31:0] _GEN_7 = {{8'd0}, _shout_l_T_8[31:8]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_13 = _GEN_7 & 32'hff00ff; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_15 = {_shout_l_T_8[23:0], 8'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shout_l_T_17 = _shout_l_T_15 & 32'hff00ff00; // @[Bitwise.scala 105:80]
+  wire [31:0] _shout_l_T_18 = _shout_l_T_13 | _shout_l_T_17; // @[Bitwise.scala 105:39]
+  wire [31:0] _GEN_8 = {{4'd0}, _shout_l_T_18[31:4]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_23 = _GEN_8 & 32'hf0f0f0f; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_25 = {_shout_l_T_18[27:0], 4'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shout_l_T_27 = _shout_l_T_25 & 32'hf0f0f0f0; // @[Bitwise.scala 105:80]
+  wire [31:0] _shout_l_T_28 = _shout_l_T_23 | _shout_l_T_27; // @[Bitwise.scala 105:39]
+  wire [31:0] _GEN_9 = {{2'd0}, _shout_l_T_28[31:2]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_33 = _GEN_9 & 32'h33333333; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_35 = {_shout_l_T_28[29:0], 2'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shout_l_T_37 = _shout_l_T_35 & 32'hcccccccc; // @[Bitwise.scala 105:80]
+  wire [31:0] _shout_l_T_38 = _shout_l_T_33 | _shout_l_T_37; // @[Bitwise.scala 105:39]
+  wire [31:0] _GEN_10 = {{1'd0}, _shout_l_T_38[31:1]}; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_43 = _GEN_10 & 32'h55555555; // @[Bitwise.scala 105:31]
+  wire [31:0] _shout_l_T_45 = {_shout_l_T_38[30:0], 1'h0}; // @[Bitwise.scala 105:70]
+  wire [31:0] _shout_l_T_47 = _shout_l_T_45 & 32'haaaaaaaa; // @[Bitwise.scala 105:80]
+  wire [31:0] shout_l = _shout_l_T_43 | _shout_l_T_47; // @[Bitwise.scala 105:39]
+  wire [31:0] _shout_T_3 = _shin_T_2 ? shout_r : 32'h0; // @[ALU.scala 84:18]
+  wire [31:0] _shout_T_5 = io_fn == 4'h1 ? shout_l : 32'h0; // @[ALU.scala 85:18]
+  wire [31:0] shout = _shout_T_3 | _shout_T_5; // @[ALU.scala 84:74]
+  wire  _logic_T_1 = io_fn == 4'h6; // @[ALU.scala 88:45]
+  wire [31:0] _logic_T_3 = io_fn == 4'h4 | io_fn == 4'h6 ? in1_xor_in2 : 32'h0; // @[ALU.scala 88:18]
+  wire [31:0] _logic_T_7 = io_in1 & io_in2; // @[ALU.scala 89:63]
+  wire [31:0] _logic_T_8 = _logic_T_1 | io_fn == 4'h7 ? _logic_T_7 : 32'h0; // @[ALU.scala 89:18]
+  wire [31:0] logic_ = _logic_T_3 | _logic_T_8; // @[ALU.scala 88:78]
+  wire  _shift_logic_T = io_fn >= 4'hc; // @[ALU.scala 41:30]
+  wire  _shift_logic_T_1 = _shift_logic_T & slt; // @[ALU.scala 90:35]
+  wire [31:0] _GEN_11 = {{31'd0}, _shift_logic_T_1}; // @[ALU.scala 90:43]
+  wire [31:0] _shift_logic_T_2 = _GEN_11 | logic_; // @[ALU.scala 90:43]
+  wire [31:0] shift_logic = _shift_logic_T_2 | shout; // @[ALU.scala 90:51]
+  assign io_out = io_fn == 4'h0 | io_fn == 4'ha ? io_adder_out : shift_logic; // @[ALU.scala 91:16]
+  assign io_adder_out = _io_adder_out_T_1 + _GEN_0; // @[ALU.scala 63:36]
+  assign io_cmp_out = io_fn[0] ^ _io_cmp_out_T_4; // @[ALU.scala 69:36]
+endmodule
+module MulDiv(
+  input         clock,
+  input         reset,
+  output        io_req_ready,
+  input         io_req_valid,
+  input  [3:0]  io_req_bits_fn,
+  input  [31:0] io_req_bits_in1,
+  input  [31:0] io_req_bits_in2,
+  input  [4:0]  io_req_bits_tag,
+  input         io_kill,
+  input         io_resp_ready,
+  output        io_resp_valid,
+  output [31:0] io_resp_bits_data,
+  output [4:0]  io_resp_bits_tag
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [63:0] _RAND_6;
+  reg [95:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] state; // @[Multiplier.scala 50:22]
+  reg [4:0] req_tag; // @[Multiplier.scala 52:16]
+  reg [5:0] count; // @[Multiplier.scala 53:18]
+  reg  neg_out; // @[Multiplier.scala 56:20]
+  reg  isHi; // @[Multiplier.scala 57:17]
+  reg  resHi; // @[Multiplier.scala 58:18]
+  reg [32:0] divisor; // @[Multiplier.scala 59:20]
+  reg [65:0] remainder; // @[Multiplier.scala 60:22]
+  wire [3:0] _T = io_req_bits_fn & 4'h4; // @[Decode.scala 14:65]
+  wire  cmdMul = _T == 4'h0; // @[Decode.scala 14:121]
+  wire [3:0] _T_3 = io_req_bits_fn & 4'h5; // @[Decode.scala 14:65]
+  wire  _T_4 = _T_3 == 4'h1; // @[Decode.scala 14:121]
+  wire [3:0] _T_5 = io_req_bits_fn & 4'h2; // @[Decode.scala 14:65]
+  wire  _T_6 = _T_5 == 4'h2; // @[Decode.scala 14:121]
+  wire  cmdHi = _T_4 | _T_6; // @[Decode.scala 15:30]
+  wire [3:0] _T_9 = io_req_bits_fn & 4'h6; // @[Decode.scala 14:65]
+  wire  _T_10 = _T_9 == 4'h0; // @[Decode.scala 14:121]
+  wire [3:0] _T_11 = io_req_bits_fn & 4'h1; // @[Decode.scala 14:65]
+  wire  _T_12 = _T_11 == 4'h0; // @[Decode.scala 14:121]
+  wire  lhsSigned = _T_10 | _T_12; // @[Decode.scala 15:30]
+  wire  _T_16 = _T_3 == 4'h4; // @[Decode.scala 14:121]
+  wire  rhsSigned = _T_10 | _T_16; // @[Decode.scala 15:30]
+  wire  lhs_sign = lhsSigned & io_req_bits_in1[31]; // @[Multiplier.scala 80:23]
+  wire [15:0] hi = io_req_bits_in1[31:16]; // @[Multiplier.scala 81:43]
+  wire [31:0] lhs_in = {hi,io_req_bits_in1[15:0]}; // @[Cat.scala 31:58]
+  wire  rhs_sign = rhsSigned & io_req_bits_in2[31]; // @[Multiplier.scala 80:23]
+  wire [15:0] hi_1 = io_req_bits_in2[31:16]; // @[Multiplier.scala 81:43]
+  wire [32:0] subtractor = remainder[64:32] - divisor; // @[Multiplier.scala 87:37]
+  wire [31:0] result = resHi ? remainder[64:33] : remainder[31:0]; // @[Multiplier.scala 88:19]
+  wire [31:0] negated_remainder = 32'h0 - result; // @[Multiplier.scala 89:27]
+  wire [65:0] _GEN_0 = remainder[31] ? {{34'd0}, negated_remainder} : remainder; // @[Multiplier.scala 92:27 93:17 60:22]
+  wire [65:0] _GEN_2 = state == 3'h1 ? _GEN_0 : remainder; // @[Multiplier.scala 60:22 91:57]
+  wire [2:0] _GEN_4 = state == 3'h1 ? 3'h3 : state; // @[Multiplier.scala 91:57 98:11 50:22]
+  wire [2:0] _GEN_6 = state == 3'h5 ? 3'h7 : _GEN_4; // @[Multiplier.scala 100:57 102:11]
+  wire  _GEN_7 = state == 3'h5 ? 1'h0 : resHi; // @[Multiplier.scala 100:57 103:11 58:18]
+  wire [64:0] mulReg = {remainder[65:33],remainder[31:0]}; // @[Cat.scala 31:58]
+  wire  mplierSign = remainder[32]; // @[Multiplier.scala 107:31]
+  wire [31:0] mplier = mulReg[31:0]; // @[Multiplier.scala 108:24]
+  wire [32:0] accum = mulReg[64:32]; // @[Multiplier.scala 109:37]
+  wire [8:0] _prod_T_2 = {mplierSign,mplier[7:0]}; // @[Multiplier.scala 111:60]
+  wire [41:0] _prod_T_3 = $signed(_prod_T_2) * $signed(divisor); // @[Multiplier.scala 111:67]
+  wire [41:0] _GEN_35 = {{9{accum[32]}},accum}; // @[Multiplier.scala 111:76]
+  wire [41:0] nextMulReg_hi = $signed(_prod_T_3) + $signed(_GEN_35); // @[Cat.scala 31:58]
+  wire [65:0] nextMulReg = {nextMulReg_hi,mplier[31:8]}; // @[Cat.scala 31:58]
+  wire  nextMplierSign = count == 6'h2 & neg_out; // @[Multiplier.scala 113:57]
+  wire  _eOut_T_4 = ~isHi; // @[Multiplier.scala 117:7]
+  wire [64:0] nextMulReg1 = {nextMulReg[64:32],nextMulReg[31:0]}; // @[Cat.scala 31:58]
+  wire [65:0] _remainder_T_2 = {nextMulReg1[64:32],nextMplierSign,nextMulReg1[31:0]}; // @[Cat.scala 31:58]
+  wire [5:0] _count_T_1 = count + 6'h1; // @[Multiplier.scala 122:20]
+  wire [2:0] _GEN_8 = count == 6'h3 ? 3'h6 : _GEN_6; // @[Multiplier.scala 123:51 124:13]
+  wire  _GEN_9 = count == 6'h3 ? isHi : _GEN_7; // @[Multiplier.scala 123:51 125:13]
+  wire [2:0] _GEN_12 = state == 3'h2 ? _GEN_8 : _GEN_6; // @[Multiplier.scala 105:50]
+  wire  _GEN_13 = state == 3'h2 ? _GEN_9 : _GEN_7; // @[Multiplier.scala 105:50]
+  wire  unrolls_less = subtractor[32]; // @[Multiplier.scala 132:28]
+  wire [31:0] _unrolls_T_2 = unrolls_less ? remainder[63:32] : subtractor[31:0]; // @[Multiplier.scala 133:14]
+  wire  _unrolls_T_4 = ~unrolls_less; // @[Multiplier.scala 133:67]
+  wire [64:0] unrolls_0 = {_unrolls_T_2,remainder[31:0],_unrolls_T_4}; // @[Cat.scala 31:58]
+  wire [2:0] _state_T = neg_out ? 3'h5 : 3'h7; // @[Multiplier.scala 138:19]
+  wire [2:0] _GEN_14 = count == 6'h20 ? _state_T : _GEN_12; // @[Multiplier.scala 137:38 138:13]
+  wire  divby0 = count == 6'h0 & _unrolls_T_4; // @[Multiplier.scala 145:30]
+  wire  _T_36 = io_resp_ready & io_resp_valid; // @[Decoupled.scala 50:35]
+  wire  _T_38 = io_req_ready & io_req_valid; // @[Decoupled.scala 50:35]
+  wire [32:0] _divisor_T = {rhs_sign,hi_1,io_req_bits_in2[15:0]}; // @[Cat.scala 31:58]
+  wire [15:0] loOut = result[15:0]; // @[Multiplier.scala 175:82]
+  assign io_req_ready = state == 3'h0; // @[Multiplier.scala 181:25]
+  assign io_resp_valid = state == 3'h6 | state == 3'h7; // @[Multiplier.scala 180:42]
+  assign io_resp_bits_data = {result[31:16],loOut}; // @[Cat.scala 31:58]
+  assign io_resp_bits_tag = req_tag; // @[Multiplier.scala 177:20]
+  always @(posedge clock) begin
+    if (reset) begin // @[Multiplier.scala 50:22]
+      state <= 3'h0; // @[Multiplier.scala 50:22]
+    end else if (_T_38) begin // @[Multiplier.scala 163:24]
+      if (cmdMul) begin // @[Multiplier.scala 164:17]
+        state <= 3'h2;
+      end else if (lhs_sign | rhs_sign) begin // @[Multiplier.scala 164:36]
+        state <= 3'h1;
+      end else begin
+        state <= 3'h3;
+      end
+    end else if (_T_36 | io_kill) begin // @[Multiplier.scala 160:36]
+      state <= 3'h0; // @[Multiplier.scala 161:11]
+    end else if (state == 3'h3) begin // @[Multiplier.scala 128:50]
+      state <= _GEN_14;
+    end else begin
+      state <= _GEN_12;
+    end
+    if (_T_38) begin // @[Multiplier.scala 163:24]
+      req_tag <= io_req_bits_tag; // @[Multiplier.scala 171:9]
+    end
+    if (_T_38) begin // @[Multiplier.scala 163:24]
+      count <= 6'h0; // @[Multiplier.scala 167:11]
+    end else if (state == 3'h3) begin // @[Multiplier.scala 128:50]
+      count <= _count_T_1; // @[Multiplier.scala 143:11]
+    end else if (state == 3'h2) begin // @[Multiplier.scala 105:50]
+      count <= _count_T_1; // @[Multiplier.scala 122:11]
+    end
+    if (_T_38) begin // @[Multiplier.scala 163:24]
+      if (cmdHi) begin // @[Multiplier.scala 168:19]
+        neg_out <= lhs_sign;
+      end else begin
+        neg_out <= lhs_sign != rhs_sign;
+      end
+    end else if (state == 3'h3) begin // @[Multiplier.scala 128:50]
+      if (divby0 & _eOut_T_4) begin // @[Multiplier.scala 158:28]
+        neg_out <= 1'h0; // @[Multiplier.scala 158:38]
+      end
+    end
+    if (_T_38) begin // @[Multiplier.scala 163:24]
+      isHi <= cmdHi; // @[Multiplier.scala 165:10]
+    end
+    if (_T_38) begin // @[Multiplier.scala 163:24]
+      resHi <= 1'h0; // @[Multiplier.scala 166:11]
+    end else if (state == 3'h3) begin // @[Multiplier.scala 128:50]
+      if (count == 6'h20) begin // @[Multiplier.scala 137:38]
+        resHi <= isHi; // @[Multiplier.scala 139:13]
+      end else begin
+        resHi <= _GEN_13;
+      end
+    end else begin
+      resHi <= _GEN_13;
+    end
+    if (_T_38) begin // @[Multiplier.scala 163:24]
+      divisor <= _divisor_T; // @[Multiplier.scala 169:13]
+    end else if (state == 3'h1) begin // @[Multiplier.scala 91:57]
+      if (divisor[31]) begin // @[Multiplier.scala 95:25]
+        divisor <= subtractor; // @[Multiplier.scala 96:15]
+      end
+    end
+    if (_T_38) begin // @[Multiplier.scala 163:24]
+      remainder <= {{34'd0}, lhs_in}; // @[Multiplier.scala 170:15]
+    end else if (state == 3'h3) begin // @[Multiplier.scala 128:50]
+      remainder <= {{1'd0}, unrolls_0}; // @[Multiplier.scala 136:15]
+    end else if (state == 3'h2) begin // @[Multiplier.scala 105:50]
+      remainder <= _remainder_T_2; // @[Multiplier.scala 120:15]
+    end else if (state == 3'h5) begin // @[Multiplier.scala 100:57]
+      remainder <= {{34'd0}, negated_remainder}; // @[Multiplier.scala 101:15]
+    end else begin
+      remainder <= _GEN_2;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  state = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  req_tag = _RAND_1[4:0];
+  _RAND_2 = {1{`RANDOM}};
+  count = _RAND_2[5:0];
+  _RAND_3 = {1{`RANDOM}};
+  neg_out = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  isHi = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  resHi = _RAND_5[0:0];
+  _RAND_6 = {2{`RANDOM}};
+  divisor = _RAND_6[32:0];
+  _RAND_7 = {3{`RANDOM}};
+  remainder = _RAND_7[65:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module PlusArgTimeout(
+  input         clock,
+  input         reset,
+  input  [31:0] io_count
+);
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 62:19]
+  wire  _T = plusarg_reader_out > 32'h0; // @[PlusArg.scala 63:13]
+  plusarg_reader #(.FORMAT("max_core_cycles=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 62:19]
+    .out(plusarg_reader_out)
+  );
+  always @(posedge clock) begin
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(io_count < plusarg_reader_out) & (_T & ~reset)) begin
+          $fatal; // @[PlusArg.scala 64:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T & ~reset & ~(io_count < plusarg_reader_out)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: Timeout exceeded: Kill the emulation after INT rdtime cycles. Off if 0.\n    at PlusArg.scala:64 assert (io.count < max, s\"Timeout exceeded: $docstring\")\n"
+            ); // @[PlusArg.scala 64:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+endmodule
+module Rocket(
+  input         clock,
+  input         reset,
+  input         io_hartid,
+  input         io_interrupts_debug,
+  input         io_interrupts_mtip,
+  input         io_interrupts_msip,
+  input         io_interrupts_meip,
+  input         io_interrupts_seip,
+  output        io_imem_might_request,
+  output        io_imem_req_valid,
+  output [31:0] io_imem_req_bits_pc,
+  output        io_imem_req_bits_speculative,
+  output        io_imem_resp_ready,
+  input         io_imem_resp_valid,
+  input         io_imem_resp_bits_btb_taken,
+  input         io_imem_resp_bits_btb_bridx,
+  input  [4:0]  io_imem_resp_bits_btb_entry,
+  input  [7:0]  io_imem_resp_bits_btb_bht_history,
+  input  [31:0] io_imem_resp_bits_pc,
+  input  [31:0] io_imem_resp_bits_data,
+  input         io_imem_resp_bits_xcpt_ae_inst,
+  input         io_imem_resp_bits_replay,
+  output        io_imem_btb_update_valid,
+  output [4:0]  io_imem_btb_update_bits_prediction_entry,
+  output [31:0] io_imem_btb_update_bits_pc,
+  output        io_imem_btb_update_bits_isValid,
+  output [31:0] io_imem_btb_update_bits_br_pc,
+  output [1:0]  io_imem_btb_update_bits_cfiType,
+  output        io_imem_bht_update_valid,
+  output [7:0]  io_imem_bht_update_bits_prediction_history,
+  output [31:0] io_imem_bht_update_bits_pc,
+  output        io_imem_bht_update_bits_branch,
+  output        io_imem_bht_update_bits_taken,
+  output        io_imem_bht_update_bits_mispredict,
+  output        io_imem_flush_icache,
+  input         io_dmem_req_ready,
+  output        io_dmem_req_valid,
+  output [31:0] io_dmem_req_bits_addr,
+  output [5:0]  io_dmem_req_bits_tag,
+  output [4:0]  io_dmem_req_bits_cmd,
+  output [1:0]  io_dmem_req_bits_size,
+  output        io_dmem_req_bits_signed,
+  output [1:0]  io_dmem_req_bits_dprv,
+  output        io_dmem_req_bits_dv,
+  output        io_dmem_s1_kill,
+  output [31:0] io_dmem_s1_data_data,
+  input         io_dmem_s2_nack,
+  input         io_dmem_resp_valid,
+  input  [5:0]  io_dmem_resp_bits_tag,
+  input  [31:0] io_dmem_resp_bits_data,
+  input         io_dmem_resp_bits_replay,
+  input         io_dmem_resp_bits_has_data,
+  input  [31:0] io_dmem_resp_bits_data_word_bypass,
+  input         io_dmem_replay_next,
+  input         io_dmem_s2_xcpt_ma_ld,
+  input         io_dmem_s2_xcpt_ma_st,
+  input         io_dmem_s2_xcpt_pf_ld,
+  input         io_dmem_s2_xcpt_pf_st,
+  input         io_dmem_s2_xcpt_ae_ld,
+  input         io_dmem_s2_xcpt_ae_st,
+  input         io_dmem_ordered,
+  input         io_dmem_perf_release,
+  input         io_dmem_perf_grant,
+  output        io_ptw_status_debug,
+  output [1:0]  io_ptw_status_prv,
+  output        io_ptw_pmp_0_cfg_l,
+  output [1:0]  io_ptw_pmp_0_cfg_a,
+  output        io_ptw_pmp_0_cfg_x,
+  output        io_ptw_pmp_0_cfg_w,
+  output        io_ptw_pmp_0_cfg_r,
+  output [28:0] io_ptw_pmp_0_addr,
+  output [30:0] io_ptw_pmp_0_mask,
+  output        io_ptw_pmp_1_cfg_l,
+  output [1:0]  io_ptw_pmp_1_cfg_a,
+  output        io_ptw_pmp_1_cfg_x,
+  output        io_ptw_pmp_1_cfg_w,
+  output        io_ptw_pmp_1_cfg_r,
+  output [28:0] io_ptw_pmp_1_addr,
+  output [30:0] io_ptw_pmp_1_mask,
+  output        io_ptw_pmp_2_cfg_l,
+  output [1:0]  io_ptw_pmp_2_cfg_a,
+  output        io_ptw_pmp_2_cfg_x,
+  output        io_ptw_pmp_2_cfg_w,
+  output        io_ptw_pmp_2_cfg_r,
+  output [28:0] io_ptw_pmp_2_addr,
+  output [30:0] io_ptw_pmp_2_mask,
+  output        io_ptw_pmp_3_cfg_l,
+  output [1:0]  io_ptw_pmp_3_cfg_a,
+  output        io_ptw_pmp_3_cfg_x,
+  output        io_ptw_pmp_3_cfg_w,
+  output        io_ptw_pmp_3_cfg_r,
+  output [28:0] io_ptw_pmp_3_addr,
+  output [30:0] io_ptw_pmp_3_mask,
+  output        io_ptw_pmp_4_cfg_l,
+  output [1:0]  io_ptw_pmp_4_cfg_a,
+  output        io_ptw_pmp_4_cfg_x,
+  output        io_ptw_pmp_4_cfg_w,
+  output        io_ptw_pmp_4_cfg_r,
+  output [28:0] io_ptw_pmp_4_addr,
+  output [30:0] io_ptw_pmp_4_mask,
+  output        io_ptw_pmp_5_cfg_l,
+  output [1:0]  io_ptw_pmp_5_cfg_a,
+  output        io_ptw_pmp_5_cfg_x,
+  output        io_ptw_pmp_5_cfg_w,
+  output        io_ptw_pmp_5_cfg_r,
+  output [28:0] io_ptw_pmp_5_addr,
+  output [30:0] io_ptw_pmp_5_mask,
+  output        io_ptw_pmp_6_cfg_l,
+  output [1:0]  io_ptw_pmp_6_cfg_a,
+  output        io_ptw_pmp_6_cfg_x,
+  output        io_ptw_pmp_6_cfg_w,
+  output        io_ptw_pmp_6_cfg_r,
+  output [28:0] io_ptw_pmp_6_addr,
+  output [30:0] io_ptw_pmp_6_mask,
+  output        io_ptw_pmp_7_cfg_l,
+  output [1:0]  io_ptw_pmp_7_cfg_a,
+  output        io_ptw_pmp_7_cfg_x,
+  output        io_ptw_pmp_7_cfg_w,
+  output        io_ptw_pmp_7_cfg_r,
+  output [28:0] io_ptw_pmp_7_addr,
+  output [30:0] io_ptw_pmp_7_mask,
+  output [31:0] io_ptw_customCSRs_csrs_0_value,
+  output        io_wfi
+);
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_GARBAGE_ASSIGN
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+  reg [31:0] _RAND_47;
+  reg [31:0] _RAND_48;
+  reg [31:0] _RAND_49;
+  reg [31:0] _RAND_50;
+  reg [31:0] _RAND_51;
+  reg [31:0] _RAND_52;
+  reg [31:0] _RAND_53;
+  reg [31:0] _RAND_54;
+  reg [31:0] _RAND_55;
+  reg [31:0] _RAND_56;
+  reg [31:0] _RAND_57;
+  reg [31:0] _RAND_58;
+  reg [31:0] _RAND_59;
+  reg [31:0] _RAND_60;
+  reg [31:0] _RAND_61;
+  reg [31:0] _RAND_62;
+  reg [31:0] _RAND_63;
+  reg [31:0] _RAND_64;
+  reg [31:0] _RAND_65;
+  reg [31:0] _RAND_66;
+  reg [31:0] _RAND_67;
+  reg [31:0] _RAND_68;
+  reg [31:0] _RAND_69;
+  reg [31:0] _RAND_70;
+  reg [31:0] _RAND_71;
+  reg [31:0] _RAND_72;
+  reg [31:0] _RAND_73;
+  reg [31:0] _RAND_74;
+  reg [31:0] _RAND_75;
+  reg [31:0] _RAND_76;
+  reg [31:0] _RAND_77;
+  reg [31:0] _RAND_78;
+  reg [31:0] _RAND_79;
+  reg [31:0] _RAND_80;
+  reg [31:0] _RAND_81;
+  reg [31:0] _RAND_82;
+  reg [31:0] _RAND_83;
+  reg [31:0] _RAND_84;
+  reg [31:0] _RAND_85;
+  reg [31:0] _RAND_86;
+  reg [31:0] _RAND_87;
+  reg [31:0] _RAND_88;
+  reg [31:0] _RAND_89;
+  reg [31:0] _RAND_90;
+  reg [31:0] _RAND_91;
+  reg [31:0] _RAND_92;
+  reg [31:0] _RAND_93;
+`endif // RANDOMIZE_REG_INIT
+  wire  ibuf_clock; // @[RocketCore.scala 263:20]
+  wire  ibuf_reset; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_imem_ready; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_imem_valid; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_imem_bits_btb_taken; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_imem_bits_btb_bridx; // @[RocketCore.scala 263:20]
+  wire [4:0] ibuf_io_imem_bits_btb_entry; // @[RocketCore.scala 263:20]
+  wire [7:0] ibuf_io_imem_bits_btb_bht_history; // @[RocketCore.scala 263:20]
+  wire [31:0] ibuf_io_imem_bits_pc; // @[RocketCore.scala 263:20]
+  wire [31:0] ibuf_io_imem_bits_data; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_imem_bits_xcpt_ae_inst; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_imem_bits_replay; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_kill; // @[RocketCore.scala 263:20]
+  wire [31:0] ibuf_io_pc; // @[RocketCore.scala 263:20]
+  wire [4:0] ibuf_io_btb_resp_entry; // @[RocketCore.scala 263:20]
+  wire [7:0] ibuf_io_btb_resp_bht_history; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_inst_0_ready; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_inst_0_valid; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_inst_0_bits_xcpt0_ae_inst; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_inst_0_bits_xcpt1_pf_inst; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_inst_0_bits_xcpt1_gf_inst; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_inst_0_bits_xcpt1_ae_inst; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_inst_0_bits_replay; // @[RocketCore.scala 263:20]
+  wire  ibuf_io_inst_0_bits_rvc; // @[RocketCore.scala 263:20]
+  wire [31:0] ibuf_io_inst_0_bits_inst_bits; // @[RocketCore.scala 263:20]
+  wire [4:0] ibuf_io_inst_0_bits_inst_rd; // @[RocketCore.scala 263:20]
+  wire [4:0] ibuf_io_inst_0_bits_inst_rs1; // @[RocketCore.scala 263:20]
+  wire [4:0] ibuf_io_inst_0_bits_inst_rs2; // @[RocketCore.scala 263:20]
+  wire [31:0] ibuf_io_inst_0_bits_raw; // @[RocketCore.scala 263:20]
+  reg [31:0] rf [0:30]; // @[RocketCore.scala 1061:15]
+  wire  rf_id_rs_MPORT_en; // @[RocketCore.scala 1061:15]
+  wire [4:0] rf_id_rs_MPORT_addr; // @[RocketCore.scala 1061:15]
+  wire [31:0] rf_id_rs_MPORT_data; // @[RocketCore.scala 1061:15]
+  wire  rf_id_rs_MPORT_1_en; // @[RocketCore.scala 1061:15]
+  wire [4:0] rf_id_rs_MPORT_1_addr; // @[RocketCore.scala 1061:15]
+  wire [31:0] rf_id_rs_MPORT_1_data; // @[RocketCore.scala 1061:15]
+  wire [31:0] rf_MPORT_data; // @[RocketCore.scala 1061:15]
+  wire [4:0] rf_MPORT_addr; // @[RocketCore.scala 1061:15]
+  wire  rf_MPORT_mask; // @[RocketCore.scala 1061:15]
+  wire  rf_MPORT_en; // @[RocketCore.scala 1061:15]
+  wire  csr_clock; // @[RocketCore.scala 291:19]
+  wire  csr_reset; // @[RocketCore.scala 291:19]
+  wire  csr_io_ungated_clock; // @[RocketCore.scala 291:19]
+  wire  csr_io_interrupts_debug; // @[RocketCore.scala 291:19]
+  wire  csr_io_interrupts_mtip; // @[RocketCore.scala 291:19]
+  wire  csr_io_interrupts_msip; // @[RocketCore.scala 291:19]
+  wire  csr_io_interrupts_meip; // @[RocketCore.scala 291:19]
+  wire  csr_io_interrupts_seip; // @[RocketCore.scala 291:19]
+  wire  csr_io_hartid; // @[RocketCore.scala 291:19]
+  wire [11:0] csr_io_rw_addr; // @[RocketCore.scala 291:19]
+  wire [2:0] csr_io_rw_cmd; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_rw_rdata; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_rw_wdata; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_decode_0_inst; // @[RocketCore.scala 291:19]
+  wire  csr_io_decode_0_fp_illegal; // @[RocketCore.scala 291:19]
+  wire  csr_io_decode_0_fp_csr; // @[RocketCore.scala 291:19]
+  wire  csr_io_decode_0_read_illegal; // @[RocketCore.scala 291:19]
+  wire  csr_io_decode_0_write_illegal; // @[RocketCore.scala 291:19]
+  wire  csr_io_decode_0_write_flush; // @[RocketCore.scala 291:19]
+  wire  csr_io_decode_0_system_illegal; // @[RocketCore.scala 291:19]
+  wire  csr_io_csr_stall; // @[RocketCore.scala 291:19]
+  wire  csr_io_eret; // @[RocketCore.scala 291:19]
+  wire  csr_io_singleStep; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_debug; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_cease; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_wfi; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_status_isa; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_status_dprv; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_dv; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_status_prv; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_v; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_sd; // @[RocketCore.scala 291:19]
+  wire [22:0] csr_io_status_zero2; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_mpv; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_gva; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_mbe; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_sbe; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_status_sxl; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_status_uxl; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_sd_rv32; // @[RocketCore.scala 291:19]
+  wire [7:0] csr_io_status_zero1; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_tsr; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_tw; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_tvm; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_mxr; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_sum; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_mprv; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_status_xs; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_status_fs; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_status_mpp; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_status_vs; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_spp; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_mpie; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_ube; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_spie; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_upie; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_mie; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_hie; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_sie; // @[RocketCore.scala 291:19]
+  wire  csr_io_status_uie; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_evec; // @[RocketCore.scala 291:19]
+  wire  csr_io_exception; // @[RocketCore.scala 291:19]
+  wire  csr_io_retire; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_cause; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_pc; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_tval; // @[RocketCore.scala 291:19]
+  wire  csr_io_gva; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_time; // @[RocketCore.scala 291:19]
+  wire  csr_io_interrupt; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_interrupt_cause; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_action; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_chain; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_bp_0_control_tmatch; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_m; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_s; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_u; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_r; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_bp_0_address; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_1_control_action; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_bp_1_control_tmatch; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_1_control_m; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_1_control_s; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_1_control_u; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_1_control_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_1_control_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_1_control_r; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_bp_1_address; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_0_cfg_l; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_pmp_0_cfg_a; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_0_cfg_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_0_cfg_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_0_cfg_r; // @[RocketCore.scala 291:19]
+  wire [28:0] csr_io_pmp_0_addr; // @[RocketCore.scala 291:19]
+  wire [30:0] csr_io_pmp_0_mask; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_1_cfg_l; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_pmp_1_cfg_a; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_1_cfg_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_1_cfg_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_1_cfg_r; // @[RocketCore.scala 291:19]
+  wire [28:0] csr_io_pmp_1_addr; // @[RocketCore.scala 291:19]
+  wire [30:0] csr_io_pmp_1_mask; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_2_cfg_l; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_pmp_2_cfg_a; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_2_cfg_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_2_cfg_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_2_cfg_r; // @[RocketCore.scala 291:19]
+  wire [28:0] csr_io_pmp_2_addr; // @[RocketCore.scala 291:19]
+  wire [30:0] csr_io_pmp_2_mask; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_3_cfg_l; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_pmp_3_cfg_a; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_3_cfg_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_3_cfg_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_3_cfg_r; // @[RocketCore.scala 291:19]
+  wire [28:0] csr_io_pmp_3_addr; // @[RocketCore.scala 291:19]
+  wire [30:0] csr_io_pmp_3_mask; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_4_cfg_l; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_pmp_4_cfg_a; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_4_cfg_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_4_cfg_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_4_cfg_r; // @[RocketCore.scala 291:19]
+  wire [28:0] csr_io_pmp_4_addr; // @[RocketCore.scala 291:19]
+  wire [30:0] csr_io_pmp_4_mask; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_5_cfg_l; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_pmp_5_cfg_a; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_5_cfg_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_5_cfg_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_5_cfg_r; // @[RocketCore.scala 291:19]
+  wire [28:0] csr_io_pmp_5_addr; // @[RocketCore.scala 291:19]
+  wire [30:0] csr_io_pmp_5_mask; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_6_cfg_l; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_pmp_6_cfg_a; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_6_cfg_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_6_cfg_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_6_cfg_r; // @[RocketCore.scala 291:19]
+  wire [28:0] csr_io_pmp_6_addr; // @[RocketCore.scala 291:19]
+  wire [30:0] csr_io_pmp_6_mask; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_7_cfg_l; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_pmp_7_cfg_a; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_7_cfg_x; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_7_cfg_w; // @[RocketCore.scala 291:19]
+  wire  csr_io_pmp_7_cfg_r; // @[RocketCore.scala 291:19]
+  wire [28:0] csr_io_pmp_7_addr; // @[RocketCore.scala 291:19]
+  wire [30:0] csr_io_pmp_7_mask; // @[RocketCore.scala 291:19]
+  wire  csr_io_inhibit_cycle; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_inst_0; // @[RocketCore.scala 291:19]
+  wire  csr_io_trace_0_valid; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_trace_0_iaddr; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_trace_0_insn; // @[RocketCore.scala 291:19]
+  wire  csr_io_trace_0_exception; // @[RocketCore.scala 291:19]
+  wire [31:0] csr_io_customCSRs_0_value; // @[RocketCore.scala 291:19]
+  wire  bpu_io_status_debug; // @[RocketCore.scala 334:19]
+  wire [1:0] bpu_io_status_prv; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_action; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_chain; // @[RocketCore.scala 334:19]
+  wire [1:0] bpu_io_bp_0_control_tmatch; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_m; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_s; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_u; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_x; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_w; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_r; // @[RocketCore.scala 334:19]
+  wire [31:0] bpu_io_bp_0_address; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_1_control_action; // @[RocketCore.scala 334:19]
+  wire [1:0] bpu_io_bp_1_control_tmatch; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_1_control_m; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_1_control_s; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_1_control_u; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_1_control_x; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_1_control_w; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_1_control_r; // @[RocketCore.scala 334:19]
+  wire [31:0] bpu_io_bp_1_address; // @[RocketCore.scala 334:19]
+  wire [31:0] bpu_io_pc; // @[RocketCore.scala 334:19]
+  wire [31:0] bpu_io_ea; // @[RocketCore.scala 334:19]
+  wire  bpu_io_xcpt_if; // @[RocketCore.scala 334:19]
+  wire  bpu_io_xcpt_ld; // @[RocketCore.scala 334:19]
+  wire  bpu_io_xcpt_st; // @[RocketCore.scala 334:19]
+  wire  bpu_io_debug_if; // @[RocketCore.scala 334:19]
+  wire  bpu_io_debug_ld; // @[RocketCore.scala 334:19]
+  wire  bpu_io_debug_st; // @[RocketCore.scala 334:19]
+  wire [3:0] alu_io_fn; // @[RocketCore.scala 399:19]
+  wire [31:0] alu_io_in2; // @[RocketCore.scala 399:19]
+  wire [31:0] alu_io_in1; // @[RocketCore.scala 399:19]
+  wire [31:0] alu_io_out; // @[RocketCore.scala 399:19]
+  wire [31:0] alu_io_adder_out; // @[RocketCore.scala 399:19]
+  wire  alu_io_cmp_out; // @[RocketCore.scala 399:19]
+  wire  div_clock; // @[RocketCore.scala 423:19]
+  wire  div_reset; // @[RocketCore.scala 423:19]
+  wire  div_io_req_ready; // @[RocketCore.scala 423:19]
+  wire  div_io_req_valid; // @[RocketCore.scala 423:19]
+  wire [3:0] div_io_req_bits_fn; // @[RocketCore.scala 423:19]
+  wire [31:0] div_io_req_bits_in1; // @[RocketCore.scala 423:19]
+  wire [31:0] div_io_req_bits_in2; // @[RocketCore.scala 423:19]
+  wire [4:0] div_io_req_bits_tag; // @[RocketCore.scala 423:19]
+  wire  div_io_kill; // @[RocketCore.scala 423:19]
+  wire  div_io_resp_ready; // @[RocketCore.scala 423:19]
+  wire  div_io_resp_valid; // @[RocketCore.scala 423:19]
+  wire [31:0] div_io_resp_bits_data; // @[RocketCore.scala 423:19]
+  wire [4:0] div_io_resp_bits_tag; // @[RocketCore.scala 423:19]
+  wire  PlusArgTimeout_clock; // @[PlusArg.scala 89:11]
+  wire  PlusArgTimeout_reset; // @[PlusArg.scala 89:11]
+  wire [31:0] PlusArgTimeout_io_count; // @[PlusArg.scala 89:11]
+  reg  id_reg_pause; // @[RocketCore.scala 116:25]
+  reg  imem_might_request_reg; // @[RocketCore.scala 117:35]
+  reg  ex_ctrl_branch; // @[RocketCore.scala 194:20]
+  reg  ex_ctrl_jal; // @[RocketCore.scala 194:20]
+  reg  ex_ctrl_jalr; // @[RocketCore.scala 194:20]
+  reg  ex_ctrl_rxs2; // @[RocketCore.scala 194:20]
+  reg  ex_ctrl_rxs1; // @[RocketCore.scala 194:20]
+  reg [1:0] ex_ctrl_sel_alu2; // @[RocketCore.scala 194:20]
+  reg [1:0] ex_ctrl_sel_alu1; // @[RocketCore.scala 194:20]
+  reg [2:0] ex_ctrl_sel_imm; // @[RocketCore.scala 194:20]
+  reg [3:0] ex_ctrl_alu_fn; // @[RocketCore.scala 194:20]
+  reg  ex_ctrl_mem; // @[RocketCore.scala 194:20]
+  reg [4:0] ex_ctrl_mem_cmd; // @[RocketCore.scala 194:20]
+  reg  ex_ctrl_div; // @[RocketCore.scala 194:20]
+  reg  ex_ctrl_wxd; // @[RocketCore.scala 194:20]
+  reg [2:0] ex_ctrl_csr; // @[RocketCore.scala 194:20]
+  reg  ex_ctrl_fence_i; // @[RocketCore.scala 194:20]
+  reg  mem_ctrl_branch; // @[RocketCore.scala 195:21]
+  reg  mem_ctrl_jal; // @[RocketCore.scala 195:21]
+  reg  mem_ctrl_jalr; // @[RocketCore.scala 195:21]
+  reg  mem_ctrl_rxs2; // @[RocketCore.scala 195:21]
+  reg  mem_ctrl_rxs1; // @[RocketCore.scala 195:21]
+  reg  mem_ctrl_mem; // @[RocketCore.scala 195:21]
+  reg  mem_ctrl_div; // @[RocketCore.scala 195:21]
+  reg  mem_ctrl_wxd; // @[RocketCore.scala 195:21]
+  reg [2:0] mem_ctrl_csr; // @[RocketCore.scala 195:21]
+  reg  mem_ctrl_fence_i; // @[RocketCore.scala 195:21]
+  reg  wb_ctrl_rxs2; // @[RocketCore.scala 196:20]
+  reg  wb_ctrl_rxs1; // @[RocketCore.scala 196:20]
+  reg  wb_ctrl_mem; // @[RocketCore.scala 196:20]
+  reg  wb_ctrl_div; // @[RocketCore.scala 196:20]
+  reg  wb_ctrl_wxd; // @[RocketCore.scala 196:20]
+  reg [2:0] wb_ctrl_csr; // @[RocketCore.scala 196:20]
+  reg  wb_ctrl_fence_i; // @[RocketCore.scala 196:20]
+  reg  ex_reg_xcpt_interrupt; // @[RocketCore.scala 198:35]
+  reg  ex_reg_valid; // @[RocketCore.scala 199:35]
+  reg  ex_reg_rvc; // @[RocketCore.scala 200:35]
+  reg [4:0] ex_reg_btb_resp_entry; // @[RocketCore.scala 201:35]
+  reg [7:0] ex_reg_btb_resp_bht_history; // @[RocketCore.scala 201:35]
+  reg  ex_reg_xcpt; // @[RocketCore.scala 202:35]
+  reg  ex_reg_flush_pipe; // @[RocketCore.scala 203:35]
+  reg  ex_reg_load_use; // @[RocketCore.scala 204:35]
+  reg [31:0] ex_reg_cause; // @[RocketCore.scala 205:35]
+  reg  ex_reg_replay; // @[RocketCore.scala 206:26]
+  reg [31:0] ex_reg_pc; // @[RocketCore.scala 207:22]
+  reg [1:0] ex_reg_mem_size; // @[RocketCore.scala 208:28]
+  reg [31:0] ex_reg_inst; // @[RocketCore.scala 210:24]
+  reg [31:0] ex_reg_raw_inst; // @[RocketCore.scala 211:28]
+  reg  mem_reg_xcpt_interrupt; // @[RocketCore.scala 216:36]
+  reg  mem_reg_valid; // @[RocketCore.scala 217:36]
+  reg  mem_reg_rvc; // @[RocketCore.scala 218:36]
+  reg [4:0] mem_reg_btb_resp_entry; // @[RocketCore.scala 219:36]
+  reg [7:0] mem_reg_btb_resp_bht_history; // @[RocketCore.scala 219:36]
+  reg  mem_reg_xcpt; // @[RocketCore.scala 220:36]
+  reg  mem_reg_replay; // @[RocketCore.scala 221:36]
+  reg  mem_reg_flush_pipe; // @[RocketCore.scala 222:36]
+  reg [31:0] mem_reg_cause; // @[RocketCore.scala 223:36]
+  reg  mem_reg_slow_bypass; // @[RocketCore.scala 224:36]
+  reg  mem_reg_load; // @[RocketCore.scala 225:36]
+  reg  mem_reg_store; // @[RocketCore.scala 226:36]
+  reg [31:0] mem_reg_pc; // @[RocketCore.scala 228:23]
+  reg [31:0] mem_reg_inst; // @[RocketCore.scala 229:25]
+  reg  mem_reg_hls_or_dv; // @[RocketCore.scala 231:30]
+  reg [31:0] mem_reg_raw_inst; // @[RocketCore.scala 232:29]
+  reg [31:0] mem_reg_wdata; // @[RocketCore.scala 235:26]
+  reg [31:0] mem_reg_rs2; // @[RocketCore.scala 236:24]
+  reg  mem_br_taken; // @[RocketCore.scala 237:25]
+  reg  wb_reg_valid; // @[RocketCore.scala 241:35]
+  reg  wb_reg_xcpt; // @[RocketCore.scala 242:35]
+  reg  wb_reg_replay; // @[RocketCore.scala 243:35]
+  reg  wb_reg_flush_pipe; // @[RocketCore.scala 244:35]
+  reg [31:0] wb_reg_cause; // @[RocketCore.scala 245:35]
+  reg [31:0] wb_reg_pc; // @[RocketCore.scala 247:22]
+  reg  wb_reg_hls_or_dv; // @[RocketCore.scala 249:29]
+  reg [31:0] wb_reg_inst; // @[RocketCore.scala 252:24]
+  reg [31:0] wb_reg_raw_inst; // @[RocketCore.scala 253:28]
+  reg [31:0] wb_reg_wdata; // @[RocketCore.scala 254:25]
+  wire  replay_wb_common = io_dmem_s2_nack | wb_reg_replay; // @[RocketCore.scala 664:42]
+  wire  _T_94 = wb_reg_valid & wb_ctrl_mem; // @[RocketCore.scala 637:19]
+  wire  _T_95 = wb_reg_valid & wb_ctrl_mem & io_dmem_s2_xcpt_pf_st; // @[RocketCore.scala 637:34]
+  wire  _T_97 = _T_94 & io_dmem_s2_xcpt_pf_ld; // @[RocketCore.scala 638:34]
+  wire  _T_103 = _T_94 & io_dmem_s2_xcpt_ae_st; // @[RocketCore.scala 641:34]
+  wire  _T_105 = _T_94 & io_dmem_s2_xcpt_ae_ld; // @[RocketCore.scala 642:34]
+  wire  _T_107 = _T_94 & io_dmem_s2_xcpt_ma_st; // @[RocketCore.scala 643:34]
+  wire  _T_109 = _T_94 & io_dmem_s2_xcpt_ma_ld; // @[RocketCore.scala 644:34]
+  wire  wb_xcpt = wb_reg_xcpt | _T_95 | _T_97 | _T_103 | _T_105 | _T_107 | _T_109; // @[RocketCore.scala 1021:26]
+  wire  take_pc_wb = replay_wb_common | wb_xcpt | csr_io_eret | wb_reg_flush_pipe; // @[RocketCore.scala 667:53]
+  wire  _take_pc_mem_T = ~mem_reg_xcpt; // @[RocketCore.scala 541:35]
+  wire  ex_pc_valid = ex_reg_valid | ex_reg_replay | ex_reg_xcpt_interrupt; // @[RocketCore.scala 508:51]
+  wire  _mem_br_target_T_1 = mem_ctrl_branch & mem_br_taken; // @[RocketCore.scala 528:25]
+  wire  mem_br_target_sign = mem_reg_inst[31]; // @[RocketCore.scala 1083:53]
+  wire  mem_br_target_hi_hi_hi = mem_reg_inst[31]; // @[Cat.scala 31:58]
+  wire [10:0] mem_br_target_hi_hi_lo = {11{mem_br_target_sign}}; // @[Cat.scala 31:58]
+  wire [7:0] mem_br_target_hi_lo_hi = {8{mem_br_target_sign}}; // @[Cat.scala 31:58]
+  wire  mem_br_target_hi_lo_lo = mem_reg_inst[7]; // @[Cat.scala 31:58]
+  wire [5:0] mem_br_target_b10_5 = mem_reg_inst[30:25]; // @[RocketCore.scala 1089:66]
+  wire [3:0] mem_br_target_b4_1 = mem_reg_inst[11:8]; // @[RocketCore.scala 1091:57]
+  wire [31:0] _mem_br_target_T_3 = {mem_br_target_hi_hi_hi,mem_br_target_hi_hi_lo,mem_br_target_hi_lo_hi,
+    mem_br_target_hi_lo_lo,mem_br_target_b10_5,mem_br_target_b4_1,1'h0}; // @[RocketCore.scala 1097:53]
+  wire [7:0] mem_br_target_hi_lo_hi_1 = mem_reg_inst[19:12]; // @[Cat.scala 31:58]
+  wire  mem_br_target_hi_lo_lo_1 = mem_reg_inst[20]; // @[Cat.scala 31:58]
+  wire [31:0] _mem_br_target_T_5 = {mem_br_target_hi_hi_hi,mem_br_target_hi_hi_lo,mem_br_target_hi_lo_hi_1,
+    mem_br_target_hi_lo_lo_1,mem_br_target_b10_5,mem_reg_inst[24:21],1'h0}; // @[RocketCore.scala 1097:53]
+  wire [3:0] _mem_br_target_T_6 = mem_reg_rvc ? $signed(4'sh2) : $signed(4'sh4); // @[RocketCore.scala 530:8]
+  wire [31:0] _mem_br_target_T_7 = mem_ctrl_jal ? $signed(_mem_br_target_T_5) : $signed({{28{_mem_br_target_T_6[3]}},
+    _mem_br_target_T_6}); // @[RocketCore.scala 529:8]
+  wire [31:0] _mem_br_target_T_8 = mem_ctrl_branch & mem_br_taken ? $signed(_mem_br_target_T_3) : $signed(
+    _mem_br_target_T_7); // @[RocketCore.scala 528:8]
+  wire [31:0] mem_br_target = $signed(mem_reg_pc) + $signed(_mem_br_target_T_8); // @[RocketCore.scala 527:41]
+  wire [31:0] _mem_npc_T_2 = mem_ctrl_jalr ? $signed(mem_reg_wdata) : $signed(mem_br_target); // @[RocketCore.scala 531:21]
+  wire [31:0] mem_npc = $signed(_mem_npc_T_2) & -32'sh2; // @[RocketCore.scala 531:141]
+  wire  _mem_wrong_npc_T_3 = ibuf_io_inst_0_valid | ibuf_io_imem_valid ? mem_npc != ibuf_io_pc : 1'h1; // @[RocketCore.scala 534:8]
+  wire  mem_wrong_npc = ex_pc_valid ? mem_npc != ex_reg_pc : _mem_wrong_npc_T_3; // @[RocketCore.scala 533:8]
+  wire  take_pc_mem = mem_reg_valid & ~mem_reg_xcpt & mem_wrong_npc; // @[RocketCore.scala 541:49]
+  wire  take_pc_mem_wb = take_pc_wb | take_pc_mem; // @[RocketCore.scala 259:35]
+  wire [31:0] _id_ctrl_decoder_bit_T = ibuf_io_inst_0_bits_inst_bits & 32'hfe00707f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_1 = _id_ctrl_decoder_bit_T == 32'h2000033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_3 = _id_ctrl_decoder_bit_T == 32'h2001033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_5 = _id_ctrl_decoder_bit_T == 32'h2003033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_7 = _id_ctrl_decoder_bit_T == 32'h2002033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_9 = _id_ctrl_decoder_bit_T == 32'h2004033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_11 = _id_ctrl_decoder_bit_T == 32'h2005033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_13 = _id_ctrl_decoder_bit_T == 32'h2006033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_15 = _id_ctrl_decoder_bit_T == 32'h2007033; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_16 = ibuf_io_inst_0_bits_inst_bits & 32'hf800707f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_17 = _id_ctrl_decoder_bit_T_16 == 32'h202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_19 = _id_ctrl_decoder_bit_T_16 == 32'h2000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_21 = _id_ctrl_decoder_bit_T_16 == 32'h800202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_23 = _id_ctrl_decoder_bit_T_16 == 32'h6000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_25 = _id_ctrl_decoder_bit_T_16 == 32'h4000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_27 = _id_ctrl_decoder_bit_T_16 == 32'h8000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_29 = _id_ctrl_decoder_bit_T_16 == 32'hc000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_31 = _id_ctrl_decoder_bit_T_16 == 32'ha000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_33 = _id_ctrl_decoder_bit_T_16 == 32'he000202f; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_34 = ibuf_io_inst_0_bits_inst_bits & 32'hf9f0707f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_35 = _id_ctrl_decoder_bit_T_34 == 32'h1000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_37 = _id_ctrl_decoder_bit_T_16 == 32'h1800202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_39 = _id_ctrl_decoder_bit_T == 32'h1013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_41 = _id_ctrl_decoder_bit_T == 32'h5013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_43 = _id_ctrl_decoder_bit_T == 32'h40005013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_44 = ibuf_io_inst_0_bits_inst_bits == 32'h10200073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_45 = ibuf_io_inst_0_bits_inst_bits == 32'h7b200073; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_46 = ibuf_io_inst_0_bits_inst_bits & 32'h707f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_47 = _id_ctrl_decoder_bit_T_46 == 32'h100f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_49 = _id_ctrl_decoder_bit_T_46 == 32'h1063; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_51 = _id_ctrl_decoder_bit_T_46 == 32'h63; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_53 = _id_ctrl_decoder_bit_T_46 == 32'h4063; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_55 = _id_ctrl_decoder_bit_T_46 == 32'h6063; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_57 = _id_ctrl_decoder_bit_T_46 == 32'h5063; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_59 = _id_ctrl_decoder_bit_T_46 == 32'h7063; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_60 = ibuf_io_inst_0_bits_inst_bits & 32'h7f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_61 = _id_ctrl_decoder_bit_T_60 == 32'h6f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_63 = _id_ctrl_decoder_bit_T_46 == 32'h67; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_65 = _id_ctrl_decoder_bit_T_60 == 32'h17; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_67 = _id_ctrl_decoder_bit_T_46 == 32'h3; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_69 = _id_ctrl_decoder_bit_T_46 == 32'h1003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_71 = _id_ctrl_decoder_bit_T_46 == 32'h2003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_73 = _id_ctrl_decoder_bit_T_46 == 32'h4003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_75 = _id_ctrl_decoder_bit_T_46 == 32'h5003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_77 = _id_ctrl_decoder_bit_T_46 == 32'h23; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_79 = _id_ctrl_decoder_bit_T_46 == 32'h1023; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_81 = _id_ctrl_decoder_bit_T_46 == 32'h2023; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_83 = _id_ctrl_decoder_bit_T_60 == 32'h37; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_85 = _id_ctrl_decoder_bit_T_46 == 32'h13; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_87 = _id_ctrl_decoder_bit_T_46 == 32'h2013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_89 = _id_ctrl_decoder_bit_T_46 == 32'h3013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_91 = _id_ctrl_decoder_bit_T_46 == 32'h7013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_93 = _id_ctrl_decoder_bit_T_46 == 32'h6013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_95 = _id_ctrl_decoder_bit_T_46 == 32'h4013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_97 = _id_ctrl_decoder_bit_T == 32'h33; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_99 = _id_ctrl_decoder_bit_T == 32'h40000033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_101 = _id_ctrl_decoder_bit_T == 32'h2033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_103 = _id_ctrl_decoder_bit_T == 32'h3033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_105 = _id_ctrl_decoder_bit_T == 32'h7033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_107 = _id_ctrl_decoder_bit_T == 32'h6033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_109 = _id_ctrl_decoder_bit_T == 32'h4033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_111 = _id_ctrl_decoder_bit_T == 32'h1033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_113 = _id_ctrl_decoder_bit_T == 32'h5033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_115 = _id_ctrl_decoder_bit_T == 32'h40005033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_117 = _id_ctrl_decoder_bit_T_46 == 32'hf; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_118 = ibuf_io_inst_0_bits_inst_bits == 32'h73; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_119 = ibuf_io_inst_0_bits_inst_bits == 32'h100073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_120 = ibuf_io_inst_0_bits_inst_bits == 32'h30200073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_121 = ibuf_io_inst_0_bits_inst_bits == 32'h10500073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_122 = ibuf_io_inst_0_bits_inst_bits == 32'h30500073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_124 = _id_ctrl_decoder_bit_T_46 == 32'h1073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_126 = _id_ctrl_decoder_bit_T_46 == 32'h2073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_128 = _id_ctrl_decoder_bit_T_46 == 32'h3073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_130 = _id_ctrl_decoder_bit_T_46 == 32'h5073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_132 = _id_ctrl_decoder_bit_T_46 == 32'h6073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_134 = _id_ctrl_decoder_bit_T_46 == 32'h7073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_165 = _id_ctrl_decoder_bit_T_1 | _id_ctrl_decoder_bit_T_3 | _id_ctrl_decoder_bit_T_5 |
+    _id_ctrl_decoder_bit_T_7 | _id_ctrl_decoder_bit_T_9 | _id_ctrl_decoder_bit_T_11 | _id_ctrl_decoder_bit_T_13 |
+    _id_ctrl_decoder_bit_T_15 | _id_ctrl_decoder_bit_T_17 | _id_ctrl_decoder_bit_T_19 | _id_ctrl_decoder_bit_T_21 |
+    _id_ctrl_decoder_bit_T_23 | _id_ctrl_decoder_bit_T_25 | _id_ctrl_decoder_bit_T_27 | _id_ctrl_decoder_bit_T_29 |
+    _id_ctrl_decoder_bit_T_31 | _id_ctrl_decoder_bit_T_33 | _id_ctrl_decoder_bit_T_35 | _id_ctrl_decoder_bit_T_37 |
+    _id_ctrl_decoder_bit_T_39 | _id_ctrl_decoder_bit_T_41 | _id_ctrl_decoder_bit_T_43 | _id_ctrl_decoder_bit_T_44 |
+    _id_ctrl_decoder_bit_T_45 | _id_ctrl_decoder_bit_T_47 | _id_ctrl_decoder_bit_T_49 | _id_ctrl_decoder_bit_T_51 |
+    _id_ctrl_decoder_bit_T_53 | _id_ctrl_decoder_bit_T_55 | _id_ctrl_decoder_bit_T_57 | _id_ctrl_decoder_bit_T_59; // @[Decode.scala 15:30]
+  wire  _id_ctrl_decoder_bit_T_195 = _id_ctrl_decoder_bit_T_165 | _id_ctrl_decoder_bit_T_61 | _id_ctrl_decoder_bit_T_63
+     | _id_ctrl_decoder_bit_T_65 | _id_ctrl_decoder_bit_T_67 | _id_ctrl_decoder_bit_T_69 | _id_ctrl_decoder_bit_T_71 |
+    _id_ctrl_decoder_bit_T_73 | _id_ctrl_decoder_bit_T_75 | _id_ctrl_decoder_bit_T_77 | _id_ctrl_decoder_bit_T_79 |
+    _id_ctrl_decoder_bit_T_81 | _id_ctrl_decoder_bit_T_83 | _id_ctrl_decoder_bit_T_85 | _id_ctrl_decoder_bit_T_87 |
+    _id_ctrl_decoder_bit_T_89 | _id_ctrl_decoder_bit_T_91 | _id_ctrl_decoder_bit_T_93 | _id_ctrl_decoder_bit_T_95 |
+    _id_ctrl_decoder_bit_T_97 | _id_ctrl_decoder_bit_T_99 | _id_ctrl_decoder_bit_T_101 | _id_ctrl_decoder_bit_T_103 |
+    _id_ctrl_decoder_bit_T_105 | _id_ctrl_decoder_bit_T_107 | _id_ctrl_decoder_bit_T_109 | _id_ctrl_decoder_bit_T_111 |
+    _id_ctrl_decoder_bit_T_113 | _id_ctrl_decoder_bit_T_115 | _id_ctrl_decoder_bit_T_117 | _id_ctrl_decoder_bit_T_118; // @[Decode.scala 15:30]
+  wire  id_ctrl_decoder_0 = _id_ctrl_decoder_bit_T_195 | _id_ctrl_decoder_bit_T_119 | _id_ctrl_decoder_bit_T_120 |
+    _id_ctrl_decoder_bit_T_121 | _id_ctrl_decoder_bit_T_122 | _id_ctrl_decoder_bit_T_124 | _id_ctrl_decoder_bit_T_126 |
+    _id_ctrl_decoder_bit_T_128 | _id_ctrl_decoder_bit_T_130 | _id_ctrl_decoder_bit_T_132 | _id_ctrl_decoder_bit_T_134; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T = ibuf_io_inst_0_bits_inst_bits & 32'h54; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_3 = _id_ctrl_decoder_T == 32'h40; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_2 = ibuf_io_inst_0_bits_inst_bits & 32'h48; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_4 = _id_ctrl_decoder_T_2 == 32'h48; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_4 = ibuf_io_inst_0_bits_inst_bits & 32'h1c; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_5 = _id_ctrl_decoder_T_4 == 32'h4; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_6 = ibuf_io_inst_0_bits_inst_bits & 32'h70; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_7 = _id_ctrl_decoder_T_6 == 32'h20; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_8 = ibuf_io_inst_0_bits_inst_bits & 32'h64; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_9 = _id_ctrl_decoder_T_8 == 32'h20; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_10 = ibuf_io_inst_0_bits_inst_bits & 32'h34; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_11 = _id_ctrl_decoder_T_10 == 32'h20; // @[Decode.scala 14:121]
+  wire  id_ctrl_decoder_6 = _id_ctrl_decoder_T_7 | _id_ctrl_decoder_T_9 | _id_ctrl_decoder_T_11; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_14 = ibuf_io_inst_0_bits_inst_bits & 32'h4004; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_15 = _id_ctrl_decoder_T_14 == 32'h0; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_16 = ibuf_io_inst_0_bits_inst_bits & 32'h44; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_17 = _id_ctrl_decoder_T_16 == 32'h0; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_18 = ibuf_io_inst_0_bits_inst_bits & 32'h18; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_19 = _id_ctrl_decoder_T_18 == 32'h0; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_20 = ibuf_io_inst_0_bits_inst_bits & 32'h2050; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_21 = _id_ctrl_decoder_T_20 == 32'h2000; // @[Decode.scala 14:121]
+  wire  id_ctrl_decoder_7 = _id_ctrl_decoder_T_15 | _id_ctrl_decoder_T_17 | _id_ctrl_decoder_T_19 |
+    _id_ctrl_decoder_T_21; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_25 = ibuf_io_inst_0_bits_inst_bits & 32'h58; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_26 = _id_ctrl_decoder_T_25 == 32'h0; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_27 = ibuf_io_inst_0_bits_inst_bits & 32'h20; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_28 = _id_ctrl_decoder_T_27 == 32'h0; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_29 = ibuf_io_inst_0_bits_inst_bits & 32'hc; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_30 = _id_ctrl_decoder_T_29 == 32'h4; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_31 = ibuf_io_inst_0_bits_inst_bits & 32'h4050; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_32 = _id_ctrl_decoder_T_31 == 32'h4050; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_37 = _id_ctrl_decoder_T_26 | _id_ctrl_decoder_T_28 | _id_ctrl_decoder_T_30 |
+    id_ctrl_decoder_4 | _id_ctrl_decoder_T_32; // @[Decode.scala 15:30]
+  wire  _id_ctrl_decoder_T_39 = _id_ctrl_decoder_T_2 == 32'h0; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_40 = ibuf_io_inst_0_bits_inst_bits & 32'h4008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_41 = _id_ctrl_decoder_T_40 == 32'h4000; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_44 = _id_ctrl_decoder_T_39 | _id_ctrl_decoder_T_19 | _id_ctrl_decoder_T_41; // @[Decode.scala 15:30]
+  wire [1:0] id_ctrl_decoder_9 = {_id_ctrl_decoder_T_44,_id_ctrl_decoder_T_37}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_45 = ibuf_io_inst_0_bits_inst_bits & 32'h50; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_46 = _id_ctrl_decoder_T_45 == 32'h0; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_50 = _id_ctrl_decoder_T_15 | _id_ctrl_decoder_T_46 | _id_ctrl_decoder_T_17 |
+    _id_ctrl_decoder_T_19; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_51 = ibuf_io_inst_0_bits_inst_bits & 32'h24; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_52 = _id_ctrl_decoder_T_51 == 32'h4; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_54 = _id_ctrl_decoder_T_52 | id_ctrl_decoder_4; // @[Decode.scala 15:30]
+  wire [1:0] id_ctrl_decoder_10 = {_id_ctrl_decoder_T_54,_id_ctrl_decoder_T_50}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_55 = ibuf_io_inst_0_bits_inst_bits & 32'h8; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_56 = _id_ctrl_decoder_T_55 == 32'h8; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_58 = _id_ctrl_decoder_T_16 == 32'h40; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_60 = _id_ctrl_decoder_T_56 | _id_ctrl_decoder_T_58; // @[Decode.scala 15:30]
+  wire  _id_ctrl_decoder_T_62 = _id_ctrl_decoder_T_16 == 32'h4; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_64 = _id_ctrl_decoder_T_62 | _id_ctrl_decoder_T_56; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_65 = ibuf_io_inst_0_bits_inst_bits & 32'h14; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_66 = _id_ctrl_decoder_T_65 == 32'h10; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_67 = ibuf_io_inst_0_bits_inst_bits & 32'h30; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_68 = _id_ctrl_decoder_T_67 == 32'h0; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_71 = id_ctrl_decoder_5 | _id_ctrl_decoder_T_66 | _id_ctrl_decoder_T_68; // @[Decode.scala 15:30]
+  wire [2:0] id_ctrl_decoder_11 = {_id_ctrl_decoder_T_71,_id_ctrl_decoder_T_64,_id_ctrl_decoder_T_60}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_74 = ibuf_io_inst_0_bits_inst_bits & 32'h3054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_75 = _id_ctrl_decoder_T_74 == 32'h1010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_76 = ibuf_io_inst_0_bits_inst_bits & 32'h1058; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_77 = _id_ctrl_decoder_T_76 == 32'h1040; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_78 = ibuf_io_inst_0_bits_inst_bits & 32'h7044; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_79 = _id_ctrl_decoder_T_78 == 32'h7000; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_80 = ibuf_io_inst_0_bits_inst_bits & 32'h2001074; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_81 = _id_ctrl_decoder_T_80 == 32'h2001030; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_85 = _id_ctrl_decoder_T_75 | _id_ctrl_decoder_T_77 | _id_ctrl_decoder_T_79 |
+    _id_ctrl_decoder_T_81; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_86 = ibuf_io_inst_0_bits_inst_bits & 32'h4054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_87 = _id_ctrl_decoder_T_86 == 32'h40; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_88 = ibuf_io_inst_0_bits_inst_bits & 32'h3044; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_89 = _id_ctrl_decoder_T_88 == 32'h3000; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_90 = ibuf_io_inst_0_bits_inst_bits & 32'h6044; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_91 = _id_ctrl_decoder_T_90 == 32'h6000; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_92 = ibuf_io_inst_0_bits_inst_bits & 32'h6018; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_93 = _id_ctrl_decoder_T_92 == 32'h6000; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_94 = ibuf_io_inst_0_bits_inst_bits & 32'h2002074; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_95 = _id_ctrl_decoder_T_94 == 32'h2002030; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_96 = ibuf_io_inst_0_bits_inst_bits & 32'h40003034; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_97 = _id_ctrl_decoder_T_96 == 32'h40000030; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_98 = ibuf_io_inst_0_bits_inst_bits & 32'h40001054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_99 = _id_ctrl_decoder_T_98 == 32'h40001010; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_106 = _id_ctrl_decoder_T_87 | _id_ctrl_decoder_T_89 | _id_ctrl_decoder_T_91 |
+    _id_ctrl_decoder_T_93 | _id_ctrl_decoder_T_95 | _id_ctrl_decoder_T_97 | _id_ctrl_decoder_T_99; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_107 = ibuf_io_inst_0_bits_inst_bits & 32'h2002054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_108 = _id_ctrl_decoder_T_107 == 32'h2010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_109 = ibuf_io_inst_0_bits_inst_bits & 32'h2034; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_110 = _id_ctrl_decoder_T_109 == 32'h2010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_111 = ibuf_io_inst_0_bits_inst_bits & 32'h40004054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_112 = _id_ctrl_decoder_T_111 == 32'h4010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_113 = ibuf_io_inst_0_bits_inst_bits & 32'h5054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_114 = _id_ctrl_decoder_T_113 == 32'h4010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_115 = ibuf_io_inst_0_bits_inst_bits & 32'h4058; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_116 = _id_ctrl_decoder_T_115 == 32'h4040; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_121 = _id_ctrl_decoder_T_108 | _id_ctrl_decoder_T_110 | _id_ctrl_decoder_T_112 |
+    _id_ctrl_decoder_T_114 | _id_ctrl_decoder_T_116; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_122 = ibuf_io_inst_0_bits_inst_bits & 32'h2006054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_123 = _id_ctrl_decoder_T_122 == 32'h2010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_124 = ibuf_io_inst_0_bits_inst_bits & 32'h6034; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_125 = _id_ctrl_decoder_T_124 == 32'h2010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_126 = ibuf_io_inst_0_bits_inst_bits & 32'h40003054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_127 = _id_ctrl_decoder_T_126 == 32'h40001010; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_132 = _id_ctrl_decoder_T_123 | _id_ctrl_decoder_T_125 | _id_ctrl_decoder_T_116 |
+    _id_ctrl_decoder_T_97 | _id_ctrl_decoder_T_127; // @[Decode.scala 15:30]
+  wire [3:0] id_ctrl_decoder_13 = {_id_ctrl_decoder_T_132,_id_ctrl_decoder_T_121,_id_ctrl_decoder_T_106,
+    _id_ctrl_decoder_T_85}; // @[Cat.scala 31:58]
+  wire  id_ctrl_decoder_14 = _id_ctrl_decoder_bit_T_17 | _id_ctrl_decoder_bit_T_19 | _id_ctrl_decoder_bit_T_21 |
+    _id_ctrl_decoder_bit_T_23 | _id_ctrl_decoder_bit_T_25 | _id_ctrl_decoder_bit_T_27 | _id_ctrl_decoder_bit_T_29 |
+    _id_ctrl_decoder_bit_T_31 | _id_ctrl_decoder_bit_T_33 | _id_ctrl_decoder_bit_T_35 | _id_ctrl_decoder_bit_T_37 |
+    _id_ctrl_decoder_bit_T_67 | _id_ctrl_decoder_bit_T_69 | _id_ctrl_decoder_bit_T_71 | _id_ctrl_decoder_bit_T_73 |
+    _id_ctrl_decoder_bit_T_75 | _id_ctrl_decoder_bit_T_77 | _id_ctrl_decoder_bit_T_79 | _id_ctrl_decoder_bit_T_81; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_133 = ibuf_io_inst_0_bits_inst_bits & 32'h28; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_134 = _id_ctrl_decoder_T_133 == 32'h20; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_135 = ibuf_io_inst_0_bits_inst_bits & 32'h18000020; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_136 = _id_ctrl_decoder_T_135 == 32'h18000020; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_137 = ibuf_io_inst_0_bits_inst_bits & 32'h20000020; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_138 = _id_ctrl_decoder_T_137 == 32'h20000020; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_141 = _id_ctrl_decoder_T_134 | _id_ctrl_decoder_T_136 | _id_ctrl_decoder_T_138; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_142 = ibuf_io_inst_0_bits_inst_bits & 32'h10000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_143 = _id_ctrl_decoder_T_142 == 32'h10000008; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_144 = ibuf_io_inst_0_bits_inst_bits & 32'h40000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_145 = _id_ctrl_decoder_T_144 == 32'h40000008; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_147 = _id_ctrl_decoder_T_143 | _id_ctrl_decoder_T_145; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_148 = ibuf_io_inst_0_bits_inst_bits & 32'h8000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_149 = _id_ctrl_decoder_T_148 == 32'h8000008; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_150 = ibuf_io_inst_0_bits_inst_bits & 32'h80000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_151 = _id_ctrl_decoder_T_150 == 32'h80000008; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_154 = _id_ctrl_decoder_T_149 | _id_ctrl_decoder_T_143 | _id_ctrl_decoder_T_151; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_155 = ibuf_io_inst_0_bits_inst_bits & 32'h18000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_156 = _id_ctrl_decoder_T_155 == 32'h8; // @[Decode.scala 14:121]
+  wire [4:0] id_ctrl_decoder_15 = {1'h0,_id_ctrl_decoder_T_156,_id_ctrl_decoder_T_154,_id_ctrl_decoder_T_147,
+    _id_ctrl_decoder_T_141}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_158 = ibuf_io_inst_0_bits_inst_bits & 32'h2000074; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_21 = _id_ctrl_decoder_T_158 == 32'h2000030; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_161 = _id_ctrl_decoder_T_133 == 32'h0; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_163 = _id_ctrl_decoder_T_45 == 32'h10; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_164 = ibuf_io_inst_0_bits_inst_bits & 32'h1010; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_165 = _id_ctrl_decoder_T_164 == 32'h1010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_166 = ibuf_io_inst_0_bits_inst_bits & 32'h2008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_167 = _id_ctrl_decoder_T_166 == 32'h2008; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_168 = ibuf_io_inst_0_bits_inst_bits & 32'h2010; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_169 = _id_ctrl_decoder_T_168 == 32'h2010; // @[Decode.scala 14:121]
+  wire  id_ctrl_decoder_22 = _id_ctrl_decoder_T_161 | _id_ctrl_decoder_T_30 | _id_ctrl_decoder_T_163 | id_ctrl_decoder_4
+     | _id_ctrl_decoder_T_165 | _id_ctrl_decoder_T_167 | _id_ctrl_decoder_T_169; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_176 = ibuf_io_inst_0_bits_inst_bits & 32'h1050; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_177 = _id_ctrl_decoder_T_176 == 32'h1050; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_180 = _id_ctrl_decoder_T_20 == 32'h2050; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_183 = _id_ctrl_decoder_T_45 == 32'h50; // @[Decode.scala 14:121]
+  wire [2:0] id_ctrl_decoder_23 = {_id_ctrl_decoder_T_183,_id_ctrl_decoder_T_180,_id_ctrl_decoder_T_177}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_185 = ibuf_io_inst_0_bits_inst_bits & 32'h1048; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_24 = _id_ctrl_decoder_T_185 == 32'h1008; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_187 = ibuf_io_inst_0_bits_inst_bits & 32'h2048; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_25 = _id_ctrl_decoder_T_187 == 32'h8; // @[Decode.scala 14:121]
+  wire  id_ctrl_decoder_26 = _id_ctrl_decoder_T_187 == 32'h2008; // @[Decode.scala 14:121]
+  wire [4:0] id_raddr2 = ibuf_io_inst_0_bits_inst_rs2; // @[RocketCore.scala 276:72]
+  wire [4:0] id_raddr1 = ibuf_io_inst_0_bits_inst_rs1; // @[RocketCore.scala 276:72]
+  wire [4:0] id_waddr = ibuf_io_inst_0_bits_inst_rd; // @[RocketCore.scala 276:72]
+  reg  id_reg_fence; // @[RocketCore.scala 283:25]
+  wire [31:0] _id_rs_T_4 = rf_id_rs_MPORT_data; // @[RocketCore.scala 1068:25]
+  wire [31:0] _id_rs_T_9 = rf_id_rs_MPORT_1_data; // @[RocketCore.scala 1068:25]
+  wire  _id_csr_en_T = id_ctrl_decoder_23 == 3'h6; // @[package.scala 15:47]
+  wire  _id_csr_en_T_1 = id_ctrl_decoder_23 == 3'h7; // @[package.scala 15:47]
+  wire  _id_csr_en_T_2 = id_ctrl_decoder_23 == 3'h5; // @[package.scala 15:47]
+  wire  _id_csr_en_T_3 = _id_csr_en_T | _id_csr_en_T_1; // @[package.scala 72:59]
+  wire  id_csr_en = _id_csr_en_T | _id_csr_en_T_1 | _id_csr_en_T_2; // @[package.scala 72:59]
+  wire  id_system_insn = id_ctrl_decoder_23 == 3'h4; // @[RocketCore.scala 293:36]
+  wire  id_csr_ren = _id_csr_en_T_3 & ibuf_io_inst_0_bits_inst_rs1 == 5'h0; // @[RocketCore.scala 294:54]
+  wire  _id_csr_flush_T = ~id_csr_ren; // @[RocketCore.scala 296:54]
+  wire  id_csr_flush = id_system_insn | id_csr_en & ~id_csr_ren & csr_io_decode_0_write_flush; // @[RocketCore.scala 296:37]
+  wire  _id_illegal_insn_T_4 = id_ctrl_decoder_21 & ~csr_io_status_isa[12]; // @[RocketCore.scala 305:34]
+  wire  _id_illegal_insn_T_5 = ~id_ctrl_decoder_0 | _id_illegal_insn_T_4; // @[RocketCore.scala 304:40]
+  wire  _id_illegal_insn_T_8 = id_ctrl_decoder_26 & ~csr_io_status_isa[0]; // @[RocketCore.scala 306:17]
+  wire  _id_illegal_insn_T_9 = _id_illegal_insn_T_5 | _id_illegal_insn_T_8; // @[RocketCore.scala 305:65]
+  wire  _id_illegal_insn_T_18 = ~csr_io_status_isa[2]; // @[RocketCore.scala 309:33]
+  wire  _id_illegal_insn_T_19 = ibuf_io_inst_0_bits_rvc & ~csr_io_status_isa[2]; // @[RocketCore.scala 309:30]
+  wire  _id_illegal_insn_T_20 = _id_illegal_insn_T_9 | _id_illegal_insn_T_19; // @[RocketCore.scala 308:47]
+  wire  _id_illegal_insn_T_42 = id_csr_en & (csr_io_decode_0_read_illegal | _id_csr_flush_T &
+    csr_io_decode_0_write_illegal); // @[RocketCore.scala 315:15]
+  wire  _id_illegal_insn_T_43 = _id_illegal_insn_T_20 | _id_illegal_insn_T_42; // @[RocketCore.scala 314:81]
+  wire  _id_illegal_insn_T_46 = ~ibuf_io_inst_0_bits_rvc & (id_system_insn & csr_io_decode_0_system_illegal); // @[RocketCore.scala 316:31]
+  wire  id_illegal_insn = _id_illegal_insn_T_43 | _id_illegal_insn_T_46; // @[RocketCore.scala 315:99]
+  wire  id_amo_aq = ibuf_io_inst_0_bits_inst_bits[26]; // @[RocketCore.scala 321:29]
+  wire  id_amo_rl = ibuf_io_inst_0_bits_inst_bits[25]; // @[RocketCore.scala 322:29]
+  wire [3:0] id_fence_succ = ibuf_io_inst_0_bits_inst_bits[23:20]; // @[RocketCore.scala 324:33]
+  wire  id_fence_next = id_ctrl_decoder_25 | id_ctrl_decoder_26 & id_amo_aq; // @[RocketCore.scala 325:37]
+  wire  id_mem_busy = ~io_dmem_ordered | io_dmem_req_valid; // @[RocketCore.scala 326:38]
+  wire  _GEN_0 = ~id_mem_busy ? 1'h0 : id_reg_fence; // @[RocketCore.scala 327:23 283:25 327:38]
+  wire  id_do_fence_x9 = id_mem_busy & (id_ctrl_decoder_26 & id_amo_rl | id_ctrl_decoder_24 | id_reg_fence &
+    id_ctrl_decoder_14); // @[RocketCore.scala 332:17]
+  wire  id_xcpt = csr_io_interrupt | bpu_io_debug_if | bpu_io_xcpt_if | ibuf_io_inst_0_bits_xcpt0_ae_inst |
+    ibuf_io_inst_0_bits_xcpt1_pf_inst | ibuf_io_inst_0_bits_xcpt1_gf_inst | ibuf_io_inst_0_bits_xcpt1_ae_inst |
+    id_illegal_insn; // @[RocketCore.scala 1021:26]
+  wire [4:0] _T_11 = ibuf_io_inst_0_bits_xcpt1_ae_inst ? 5'h1 : 5'h2; // @[Mux.scala 47:70]
+  wire [4:0] _T_12 = ibuf_io_inst_0_bits_xcpt1_gf_inst ? 5'h14 : _T_11; // @[Mux.scala 47:70]
+  wire [4:0] _T_13 = ibuf_io_inst_0_bits_xcpt1_pf_inst ? 5'hc : _T_12; // @[Mux.scala 47:70]
+  wire [4:0] _T_14 = ibuf_io_inst_0_bits_xcpt0_ae_inst ? 5'h1 : _T_13; // @[Mux.scala 47:70]
+  wire [4:0] _T_17 = bpu_io_xcpt_if ? 5'h3 : _T_14; // @[Mux.scala 47:70]
+  wire [4:0] _T_18 = bpu_io_debug_if ? 5'he : _T_17; // @[Mux.scala 47:70]
+  wire [4:0] ex_waddr = ex_reg_inst[11:7]; // @[RocketCore.scala 373:29]
+  wire [4:0] mem_waddr = mem_reg_inst[11:7]; // @[RocketCore.scala 374:31]
+  wire [4:0] wb_waddr = wb_reg_inst[11:7]; // @[RocketCore.scala 375:29]
+  wire  _T_27 = ex_reg_valid & ex_ctrl_wxd; // @[RocketCore.scala 378:19]
+  wire  _T_28 = mem_reg_valid & mem_ctrl_wxd; // @[RocketCore.scala 379:20]
+  wire  _T_30 = mem_reg_valid & mem_ctrl_wxd & ~mem_ctrl_mem; // @[RocketCore.scala 379:36]
+  wire  id_bypass_src_0_0 = 5'h0 == id_raddr1; // @[RocketCore.scala 381:82]
+  wire  id_bypass_src_0_1 = _T_27 & ex_waddr == id_raddr1; // @[RocketCore.scala 381:74]
+  wire  id_bypass_src_0_2 = _T_30 & mem_waddr == id_raddr1; // @[RocketCore.scala 381:74]
+  wire  id_bypass_src_0_3 = _T_28 & mem_waddr == id_raddr1; // @[RocketCore.scala 381:74]
+  wire  id_bypass_src_1_0 = 5'h0 == id_raddr2; // @[RocketCore.scala 381:82]
+  wire  id_bypass_src_1_1 = _T_27 & ex_waddr == id_raddr2; // @[RocketCore.scala 381:74]
+  wire  id_bypass_src_1_2 = _T_30 & mem_waddr == id_raddr2; // @[RocketCore.scala 381:74]
+  wire  id_bypass_src_1_3 = _T_28 & mem_waddr == id_raddr2; // @[RocketCore.scala 381:74]
+  reg  ex_reg_rs_bypass_0; // @[RocketCore.scala 385:29]
+  reg  ex_reg_rs_bypass_1; // @[RocketCore.scala 385:29]
+  reg [1:0] ex_reg_rs_lsb_0; // @[RocketCore.scala 386:26]
+  reg [1:0] ex_reg_rs_lsb_1; // @[RocketCore.scala 386:26]
+  reg [29:0] ex_reg_rs_msb_0; // @[RocketCore.scala 387:26]
+  reg [29:0] ex_reg_rs_msb_1; // @[RocketCore.scala 387:26]
+  wire [31:0] _ex_rs_T_1 = ex_reg_rs_lsb_0 == 2'h1 ? mem_reg_wdata : 32'h0; // @[package.scala 32:76]
+  wire [31:0] _ex_rs_T_3 = ex_reg_rs_lsb_0 == 2'h2 ? wb_reg_wdata : _ex_rs_T_1; // @[package.scala 32:76]
+  wire [31:0] _ex_rs_T_5 = ex_reg_rs_lsb_0 == 2'h3 ? io_dmem_resp_bits_data_word_bypass : _ex_rs_T_3; // @[package.scala 32:76]
+  wire [31:0] _ex_rs_T_6 = {ex_reg_rs_msb_0,ex_reg_rs_lsb_0}; // @[Cat.scala 31:58]
+  wire [31:0] _ex_rs_T_8 = ex_reg_rs_lsb_1 == 2'h1 ? mem_reg_wdata : 32'h0; // @[package.scala 32:76]
+  wire [31:0] _ex_rs_T_10 = ex_reg_rs_lsb_1 == 2'h2 ? wb_reg_wdata : _ex_rs_T_8; // @[package.scala 32:76]
+  wire [31:0] _ex_rs_T_12 = ex_reg_rs_lsb_1 == 2'h3 ? io_dmem_resp_bits_data_word_bypass : _ex_rs_T_10; // @[package.scala 32:76]
+  wire [31:0] _ex_rs_T_13 = {ex_reg_rs_msb_1,ex_reg_rs_lsb_1}; // @[Cat.scala 31:58]
+  wire [31:0] ex_rs_1 = ex_reg_rs_bypass_1 ? _ex_rs_T_12 : _ex_rs_T_13; // @[RocketCore.scala 389:14]
+  wire  _ex_imm_sign_T = ex_ctrl_sel_imm == 3'h5; // @[RocketCore.scala 1083:24]
+  wire  _ex_imm_sign_T_2 = ex_reg_inst[31]; // @[RocketCore.scala 1083:53]
+  wire  ex_imm_sign = ex_ctrl_sel_imm == 3'h5 ? $signed(1'sh0) : $signed(_ex_imm_sign_T_2); // @[RocketCore.scala 1083:19]
+  wire  _ex_imm_b30_20_T = ex_ctrl_sel_imm == 3'h2; // @[RocketCore.scala 1084:26]
+  wire [10:0] _ex_imm_b30_20_T_2 = ex_reg_inst[30:20]; // @[RocketCore.scala 1084:49]
+  wire [7:0] _ex_imm_b19_12_T_4 = ex_reg_inst[19:12]; // @[RocketCore.scala 1085:73]
+  wire  _ex_imm_b11_T_2 = _ex_imm_b30_20_T | _ex_imm_sign_T; // @[RocketCore.scala 1086:33]
+  wire  _ex_imm_b11_T_5 = ex_reg_inst[20]; // @[RocketCore.scala 1087:44]
+  wire  _ex_imm_b11_T_6 = ex_ctrl_sel_imm == 3'h1; // @[RocketCore.scala 1088:23]
+  wire  _ex_imm_b11_T_8 = ex_reg_inst[7]; // @[RocketCore.scala 1088:43]
+  wire  _ex_imm_b11_T_9 = ex_ctrl_sel_imm == 3'h1 ? $signed(_ex_imm_b11_T_8) : $signed(ex_imm_sign); // @[RocketCore.scala 1088:18]
+  wire  _ex_imm_b11_T_10 = ex_ctrl_sel_imm == 3'h3 ? $signed(_ex_imm_b11_T_5) : $signed(_ex_imm_b11_T_9); // @[RocketCore.scala 1087:18]
+  wire [5:0] ex_imm_b10_5 = _ex_imm_b11_T_2 ? 6'h0 : ex_reg_inst[30:25]; // @[RocketCore.scala 1089:20]
+  wire  _ex_imm_b4_1_T_1 = ex_ctrl_sel_imm == 3'h0; // @[RocketCore.scala 1091:24]
+  wire [3:0] _ex_imm_b4_1_T_8 = _ex_imm_sign_T ? ex_reg_inst[19:16] : ex_reg_inst[24:21]; // @[RocketCore.scala 1092:19]
+  wire [3:0] _ex_imm_b4_1_T_9 = ex_ctrl_sel_imm == 3'h0 | _ex_imm_b11_T_6 ? ex_reg_inst[11:8] : _ex_imm_b4_1_T_8; // @[RocketCore.scala 1091:19]
+  wire [3:0] ex_imm_b4_1 = _ex_imm_b30_20_T ? 4'h0 : _ex_imm_b4_1_T_9; // @[RocketCore.scala 1090:19]
+  wire  _ex_imm_b0_T_6 = _ex_imm_sign_T & ex_reg_inst[15]; // @[RocketCore.scala 1095:17]
+  wire  _ex_imm_b0_T_7 = ex_ctrl_sel_imm == 3'h4 ? ex_reg_inst[20] : _ex_imm_b0_T_6; // @[RocketCore.scala 1094:17]
+  wire  ex_imm_b0 = _ex_imm_b4_1_T_1 ? ex_reg_inst[7] : _ex_imm_b0_T_7; // @[RocketCore.scala 1093:17]
+  wire  ex_imm_hi_lo_lo = _ex_imm_b30_20_T | _ex_imm_sign_T ? $signed(1'sh0) : $signed(_ex_imm_b11_T_10); // @[Cat.scala 31:58]
+  wire [7:0] ex_imm_hi_lo_hi = ex_ctrl_sel_imm != 3'h2 & ex_ctrl_sel_imm != 3'h3 ? $signed({8{ex_imm_sign}}) : $signed(
+    _ex_imm_b19_12_T_4); // @[Cat.scala 31:58]
+  wire [10:0] ex_imm_hi_hi_lo = ex_ctrl_sel_imm == 3'h2 ? $signed(_ex_imm_b30_20_T_2) : $signed({11{ex_imm_sign}}); // @[Cat.scala 31:58]
+  wire  ex_imm_hi_hi_hi = ex_ctrl_sel_imm == 3'h5 ? $signed(1'sh0) : $signed(_ex_imm_sign_T_2); // @[Cat.scala 31:58]
+  wire [31:0] ex_imm = {ex_imm_hi_hi_hi,ex_imm_hi_hi_lo,ex_imm_hi_lo_hi,ex_imm_hi_lo_lo,ex_imm_b10_5,ex_imm_b4_1,
+    ex_imm_b0}; // @[RocketCore.scala 1097:53]
+  wire [31:0] _ex_op1_T = ex_reg_rs_bypass_0 ? _ex_rs_T_5 : _ex_rs_T_6; // @[RocketCore.scala 392:24]
+  wire [31:0] _ex_op1_T_3 = 2'h1 == ex_ctrl_sel_alu1 ? $signed(_ex_op1_T) : $signed(32'sh0); // @[Mux.scala 81:58]
+  wire [31:0] _ex_op2_T = ex_reg_rs_bypass_1 ? _ex_rs_T_12 : _ex_rs_T_13; // @[RocketCore.scala 395:24]
+  wire [3:0] _ex_op2_T_1 = ex_reg_rvc ? $signed(4'sh2) : $signed(4'sh4); // @[RocketCore.scala 397:19]
+  wire [31:0] _ex_op2_T_3 = 2'h2 == ex_ctrl_sel_alu2 ? $signed(_ex_op2_T) : $signed(32'sh0); // @[Mux.scala 81:58]
+  wire [31:0] _ex_op2_T_5 = 2'h3 == ex_ctrl_sel_alu2 ? $signed(ex_imm) : $signed(_ex_op2_T_3); // @[Mux.scala 81:58]
+  wire  _T_138 = id_raddr1 != 5'h0; // @[RocketCore.scala 757:55]
+  wire  _T_139 = id_ctrl_decoder_7 & id_raddr1 != 5'h0; // @[RocketCore.scala 757:42]
+  wire  _data_hazard_ex_T = id_raddr1 == ex_waddr; // @[RocketCore.scala 777:70]
+  wire  _T_140 = id_raddr2 != 5'h0; // @[RocketCore.scala 758:55]
+  wire  _T_141 = id_ctrl_decoder_6 & id_raddr2 != 5'h0; // @[RocketCore.scala 758:42]
+  wire  _data_hazard_ex_T_2 = id_raddr2 == ex_waddr; // @[RocketCore.scala 777:70]
+  wire  _T_143 = id_ctrl_decoder_22 & id_waddr != 5'h0; // @[RocketCore.scala 759:42]
+  wire  _data_hazard_ex_T_4 = id_waddr == ex_waddr; // @[RocketCore.scala 777:70]
+  wire  _data_hazard_ex_T_7 = _T_139 & _data_hazard_ex_T | _T_141 & _data_hazard_ex_T_2 | _T_143 & _data_hazard_ex_T_4; // @[RocketCore.scala 1030:50]
+  wire  data_hazard_ex = ex_ctrl_wxd & _data_hazard_ex_T_7; // @[RocketCore.scala 777:36]
+  wire  ex_cannot_bypass = ex_ctrl_csr != 3'h0 | ex_ctrl_jalr | ex_ctrl_mem | ex_ctrl_div; // @[RocketCore.scala 776:94]
+  wire  id_ex_hazard = ex_reg_valid & (data_hazard_ex & ex_cannot_bypass); // @[RocketCore.scala 779:35]
+  wire  _data_hazard_mem_T = id_raddr1 == mem_waddr; // @[RocketCore.scala 786:72]
+  wire  _data_hazard_mem_T_2 = id_raddr2 == mem_waddr; // @[RocketCore.scala 786:72]
+  wire  _data_hazard_mem_T_4 = id_waddr == mem_waddr; // @[RocketCore.scala 786:72]
+  wire  _data_hazard_mem_T_7 = _T_139 & _data_hazard_mem_T | _T_141 & _data_hazard_mem_T_2 | _T_143 &
+    _data_hazard_mem_T_4; // @[RocketCore.scala 1030:50]
+  wire  data_hazard_mem = mem_ctrl_wxd & _data_hazard_mem_T_7; // @[RocketCore.scala 786:38]
+  wire  mem_cannot_bypass = mem_ctrl_csr != 3'h0 | mem_ctrl_mem & mem_reg_slow_bypass | mem_ctrl_div; // @[RocketCore.scala 785:100]
+  wire  id_mem_hazard = mem_reg_valid & (data_hazard_mem & mem_cannot_bypass); // @[RocketCore.scala 788:37]
+  wire  _data_hazard_wb_T = id_raddr1 == wb_waddr; // @[RocketCore.scala 792:70]
+  wire  _data_hazard_wb_T_2 = id_raddr2 == wb_waddr; // @[RocketCore.scala 792:70]
+  wire  _data_hazard_wb_T_4 = id_waddr == wb_waddr; // @[RocketCore.scala 792:70]
+  wire  _data_hazard_wb_T_7 = _T_139 & _data_hazard_wb_T | _T_141 & _data_hazard_wb_T_2 | _T_143 & _data_hazard_wb_T_4; // @[RocketCore.scala 1030:50]
+  wire  data_hazard_wb = wb_ctrl_wxd & _data_hazard_wb_T_7; // @[RocketCore.scala 792:36]
+  wire  wb_dcache_miss = wb_ctrl_mem & ~io_dmem_resp_valid; // @[RocketCore.scala 509:36]
+  wire  wb_set_sboard = wb_ctrl_div | wb_dcache_miss; // @[RocketCore.scala 663:35]
+  wire  id_wb_hazard = wb_reg_valid & (data_hazard_wb & wb_set_sboard); // @[RocketCore.scala 794:35]
+  reg [31:0] _r; // @[RocketCore.scala 1047:25]
+  wire [31:0] r = {_r[31:1], 1'h0}; // @[RocketCore.scala 1048:40]
+  wire [31:0] _id_sboard_hazard_T = r >> id_raddr1; // @[RocketCore.scala 1044:35]
+  wire  dmem_resp_valid = io_dmem_resp_valid & io_dmem_resp_bits_has_data; // @[RocketCore.scala 673:44]
+  wire  dmem_resp_replay = dmem_resp_valid & io_dmem_resp_bits_replay; // @[RocketCore.scala 674:42]
+  wire  dmem_resp_xpu = ~io_dmem_resp_bits_tag[0]; // @[RocketCore.scala 670:23]
+  wire  ll_wen_x2 = div_io_resp_ready & div_io_resp_valid; // @[Decoupled.scala 50:35]
+  wire  ll_wen = dmem_resp_replay & dmem_resp_xpu | ll_wen_x2; // @[RocketCore.scala 689:44 694:12]
+  wire [4:0] dmem_resp_waddr = io_dmem_resp_bits_tag[5:1]; // @[RocketCore.scala 672:46]
+  wire [4:0] ll_waddr = dmem_resp_replay & dmem_resp_xpu ? dmem_resp_waddr : div_io_resp_bits_tag; // @[RocketCore.scala 689:44 693:14]
+  wire  _id_sboard_hazard_T_3 = ll_wen & ll_waddr == id_raddr1; // @[RocketCore.scala 769:58]
+  wire  _id_sboard_hazard_T_5 = _id_sboard_hazard_T[0] & ~_id_sboard_hazard_T_3; // @[RocketCore.scala 772:77]
+  wire [31:0] _id_sboard_hazard_T_7 = r >> id_raddr2; // @[RocketCore.scala 1044:35]
+  wire  _id_sboard_hazard_T_10 = ll_wen & ll_waddr == id_raddr2; // @[RocketCore.scala 769:58]
+  wire  _id_sboard_hazard_T_12 = _id_sboard_hazard_T_7[0] & ~_id_sboard_hazard_T_10; // @[RocketCore.scala 772:77]
+  wire [31:0] _id_sboard_hazard_T_14 = r >> id_waddr; // @[RocketCore.scala 1044:35]
+  wire  _id_sboard_hazard_T_17 = ll_wen & ll_waddr == id_waddr; // @[RocketCore.scala 769:58]
+  wire  _id_sboard_hazard_T_19 = _id_sboard_hazard_T_14[0] & ~_id_sboard_hazard_T_17; // @[RocketCore.scala 772:77]
+  wire  id_sboard_hazard = _T_139 & _id_sboard_hazard_T_5 | _T_141 & _id_sboard_hazard_T_12 | _T_143 &
+    _id_sboard_hazard_T_19; // @[RocketCore.scala 1030:50]
+  wire  _ctrl_stalld_T_5 = csr_io_singleStep & (ex_reg_valid | mem_reg_valid | wb_reg_valid); // @[RocketCore.scala 816:23]
+  wire  _ctrl_stalld_T_6 = id_ex_hazard | id_mem_hazard | id_wb_hazard | id_sboard_hazard | _ctrl_stalld_T_5; // @[RocketCore.scala 815:71]
+  reg  blocked; // @[RocketCore.scala 807:22]
+  wire  _dcache_blocked_T = ~io_dmem_perf_grant; // @[RocketCore.scala 809:16]
+  wire  dcache_blocked = blocked & ~io_dmem_perf_grant; // @[RocketCore.scala 809:13]
+  wire  _ctrl_stalld_T_13 = id_ctrl_decoder_14 & dcache_blocked; // @[RocketCore.scala 819:17]
+  wire  _ctrl_stalld_T_14 = _ctrl_stalld_T_6 | _ctrl_stalld_T_13; // @[RocketCore.scala 818:32]
+  wire  wb_wxd = wb_reg_valid & wb_ctrl_wxd; // @[RocketCore.scala 662:29]
+  wire  _ctrl_stalld_T_17 = ~wb_wxd; // @[RocketCore.scala 821:65]
+  wire  _ctrl_stalld_T_22 = id_ctrl_decoder_21 & (~(div_io_req_ready | div_io_resp_valid & ~wb_wxd) | div_io_req_valid); // @[RocketCore.scala 821:17]
+  wire  _ctrl_stalld_T_23 = _ctrl_stalld_T_14 | _ctrl_stalld_T_22; // @[RocketCore.scala 820:34]
+  wire  _ctrl_stalld_T_26 = _ctrl_stalld_T_23 | id_do_fence_x9; // @[RocketCore.scala 822:15]
+  wire  _ctrl_stalld_T_27 = _ctrl_stalld_T_26 | csr_io_csr_stall; // @[RocketCore.scala 823:17]
+  wire  ctrl_stalld = _ctrl_stalld_T_27 | id_reg_pause; // @[RocketCore.scala 824:22]
+  wire  ctrl_killd = ~ibuf_io_inst_0_valid | ibuf_io_inst_0_bits_replay | take_pc_mem_wb | ctrl_stalld |
+    csr_io_interrupt; // @[RocketCore.scala 827:104]
+  wire  _ex_reg_valid_T = ~ctrl_killd; // @[RocketCore.scala 437:19]
+  wire  _ex_reg_replay_T = ~take_pc_mem_wb; // @[RocketCore.scala 438:20]
+  wire  _ex_reg_replay_T_1 = ~take_pc_mem_wb & ibuf_io_inst_0_valid; // @[RocketCore.scala 438:29]
+  wire  _GEN_1 = id_ctrl_decoder_25 & id_fence_succ == 4'h0 | id_reg_pause; // @[RocketCore.scala 116:25 448:{49,64}]
+  wire  _GEN_2 = id_fence_next | _GEN_0; // @[RocketCore.scala 449:{26,41}]
+  wire [2:0] _T_35 = {ibuf_io_inst_0_bits_xcpt1_pf_inst,ibuf_io_inst_0_bits_xcpt1_gf_inst,
+    ibuf_io_inst_0_bits_xcpt1_ae_inst}; // @[RocketCore.scala 455:22]
+  wire  _GEN_5 = |_T_35 | ibuf_io_inst_0_bits_rvc; // @[RocketCore.scala 444:16 455:34 458:20]
+  wire [2:0] _T_37 = {2'h0,ibuf_io_inst_0_bits_xcpt0_ae_inst}; // @[RocketCore.scala 460:40]
+  wire  _T_40 = id_ctrl_decoder_15 == 5'h14; // @[package.scala 15:47]
+  wire  _T_41 = id_ctrl_decoder_15 == 5'h15; // @[package.scala 15:47]
+  wire  _T_42 = id_ctrl_decoder_15 == 5'h16; // @[package.scala 15:47]
+  wire  _T_43 = id_ctrl_decoder_15 == 5'h5; // @[package.scala 15:47]
+  wire  _T_46 = _T_40 | _T_41 | _T_42 | _T_43; // @[package.scala 72:59]
+  wire [1:0] _ex_reg_mem_size_T_6 = {_T_140,_T_138}; // @[Cat.scala 31:58]
+  wire  do_bypass = id_bypass_src_0_0 | id_bypass_src_0_1 | id_bypass_src_0_2 | id_bypass_src_0_3; // @[RocketCore.scala 482:48]
+  wire [1:0] _bypass_src_T = id_bypass_src_0_2 ? 2'h2 : 2'h3; // @[Mux.scala 47:70]
+  wire [1:0] _bypass_src_T_1 = id_bypass_src_0_1 ? 2'h1 : _bypass_src_T; // @[Mux.scala 47:70]
+  wire  wb_valid = wb_reg_valid & ~replay_wb_common & ~wb_xcpt; // @[RocketCore.scala 697:45]
+  wire  wb_wen = wb_valid & wb_ctrl_wxd; // @[RocketCore.scala 698:25]
+  wire  rf_wen = wb_wen | ll_wen; // @[RocketCore.scala 699:23]
+  wire [4:0] rf_waddr = ll_wen ? ll_waddr : wb_waddr; // @[RocketCore.scala 700:21]
+  wire  _T_133 = rf_waddr != 5'h0; // @[RocketCore.scala 1073:16]
+  wire  _rf_wdata_T = dmem_resp_valid & dmem_resp_xpu; // @[RocketCore.scala 701:38]
+  wire [31:0] ll_wdata = div_io_resp_bits_data;
+  wire [31:0] _rf_wdata_T_4 = wb_ctrl_csr != 3'h0 ? csr_io_rw_rdata : wb_reg_wdata; // @[RocketCore.scala 703:21]
+  wire [31:0] _rf_wdata_T_5 = ll_wen ? ll_wdata : _rf_wdata_T_4; // @[RocketCore.scala 702:21]
+  wire [31:0] rf_wdata = dmem_resp_valid & dmem_resp_xpu ? io_dmem_resp_bits_data : _rf_wdata_T_5; // @[RocketCore.scala 701:21]
+  wire [31:0] _GEN_237 = rf_waddr == id_raddr1 ? rf_wdata : _id_rs_T_4; // @[RocketCore.scala 1068:19 1076:{31,39}]
+  wire [31:0] _GEN_244 = rf_waddr != 5'h0 ? _GEN_237 : _id_rs_T_4; // @[RocketCore.scala 1068:19 1073:29]
+  wire [31:0] id_rs_0 = rf_wen ? _GEN_244 : _id_rs_T_4; // @[RocketCore.scala 706:17 1068:19]
+  wire  do_bypass_1 = id_bypass_src_1_0 | id_bypass_src_1_1 | id_bypass_src_1_2 | id_bypass_src_1_3; // @[RocketCore.scala 482:48]
+  wire [1:0] _bypass_src_T_2 = id_bypass_src_1_2 ? 2'h2 : 2'h3; // @[Mux.scala 47:70]
+  wire [31:0] _GEN_238 = rf_waddr == id_raddr2 ? rf_wdata : _id_rs_T_9; // @[RocketCore.scala 1068:19 1076:{31,39}]
+  wire [31:0] _GEN_245 = rf_waddr != 5'h0 ? _GEN_238 : _id_rs_T_9; // @[RocketCore.scala 1068:19 1073:29]
+  wire [31:0] id_rs_1 = rf_wen ? _GEN_245 : _id_rs_T_9; // @[RocketCore.scala 706:17 1068:19]
+  wire [31:0] inst = ibuf_io_inst_0_bits_rvc ? {{16'd0}, ibuf_io_inst_0_bits_raw[15:0]} : ibuf_io_inst_0_bits_raw; // @[RocketCore.scala 492:21]
+  wire  id_load_use = mem_reg_valid & data_hazard_mem & mem_ctrl_mem; // @[RocketCore.scala 789:51]
+  wire  _replay_ex_structural_T = ~io_dmem_req_ready; // @[RocketCore.scala 510:45]
+  wire  _replay_ex_structural_T_3 = ex_ctrl_div & ~div_io_req_ready; // @[RocketCore.scala 511:42]
+  wire  replay_ex_structural = ex_ctrl_mem & ~io_dmem_req_ready | _replay_ex_structural_T_3; // @[RocketCore.scala 510:64]
+  wire  replay_ex_load_use = wb_dcache_miss & ex_reg_load_use; // @[RocketCore.scala 512:43]
+  wire  replay_ex = ex_reg_replay | ex_reg_valid & (replay_ex_structural | replay_ex_load_use); // @[RocketCore.scala 513:33]
+  wire  ctrl_killx = take_pc_mem_wb | replay_ex | ~ex_reg_valid; // @[RocketCore.scala 514:48]
+  wire  _ex_slow_bypass_T = ex_ctrl_mem_cmd == 5'h7; // @[RocketCore.scala 516:40]
+  wire  ex_slow_bypass = ex_ctrl_mem_cmd == 5'h7 | ex_reg_mem_size < 2'h2; // @[RocketCore.scala 516:50]
+  wire  ex_xcpt = ex_reg_xcpt_interrupt | ex_reg_xcpt; // @[RocketCore.scala 520:28]
+  wire  mem_pc_valid = mem_reg_valid | mem_reg_replay | mem_reg_xcpt_interrupt; // @[RocketCore.scala 526:54]
+  wire  mem_npc_misaligned = _id_illegal_insn_T_18 & mem_npc[1]; // @[RocketCore.scala 535:56]
+  wire [31:0] mem_int_wdata = _take_pc_mem_T & (mem_ctrl_jalr ^ mem_npc_misaligned) ? $signed(mem_br_target) : $signed(
+    mem_reg_wdata); // @[RocketCore.scala 536:119]
+  wire  mem_cfi = mem_ctrl_branch | mem_ctrl_jalr | mem_ctrl_jal; // @[RocketCore.scala 537:50]
+  wire  mem_cfi_taken = _mem_br_target_T_1 | mem_ctrl_jalr | mem_ctrl_jal; // @[RocketCore.scala 538:74]
+  wire  _mem_reg_valid_T = ~ctrl_killx; // @[RocketCore.scala 543:20]
+  wire  _mem_reg_load_T = ex_ctrl_mem_cmd == 5'h0; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_1 = ex_ctrl_mem_cmd == 5'h10; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_2 = ex_ctrl_mem_cmd == 5'h6; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_6 = _mem_reg_load_T | _mem_reg_load_T_1 | _mem_reg_load_T_2 | _ex_slow_bypass_T; // @[package.scala 72:59]
+  wire  _mem_reg_load_T_7 = ex_ctrl_mem_cmd == 5'h4; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_8 = ex_ctrl_mem_cmd == 5'h9; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_9 = ex_ctrl_mem_cmd == 5'ha; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_10 = ex_ctrl_mem_cmd == 5'hb; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_13 = _mem_reg_load_T_7 | _mem_reg_load_T_8 | _mem_reg_load_T_9 | _mem_reg_load_T_10; // @[package.scala 72:59]
+  wire  _mem_reg_load_T_14 = ex_ctrl_mem_cmd == 5'h8; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_15 = ex_ctrl_mem_cmd == 5'hc; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_16 = ex_ctrl_mem_cmd == 5'hd; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_17 = ex_ctrl_mem_cmd == 5'he; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_18 = ex_ctrl_mem_cmd == 5'hf; // @[package.scala 15:47]
+  wire  _mem_reg_load_T_22 = _mem_reg_load_T_14 | _mem_reg_load_T_15 | _mem_reg_load_T_16 | _mem_reg_load_T_17 |
+    _mem_reg_load_T_18; // @[package.scala 72:59]
+  wire  _mem_reg_load_T_23 = _mem_reg_load_T_13 | _mem_reg_load_T_22; // @[Consts.scala 82:44]
+  wire  _mem_reg_load_T_24 = _mem_reg_load_T_6 | _mem_reg_load_T_23; // @[Consts.scala 84:68]
+  wire  _mem_reg_store_T_22 = ex_ctrl_mem_cmd == 5'h1 | ex_ctrl_mem_cmd == 5'h11 | _ex_slow_bypass_T |
+    _mem_reg_load_T_23; // @[Consts.scala 85:76]
+  wire [31:0] _mem_reg_wdata_T = alu_io_out; // @[RocketCore.scala 571:25]
+  wire [31:0] _mem_reg_rs2_T_3 = {ex_rs_1[7:0],ex_rs_1[7:0],ex_rs_1[7:0],ex_rs_1[7:0]}; // @[Cat.scala 31:58]
+  wire [31:0] _mem_reg_rs2_T_6 = {ex_rs_1[15:0],ex_rs_1[15:0]}; // @[Cat.scala 31:58]
+  wire [31:0] _mem_reg_rs2_T_7 = ex_reg_mem_size == 2'h1 ? _mem_reg_rs2_T_6 : ex_rs_1; // @[AMOALU.scala 26:13]
+  wire  _GEN_80 = ex_ctrl_jalr & csr_io_status_debug | ex_ctrl_fence_i; // @[RocketCore.scala 553:14 578:48 580:24]
+  wire  _GEN_81 = ex_ctrl_jalr & csr_io_status_debug | ex_reg_flush_pipe; // @[RocketCore.scala 561:24 578:48 581:26]
+  wire  mem_breakpoint = mem_reg_load & bpu_io_xcpt_ld | mem_reg_store & bpu_io_xcpt_st; // @[RocketCore.scala 585:57]
+  wire  mem_debug_breakpoint = mem_reg_load & bpu_io_debug_ld | mem_reg_store & bpu_io_debug_st; // @[RocketCore.scala 586:64]
+  wire  mem_ldst_xcpt = mem_debug_breakpoint | mem_breakpoint; // @[RocketCore.scala 1021:26]
+  wire [3:0] mem_ldst_cause = mem_debug_breakpoint ? 4'he : 4'h3; // @[Mux.scala 47:70]
+  wire  _T_70 = mem_reg_xcpt_interrupt | mem_reg_xcpt; // @[RocketCore.scala 592:29]
+  wire  _T_71 = mem_reg_valid & mem_npc_misaligned; // @[RocketCore.scala 593:20]
+  wire  _T_72 = mem_reg_valid & mem_ldst_xcpt; // @[RocketCore.scala 594:20]
+  wire  mem_xcpt = _T_70 | _T_71 | _T_72; // @[RocketCore.scala 1021:26]
+  wire [3:0] _T_74 = _T_71 ? 4'h0 : mem_ldst_cause; // @[Mux.scala 47:70]
+  wire  dcache_kill_mem = _T_28 & io_dmem_replay_next; // @[RocketCore.scala 603:55]
+  wire  replay_mem = dcache_kill_mem | mem_reg_replay; // @[RocketCore.scala 605:37]
+  wire  killm_common = dcache_kill_mem | take_pc_wb | mem_reg_xcpt | ~mem_reg_valid; // @[RocketCore.scala 606:68]
+  reg  div_io_kill_REG; // @[RocketCore.scala 607:37]
+  wire  ctrl_killm = killm_common | mem_xcpt; // @[RocketCore.scala 608:33]
+  wire  _wb_reg_valid_T = ~ctrl_killm; // @[RocketCore.scala 611:19]
+  wire  _wb_reg_replay_T = ~take_pc_wb; // @[RocketCore.scala 612:34]
+  wire [2:0] _T_117 = _T_107 ? 3'h6 : 3'h4; // @[Mux.scala 47:70]
+  wire [2:0] _T_118 = _T_105 ? 3'h5 : _T_117; // @[Mux.scala 47:70]
+  wire [2:0] _T_119 = _T_103 ? 3'h7 : _T_118; // @[Mux.scala 47:70]
+  wire [4:0] _T_120 = {{2'd0}, _T_119}; // @[Mux.scala 47:70]
+  wire [4:0] _T_122 = _T_97 ? 5'hd : _T_120; // @[Mux.scala 47:70]
+  wire [4:0] _T_123 = _T_95 ? 5'hf : _T_122; // @[Mux.scala 47:70]
+  wire [15:0] _csr_io_inst_0_T_3 = &wb_reg_raw_inst[1:0] ? wb_reg_inst[31:16] : 16'h0; // @[RocketCore.scala 714:50]
+  wire [31:0] _io_fpu_time_T = csr_io_time; // @[RocketCore.scala 719:29]
+  wire  tval_dmem_addr = ~wb_reg_xcpt; // @[RocketCore.scala 723:24]
+  wire  _tval_any_addr_T = wb_reg_cause == 32'h3; // @[package.scala 15:47]
+  wire  _tval_any_addr_T_1 = wb_reg_cause == 32'h1; // @[package.scala 15:47]
+  wire  _tval_any_addr_T_2 = wb_reg_cause == 32'hc; // @[package.scala 15:47]
+  wire  _tval_any_addr_T_3 = wb_reg_cause == 32'h14; // @[package.scala 15:47]
+  wire  _tval_any_addr_T_6 = _tval_any_addr_T | _tval_any_addr_T_1 | _tval_any_addr_T_2 | _tval_any_addr_T_3; // @[package.scala 72:59]
+  wire  tval_any_addr = tval_dmem_addr | _tval_any_addr_T_6; // @[RocketCore.scala 724:38]
+  wire  tval_inst = wb_reg_cause == 32'h2; // @[RocketCore.scala 726:32]
+  wire  tval_valid = wb_xcpt & (tval_any_addr | tval_inst); // @[RocketCore.scala 727:28]
+  wire  htval_valid_imem = wb_reg_xcpt & _tval_any_addr_T_3; // @[RocketCore.scala 731:40]
+  wire  _csr_io_htval_T_3 = ~reset; // @[RocketCore.scala 733:11]
+  wire [2:0] _csr_io_rw_cmd_T = wb_reg_valid ? 3'h0 : 3'h4; // @[CSR.scala 167:15]
+  wire [2:0] _csr_io_rw_cmd_T_1 = ~_csr_io_rw_cmd_T; // @[CSR.scala 167:11]
+  wire [31:0] _T_144 = 32'h1 << ll_waddr; // @[RocketCore.scala 1051:62]
+  wire [31:0] _T_145 = ll_wen ? _T_144 : 32'h0; // @[RocketCore.scala 1051:49]
+  wire [31:0] _T_146 = ~_T_145; // @[RocketCore.scala 1043:64]
+  wire [31:0] _T_147 = r & _T_146; // @[RocketCore.scala 1043:62]
+  wire  _T_149 = wb_set_sboard & wb_wen; // @[RocketCore.scala 773:28]
+  wire [31:0] _T_150 = 32'h1 << wb_waddr; // @[RocketCore.scala 1051:62]
+  wire [31:0] _T_151 = _T_149 ? _T_150 : 32'h0; // @[RocketCore.scala 1051:49]
+  wire [31:0] _T_152 = _T_147 | _T_151; // @[RocketCore.scala 1042:60]
+  wire  _T_153 = ll_wen | _T_149; // @[RocketCore.scala 1054:17]
+  wire [31:0] _io_imem_req_bits_pc_T_1 = replay_wb_common ? wb_reg_pc : mem_npc; // @[RocketCore.scala 833:8]
+  wire  _io_imem_btb_update_bits_cfiType_T = mem_ctrl_jal | mem_ctrl_jalr; // @[RocketCore.scala 854:23]
+  wire [4:0] _io_imem_btb_update_bits_cfiType_T_5 = mem_reg_inst[19:15] & 5'h1b; // @[RocketCore.scala 855:62]
+  wire [1:0] _io_imem_btb_update_bits_cfiType_T_10 = mem_ctrl_jalr & 5'h1 == _io_imem_btb_update_bits_cfiType_T_5 ? 2'h3
+     : {{1'd0}, _io_imem_btb_update_bits_cfiType_T}; // @[RocketCore.scala 855:8]
+  wire [1:0] _io_imem_btb_update_bits_br_pc_T = mem_reg_rvc ? 2'h0 : 2'h2; // @[RocketCore.scala 859:74]
+  wire [31:0] _GEN_256 = {{30'd0}, _io_imem_btb_update_bits_br_pc_T}; // @[RocketCore.scala 859:69]
+  wire [31:0] _io_imem_btb_update_bits_pc_T = ~io_imem_btb_update_bits_br_pc; // @[RocketCore.scala 860:35]
+  wire [31:0] _io_imem_btb_update_bits_pc_T_1 = _io_imem_btb_update_bits_pc_T | 32'h3; // @[RocketCore.scala 860:66]
+  wire  unpause = csr_io_time[4:0] == 5'h0 | csr_io_inhibit_cycle | io_dmem_perf_release | take_pc_mem_wb; // @[RocketCore.scala 907:116]
+  wire  coreMonitorBundle_valid = csr_io_trace_0_valid & ~csr_io_trace_0_exception; // @[RocketCore.scala 935:52]
+  wire [31:0] coreMonitorBundle_pc = csr_io_trace_0_iaddr; // @[RocketCore.scala 936:48]
+  wire  coreMonitorBundle_wrenx = wb_wen & ~wb_set_sboard; // @[RocketCore.scala 937:37]
+  reg [31:0] coreMonitorBundle_rd0val_x23; // @[RocketCore.scala 942:43]
+  reg [31:0] coreMonitorBundle_rd0val_REG; // @[RocketCore.scala 942:34]
+  reg [31:0] coreMonitorBundle_rd1val_x29; // @[RocketCore.scala 944:43]
+  reg [31:0] coreMonitorBundle_rd1val_REG; // @[RocketCore.scala 944:34]
+  wire [4:0] _T_155 = wb_ctrl_wxd ? wb_waddr : 5'h0; // @[RocketCore.scala 980:13]
+  wire [31:0] _T_156 = coreMonitorBundle_wrenx ? rf_wdata : 32'h0; // @[RocketCore.scala 981:13]
+  wire [4:0] _T_158 = wb_ctrl_rxs1 ? wb_reg_inst[19:15] : 5'h0; // @[RocketCore.scala 983:13]
+  wire [31:0] _T_160 = wb_ctrl_rxs1 ? coreMonitorBundle_rd0val_REG : 32'h0; // @[RocketCore.scala 984:13]
+  wire [4:0] _T_162 = wb_ctrl_rxs2 ? wb_reg_inst[24:20] : 5'h0; // @[RocketCore.scala 985:13]
+  wire [31:0] _T_164 = wb_ctrl_rxs2 ? coreMonitorBundle_rd1val_REG : 32'h0; // @[RocketCore.scala 986:13]
+  wire [31:0] coreMonitorBundle_inst = csr_io_trace_0_insn; // @[RocketCore.scala 929:31 945:26]
+  IBuf ibuf ( // @[RocketCore.scala 263:20]
+    .clock(ibuf_clock),
+    .reset(ibuf_reset),
+    .io_imem_ready(ibuf_io_imem_ready),
+    .io_imem_valid(ibuf_io_imem_valid),
+    .io_imem_bits_btb_taken(ibuf_io_imem_bits_btb_taken),
+    .io_imem_bits_btb_bridx(ibuf_io_imem_bits_btb_bridx),
+    .io_imem_bits_btb_entry(ibuf_io_imem_bits_btb_entry),
+    .io_imem_bits_btb_bht_history(ibuf_io_imem_bits_btb_bht_history),
+    .io_imem_bits_pc(ibuf_io_imem_bits_pc),
+    .io_imem_bits_data(ibuf_io_imem_bits_data),
+    .io_imem_bits_xcpt_ae_inst(ibuf_io_imem_bits_xcpt_ae_inst),
+    .io_imem_bits_replay(ibuf_io_imem_bits_replay),
+    .io_kill(ibuf_io_kill),
+    .io_pc(ibuf_io_pc),
+    .io_btb_resp_entry(ibuf_io_btb_resp_entry),
+    .io_btb_resp_bht_history(ibuf_io_btb_resp_bht_history),
+    .io_inst_0_ready(ibuf_io_inst_0_ready),
+    .io_inst_0_valid(ibuf_io_inst_0_valid),
+    .io_inst_0_bits_xcpt0_ae_inst(ibuf_io_inst_0_bits_xcpt0_ae_inst),
+    .io_inst_0_bits_xcpt1_pf_inst(ibuf_io_inst_0_bits_xcpt1_pf_inst),
+    .io_inst_0_bits_xcpt1_gf_inst(ibuf_io_inst_0_bits_xcpt1_gf_inst),
+    .io_inst_0_bits_xcpt1_ae_inst(ibuf_io_inst_0_bits_xcpt1_ae_inst),
+    .io_inst_0_bits_replay(ibuf_io_inst_0_bits_replay),
+    .io_inst_0_bits_rvc(ibuf_io_inst_0_bits_rvc),
+    .io_inst_0_bits_inst_bits(ibuf_io_inst_0_bits_inst_bits),
+    .io_inst_0_bits_inst_rd(ibuf_io_inst_0_bits_inst_rd),
+    .io_inst_0_bits_inst_rs1(ibuf_io_inst_0_bits_inst_rs1),
+    .io_inst_0_bits_inst_rs2(ibuf_io_inst_0_bits_inst_rs2),
+    .io_inst_0_bits_raw(ibuf_io_inst_0_bits_raw)
+  );
+  CSRFile csr ( // @[RocketCore.scala 291:19]
+    .clock(csr_clock),
+    .reset(csr_reset),
+    .io_ungated_clock(csr_io_ungated_clock),
+    .io_interrupts_debug(csr_io_interrupts_debug),
+    .io_interrupts_mtip(csr_io_interrupts_mtip),
+    .io_interrupts_msip(csr_io_interrupts_msip),
+    .io_interrupts_meip(csr_io_interrupts_meip),
+    .io_interrupts_seip(csr_io_interrupts_seip),
+    .io_hartid(csr_io_hartid),
+    .io_rw_addr(csr_io_rw_addr),
+    .io_rw_cmd(csr_io_rw_cmd),
+    .io_rw_rdata(csr_io_rw_rdata),
+    .io_rw_wdata(csr_io_rw_wdata),
+    .io_decode_0_inst(csr_io_decode_0_inst),
+    .io_decode_0_fp_illegal(csr_io_decode_0_fp_illegal),
+    .io_decode_0_fp_csr(csr_io_decode_0_fp_csr),
+    .io_decode_0_read_illegal(csr_io_decode_0_read_illegal),
+    .io_decode_0_write_illegal(csr_io_decode_0_write_illegal),
+    .io_decode_0_write_flush(csr_io_decode_0_write_flush),
+    .io_decode_0_system_illegal(csr_io_decode_0_system_illegal),
+    .io_csr_stall(csr_io_csr_stall),
+    .io_eret(csr_io_eret),
+    .io_singleStep(csr_io_singleStep),
+    .io_status_debug(csr_io_status_debug),
+    .io_status_cease(csr_io_status_cease),
+    .io_status_wfi(csr_io_status_wfi),
+    .io_status_isa(csr_io_status_isa),
+    .io_status_dprv(csr_io_status_dprv),
+    .io_status_dv(csr_io_status_dv),
+    .io_status_prv(csr_io_status_prv),
+    .io_status_v(csr_io_status_v),
+    .io_status_sd(csr_io_status_sd),
+    .io_status_zero2(csr_io_status_zero2),
+    .io_status_mpv(csr_io_status_mpv),
+    .io_status_gva(csr_io_status_gva),
+    .io_status_mbe(csr_io_status_mbe),
+    .io_status_sbe(csr_io_status_sbe),
+    .io_status_sxl(csr_io_status_sxl),
+    .io_status_uxl(csr_io_status_uxl),
+    .io_status_sd_rv32(csr_io_status_sd_rv32),
+    .io_status_zero1(csr_io_status_zero1),
+    .io_status_tsr(csr_io_status_tsr),
+    .io_status_tw(csr_io_status_tw),
+    .io_status_tvm(csr_io_status_tvm),
+    .io_status_mxr(csr_io_status_mxr),
+    .io_status_sum(csr_io_status_sum),
+    .io_status_mprv(csr_io_status_mprv),
+    .io_status_xs(csr_io_status_xs),
+    .io_status_fs(csr_io_status_fs),
+    .io_status_mpp(csr_io_status_mpp),
+    .io_status_vs(csr_io_status_vs),
+    .io_status_spp(csr_io_status_spp),
+    .io_status_mpie(csr_io_status_mpie),
+    .io_status_ube(csr_io_status_ube),
+    .io_status_spie(csr_io_status_spie),
+    .io_status_upie(csr_io_status_upie),
+    .io_status_mie(csr_io_status_mie),
+    .io_status_hie(csr_io_status_hie),
+    .io_status_sie(csr_io_status_sie),
+    .io_status_uie(csr_io_status_uie),
+    .io_evec(csr_io_evec),
+    .io_exception(csr_io_exception),
+    .io_retire(csr_io_retire),
+    .io_cause(csr_io_cause),
+    .io_pc(csr_io_pc),
+    .io_tval(csr_io_tval),
+    .io_gva(csr_io_gva),
+    .io_time(csr_io_time),
+    .io_interrupt(csr_io_interrupt),
+    .io_interrupt_cause(csr_io_interrupt_cause),
+    .io_bp_0_control_action(csr_io_bp_0_control_action),
+    .io_bp_0_control_chain(csr_io_bp_0_control_chain),
+    .io_bp_0_control_tmatch(csr_io_bp_0_control_tmatch),
+    .io_bp_0_control_m(csr_io_bp_0_control_m),
+    .io_bp_0_control_s(csr_io_bp_0_control_s),
+    .io_bp_0_control_u(csr_io_bp_0_control_u),
+    .io_bp_0_control_x(csr_io_bp_0_control_x),
+    .io_bp_0_control_w(csr_io_bp_0_control_w),
+    .io_bp_0_control_r(csr_io_bp_0_control_r),
+    .io_bp_0_address(csr_io_bp_0_address),
+    .io_bp_1_control_action(csr_io_bp_1_control_action),
+    .io_bp_1_control_tmatch(csr_io_bp_1_control_tmatch),
+    .io_bp_1_control_m(csr_io_bp_1_control_m),
+    .io_bp_1_control_s(csr_io_bp_1_control_s),
+    .io_bp_1_control_u(csr_io_bp_1_control_u),
+    .io_bp_1_control_x(csr_io_bp_1_control_x),
+    .io_bp_1_control_w(csr_io_bp_1_control_w),
+    .io_bp_1_control_r(csr_io_bp_1_control_r),
+    .io_bp_1_address(csr_io_bp_1_address),
+    .io_pmp_0_cfg_l(csr_io_pmp_0_cfg_l),
+    .io_pmp_0_cfg_a(csr_io_pmp_0_cfg_a),
+    .io_pmp_0_cfg_x(csr_io_pmp_0_cfg_x),
+    .io_pmp_0_cfg_w(csr_io_pmp_0_cfg_w),
+    .io_pmp_0_cfg_r(csr_io_pmp_0_cfg_r),
+    .io_pmp_0_addr(csr_io_pmp_0_addr),
+    .io_pmp_0_mask(csr_io_pmp_0_mask),
+    .io_pmp_1_cfg_l(csr_io_pmp_1_cfg_l),
+    .io_pmp_1_cfg_a(csr_io_pmp_1_cfg_a),
+    .io_pmp_1_cfg_x(csr_io_pmp_1_cfg_x),
+    .io_pmp_1_cfg_w(csr_io_pmp_1_cfg_w),
+    .io_pmp_1_cfg_r(csr_io_pmp_1_cfg_r),
+    .io_pmp_1_addr(csr_io_pmp_1_addr),
+    .io_pmp_1_mask(csr_io_pmp_1_mask),
+    .io_pmp_2_cfg_l(csr_io_pmp_2_cfg_l),
+    .io_pmp_2_cfg_a(csr_io_pmp_2_cfg_a),
+    .io_pmp_2_cfg_x(csr_io_pmp_2_cfg_x),
+    .io_pmp_2_cfg_w(csr_io_pmp_2_cfg_w),
+    .io_pmp_2_cfg_r(csr_io_pmp_2_cfg_r),
+    .io_pmp_2_addr(csr_io_pmp_2_addr),
+    .io_pmp_2_mask(csr_io_pmp_2_mask),
+    .io_pmp_3_cfg_l(csr_io_pmp_3_cfg_l),
+    .io_pmp_3_cfg_a(csr_io_pmp_3_cfg_a),
+    .io_pmp_3_cfg_x(csr_io_pmp_3_cfg_x),
+    .io_pmp_3_cfg_w(csr_io_pmp_3_cfg_w),
+    .io_pmp_3_cfg_r(csr_io_pmp_3_cfg_r),
+    .io_pmp_3_addr(csr_io_pmp_3_addr),
+    .io_pmp_3_mask(csr_io_pmp_3_mask),
+    .io_pmp_4_cfg_l(csr_io_pmp_4_cfg_l),
+    .io_pmp_4_cfg_a(csr_io_pmp_4_cfg_a),
+    .io_pmp_4_cfg_x(csr_io_pmp_4_cfg_x),
+    .io_pmp_4_cfg_w(csr_io_pmp_4_cfg_w),
+    .io_pmp_4_cfg_r(csr_io_pmp_4_cfg_r),
+    .io_pmp_4_addr(csr_io_pmp_4_addr),
+    .io_pmp_4_mask(csr_io_pmp_4_mask),
+    .io_pmp_5_cfg_l(csr_io_pmp_5_cfg_l),
+    .io_pmp_5_cfg_a(csr_io_pmp_5_cfg_a),
+    .io_pmp_5_cfg_x(csr_io_pmp_5_cfg_x),
+    .io_pmp_5_cfg_w(csr_io_pmp_5_cfg_w),
+    .io_pmp_5_cfg_r(csr_io_pmp_5_cfg_r),
+    .io_pmp_5_addr(csr_io_pmp_5_addr),
+    .io_pmp_5_mask(csr_io_pmp_5_mask),
+    .io_pmp_6_cfg_l(csr_io_pmp_6_cfg_l),
+    .io_pmp_6_cfg_a(csr_io_pmp_6_cfg_a),
+    .io_pmp_6_cfg_x(csr_io_pmp_6_cfg_x),
+    .io_pmp_6_cfg_w(csr_io_pmp_6_cfg_w),
+    .io_pmp_6_cfg_r(csr_io_pmp_6_cfg_r),
+    .io_pmp_6_addr(csr_io_pmp_6_addr),
+    .io_pmp_6_mask(csr_io_pmp_6_mask),
+    .io_pmp_7_cfg_l(csr_io_pmp_7_cfg_l),
+    .io_pmp_7_cfg_a(csr_io_pmp_7_cfg_a),
+    .io_pmp_7_cfg_x(csr_io_pmp_7_cfg_x),
+    .io_pmp_7_cfg_w(csr_io_pmp_7_cfg_w),
+    .io_pmp_7_cfg_r(csr_io_pmp_7_cfg_r),
+    .io_pmp_7_addr(csr_io_pmp_7_addr),
+    .io_pmp_7_mask(csr_io_pmp_7_mask),
+    .io_inhibit_cycle(csr_io_inhibit_cycle),
+    .io_inst_0(csr_io_inst_0),
+    .io_trace_0_valid(csr_io_trace_0_valid),
+    .io_trace_0_iaddr(csr_io_trace_0_iaddr),
+    .io_trace_0_insn(csr_io_trace_0_insn),
+    .io_trace_0_exception(csr_io_trace_0_exception),
+    .io_customCSRs_0_value(csr_io_customCSRs_0_value)
+  );
+  BreakpointUnit bpu ( // @[RocketCore.scala 334:19]
+    .io_status_debug(bpu_io_status_debug),
+    .io_status_prv(bpu_io_status_prv),
+    .io_bp_0_control_action(bpu_io_bp_0_control_action),
+    .io_bp_0_control_chain(bpu_io_bp_0_control_chain),
+    .io_bp_0_control_tmatch(bpu_io_bp_0_control_tmatch),
+    .io_bp_0_control_m(bpu_io_bp_0_control_m),
+    .io_bp_0_control_s(bpu_io_bp_0_control_s),
+    .io_bp_0_control_u(bpu_io_bp_0_control_u),
+    .io_bp_0_control_x(bpu_io_bp_0_control_x),
+    .io_bp_0_control_w(bpu_io_bp_0_control_w),
+    .io_bp_0_control_r(bpu_io_bp_0_control_r),
+    .io_bp_0_address(bpu_io_bp_0_address),
+    .io_bp_1_control_action(bpu_io_bp_1_control_action),
+    .io_bp_1_control_tmatch(bpu_io_bp_1_control_tmatch),
+    .io_bp_1_control_m(bpu_io_bp_1_control_m),
+    .io_bp_1_control_s(bpu_io_bp_1_control_s),
+    .io_bp_1_control_u(bpu_io_bp_1_control_u),
+    .io_bp_1_control_x(bpu_io_bp_1_control_x),
+    .io_bp_1_control_w(bpu_io_bp_1_control_w),
+    .io_bp_1_control_r(bpu_io_bp_1_control_r),
+    .io_bp_1_address(bpu_io_bp_1_address),
+    .io_pc(bpu_io_pc),
+    .io_ea(bpu_io_ea),
+    .io_xcpt_if(bpu_io_xcpt_if),
+    .io_xcpt_ld(bpu_io_xcpt_ld),
+    .io_xcpt_st(bpu_io_xcpt_st),
+    .io_debug_if(bpu_io_debug_if),
+    .io_debug_ld(bpu_io_debug_ld),
+    .io_debug_st(bpu_io_debug_st)
+  );
+  ALU alu ( // @[RocketCore.scala 399:19]
+    .io_fn(alu_io_fn),
+    .io_in2(alu_io_in2),
+    .io_in1(alu_io_in1),
+    .io_out(alu_io_out),
+    .io_adder_out(alu_io_adder_out),
+    .io_cmp_out(alu_io_cmp_out)
+  );
+  MulDiv div ( // @[RocketCore.scala 423:19]
+    .clock(div_clock),
+    .reset(div_reset),
+    .io_req_ready(div_io_req_ready),
+    .io_req_valid(div_io_req_valid),
+    .io_req_bits_fn(div_io_req_bits_fn),
+    .io_req_bits_in1(div_io_req_bits_in1),
+    .io_req_bits_in2(div_io_req_bits_in2),
+    .io_req_bits_tag(div_io_req_bits_tag),
+    .io_kill(div_io_kill),
+    .io_resp_ready(div_io_resp_ready),
+    .io_resp_valid(div_io_resp_valid),
+    .io_resp_bits_data(div_io_resp_bits_data),
+    .io_resp_bits_tag(div_io_resp_bits_tag)
+  );
+  PlusArgTimeout PlusArgTimeout ( // @[PlusArg.scala 89:11]
+    .clock(PlusArgTimeout_clock),
+    .reset(PlusArgTimeout_reset),
+    .io_count(PlusArgTimeout_io_count)
+  );
+  assign rf_id_rs_MPORT_en = 1'h1;
+  assign rf_id_rs_MPORT_addr = ~id_raddr1;
+  `ifndef RANDOMIZE_GARBAGE_ASSIGN
+  assign rf_id_rs_MPORT_data = rf[rf_id_rs_MPORT_addr]; // @[RocketCore.scala 1061:15]
+  `else
+  assign rf_id_rs_MPORT_data = rf_id_rs_MPORT_addr >= 5'h1f ? _RAND_1[31:0] : rf[rf_id_rs_MPORT_addr]; // @[RocketCore.scala 1061:15]
+  `endif // RANDOMIZE_GARBAGE_ASSIGN
+  assign rf_id_rs_MPORT_1_en = 1'h1;
+  assign rf_id_rs_MPORT_1_addr = ~id_raddr2;
+  `ifndef RANDOMIZE_GARBAGE_ASSIGN
+  assign rf_id_rs_MPORT_1_data = rf[rf_id_rs_MPORT_1_addr]; // @[RocketCore.scala 1061:15]
+  `else
+  assign rf_id_rs_MPORT_1_data = rf_id_rs_MPORT_1_addr >= 5'h1f ? _RAND_2[31:0] : rf[rf_id_rs_MPORT_1_addr]; // @[RocketCore.scala 1061:15]
+  `endif // RANDOMIZE_GARBAGE_ASSIGN
+  assign rf_MPORT_data = _rf_wdata_T ? io_dmem_resp_bits_data : _rf_wdata_T_5;
+  assign rf_MPORT_addr = ~rf_waddr;
+  assign rf_MPORT_mask = 1'h1;
+  assign rf_MPORT_en = rf_wen & _T_133;
+  assign io_imem_might_request = imem_might_request_reg; // @[RocketCore.scala 836:25]
+  assign io_imem_req_valid = take_pc_wb | take_pc_mem; // @[RocketCore.scala 259:35]
+  assign io_imem_req_bits_pc = wb_xcpt | csr_io_eret ? csr_io_evec : _io_imem_req_bits_pc_T_1; // @[RocketCore.scala 832:8]
+  assign io_imem_req_bits_speculative = ~take_pc_wb; // @[RocketCore.scala 830:35]
+  assign io_imem_resp_ready = ibuf_io_imem_ready; // @[RocketCore.scala 267:16]
+  assign io_imem_btb_update_valid = mem_reg_valid & _wb_reg_replay_T & mem_wrong_npc & (~mem_cfi | mem_cfi_taken); // @[RocketCore.scala 851:77]
+  assign io_imem_btb_update_bits_prediction_entry = mem_reg_btb_resp_entry; // @[RocketCore.scala 861:38]
+  assign io_imem_btb_update_bits_pc = ~_io_imem_btb_update_bits_pc_T_1; // @[RocketCore.scala 860:33]
+  assign io_imem_btb_update_bits_isValid = mem_ctrl_branch | mem_ctrl_jalr | mem_ctrl_jal; // @[RocketCore.scala 537:50]
+  assign io_imem_btb_update_bits_br_pc = mem_reg_pc + _GEN_256; // @[RocketCore.scala 859:69]
+  assign io_imem_btb_update_bits_cfiType = (mem_ctrl_jal | mem_ctrl_jalr) & mem_waddr[0] ? 2'h2 :
+    _io_imem_btb_update_bits_cfiType_T_10; // @[RocketCore.scala 854:8]
+  assign io_imem_bht_update_valid = mem_reg_valid & _wb_reg_replay_T; // @[RocketCore.scala 863:45]
+  assign io_imem_bht_update_bits_prediction_history = mem_reg_btb_resp_bht_history; // @[RocketCore.scala 868:38]
+  assign io_imem_bht_update_bits_pc = io_imem_btb_update_bits_pc; // @[RocketCore.scala 864:30]
+  assign io_imem_bht_update_bits_branch = mem_ctrl_branch; // @[RocketCore.scala 867:34]
+  assign io_imem_bht_update_bits_taken = mem_br_taken; // @[RocketCore.scala 865:33]
+  assign io_imem_bht_update_bits_mispredict = ex_pc_valid ? mem_npc != ex_reg_pc : _mem_wrong_npc_T_3; // @[RocketCore.scala 533:8]
+  assign io_imem_flush_icache = wb_reg_valid & wb_ctrl_fence_i & ~io_dmem_s2_nack; // @[RocketCore.scala 835:59]
+  assign io_dmem_req_valid = ex_reg_valid & ex_ctrl_mem; // @[RocketCore.scala 881:41]
+  assign io_dmem_req_bits_addr = alu_io_adder_out; // @[RocketCore.scala 889:25]
+  assign io_dmem_req_bits_tag = {ex_waddr,1'h0}; // @[Cat.scala 31:58]
+  assign io_dmem_req_bits_cmd = ex_ctrl_mem_cmd; // @[RocketCore.scala 885:25]
+  assign io_dmem_req_bits_size = ex_reg_mem_size; // @[RocketCore.scala 886:25]
+  assign io_dmem_req_bits_signed = ~ex_reg_inst[14]; // @[RocketCore.scala 887:30]
+  assign io_dmem_req_bits_dprv = csr_io_status_dprv; // @[RocketCore.scala 891:31]
+  assign io_dmem_req_bits_dv = 1'h0; // @[RocketCore.scala 892:37]
+  assign io_dmem_s1_kill = killm_common | mem_ldst_xcpt; // @[RocketCore.scala 894:35]
+  assign io_dmem_s1_data_data = mem_reg_rs2; // @[RocketCore.scala 893:24]
+  assign io_ptw_status_debug = csr_io_status_debug; // @[RocketCore.scala 744:17]
+  assign io_ptw_status_prv = csr_io_status_prv; // @[RocketCore.scala 744:17]
+  assign io_ptw_pmp_0_cfg_l = csr_io_pmp_0_cfg_l; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_0_cfg_a = csr_io_pmp_0_cfg_a; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_0_cfg_x = csr_io_pmp_0_cfg_x; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_0_cfg_w = csr_io_pmp_0_cfg_w; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_0_cfg_r = csr_io_pmp_0_cfg_r; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_0_addr = csr_io_pmp_0_addr; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_0_mask = csr_io_pmp_0_mask; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_1_cfg_l = csr_io_pmp_1_cfg_l; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_1_cfg_a = csr_io_pmp_1_cfg_a; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_1_cfg_x = csr_io_pmp_1_cfg_x; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_1_cfg_w = csr_io_pmp_1_cfg_w; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_1_cfg_r = csr_io_pmp_1_cfg_r; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_1_addr = csr_io_pmp_1_addr; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_1_mask = csr_io_pmp_1_mask; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_2_cfg_l = csr_io_pmp_2_cfg_l; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_2_cfg_a = csr_io_pmp_2_cfg_a; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_2_cfg_x = csr_io_pmp_2_cfg_x; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_2_cfg_w = csr_io_pmp_2_cfg_w; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_2_cfg_r = csr_io_pmp_2_cfg_r; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_2_addr = csr_io_pmp_2_addr; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_2_mask = csr_io_pmp_2_mask; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_3_cfg_l = csr_io_pmp_3_cfg_l; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_3_cfg_a = csr_io_pmp_3_cfg_a; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_3_cfg_x = csr_io_pmp_3_cfg_x; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_3_cfg_w = csr_io_pmp_3_cfg_w; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_3_cfg_r = csr_io_pmp_3_cfg_r; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_3_addr = csr_io_pmp_3_addr; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_3_mask = csr_io_pmp_3_mask; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_4_cfg_l = csr_io_pmp_4_cfg_l; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_4_cfg_a = csr_io_pmp_4_cfg_a; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_4_cfg_x = csr_io_pmp_4_cfg_x; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_4_cfg_w = csr_io_pmp_4_cfg_w; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_4_cfg_r = csr_io_pmp_4_cfg_r; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_4_addr = csr_io_pmp_4_addr; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_4_mask = csr_io_pmp_4_mask; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_5_cfg_l = csr_io_pmp_5_cfg_l; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_5_cfg_a = csr_io_pmp_5_cfg_a; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_5_cfg_x = csr_io_pmp_5_cfg_x; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_5_cfg_w = csr_io_pmp_5_cfg_w; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_5_cfg_r = csr_io_pmp_5_cfg_r; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_5_addr = csr_io_pmp_5_addr; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_5_mask = csr_io_pmp_5_mask; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_6_cfg_l = csr_io_pmp_6_cfg_l; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_6_cfg_a = csr_io_pmp_6_cfg_a; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_6_cfg_x = csr_io_pmp_6_cfg_x; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_6_cfg_w = csr_io_pmp_6_cfg_w; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_6_cfg_r = csr_io_pmp_6_cfg_r; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_6_addr = csr_io_pmp_6_addr; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_6_mask = csr_io_pmp_6_mask; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_7_cfg_l = csr_io_pmp_7_cfg_l; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_7_cfg_a = csr_io_pmp_7_cfg_a; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_7_cfg_x = csr_io_pmp_7_cfg_x; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_7_cfg_w = csr_io_pmp_7_cfg_w; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_7_cfg_r = csr_io_pmp_7_cfg_r; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_7_addr = csr_io_pmp_7_addr; // @[RocketCore.scala 747:14]
+  assign io_ptw_pmp_7_mask = csr_io_pmp_7_mask; // @[RocketCore.scala 747:14]
+  assign io_ptw_customCSRs_csrs_0_value = csr_io_customCSRs_0_value; // @[RocketCore.scala 743:79]
+  assign io_wfi = csr_io_status_wfi; // @[RocketCore.scala 910:10]
+  assign ibuf_clock = clock;
+  assign ibuf_reset = reset;
+  assign ibuf_io_imem_valid = io_imem_resp_valid; // @[RocketCore.scala 267:16]
+  assign ibuf_io_imem_bits_btb_taken = io_imem_resp_bits_btb_taken; // @[RocketCore.scala 267:16]
+  assign ibuf_io_imem_bits_btb_bridx = io_imem_resp_bits_btb_bridx; // @[RocketCore.scala 267:16]
+  assign ibuf_io_imem_bits_btb_entry = io_imem_resp_bits_btb_entry; // @[RocketCore.scala 267:16]
+  assign ibuf_io_imem_bits_btb_bht_history = io_imem_resp_bits_btb_bht_history; // @[RocketCore.scala 267:16]
+  assign ibuf_io_imem_bits_pc = io_imem_resp_bits_pc; // @[RocketCore.scala 267:16]
+  assign ibuf_io_imem_bits_data = io_imem_resp_bits_data; // @[RocketCore.scala 267:16]
+  assign ibuf_io_imem_bits_xcpt_ae_inst = io_imem_resp_bits_xcpt_ae_inst; // @[RocketCore.scala 267:16]
+  assign ibuf_io_imem_bits_replay = io_imem_resp_bits_replay; // @[RocketCore.scala 267:16]
+  assign ibuf_io_kill = take_pc_wb | take_pc_mem; // @[RocketCore.scala 259:35]
+  assign ibuf_io_inst_0_ready = ~ctrl_stalld; // @[RocketCore.scala 849:28]
+  assign csr_clock = clock;
+  assign csr_reset = reset;
+  assign csr_io_ungated_clock = clock; // @[RocketCore.scala 709:24]
+  assign csr_io_interrupts_debug = io_interrupts_debug; // @[RocketCore.scala 715:21]
+  assign csr_io_interrupts_mtip = io_interrupts_mtip; // @[RocketCore.scala 715:21]
+  assign csr_io_interrupts_msip = io_interrupts_msip; // @[RocketCore.scala 715:21]
+  assign csr_io_interrupts_meip = io_interrupts_meip; // @[RocketCore.scala 715:21]
+  assign csr_io_interrupts_seip = io_interrupts_seip; // @[RocketCore.scala 715:21]
+  assign csr_io_hartid = io_hartid; // @[RocketCore.scala 716:17]
+  assign csr_io_rw_addr = wb_reg_inst[31:20]; // @[RocketCore.scala 748:32]
+  assign csr_io_rw_cmd = wb_ctrl_csr & _csr_io_rw_cmd_T_1; // @[CSR.scala 167:9]
+  assign csr_io_rw_wdata = wb_reg_wdata; // @[RocketCore.scala 750:19]
+  assign csr_io_decode_0_inst = ibuf_io_inst_0_bits_inst_bits; // @[RocketCore.scala 710:25]
+  assign csr_io_exception = wb_reg_xcpt | _T_95 | _T_97 | _T_103 | _T_105 | _T_107 | _T_109; // @[RocketCore.scala 1021:26]
+  assign csr_io_retire = wb_reg_valid & ~replay_wb_common & ~wb_xcpt; // @[RocketCore.scala 697:45]
+  assign csr_io_cause = wb_reg_xcpt ? wb_reg_cause : {{27'd0}, _T_123}; // @[Mux.scala 47:70]
+  assign csr_io_pc = wb_reg_pc; // @[RocketCore.scala 722:13]
+  assign csr_io_tval = tval_valid ? wb_reg_wdata : 32'h0; // @[RocketCore.scala 729:21]
+  assign csr_io_gva = wb_xcpt & (tval_dmem_addr & wb_reg_hls_or_dv); // @[RocketCore.scala 728:25]
+  assign csr_io_inst_0 = {_csr_io_inst_0_T_3,wb_reg_raw_inst[15:0]}; // @[Cat.scala 31:58]
+  assign bpu_io_status_debug = csr_io_status_debug; // @[RocketCore.scala 335:17]
+  assign bpu_io_status_prv = csr_io_status_prv; // @[RocketCore.scala 335:17]
+  assign bpu_io_bp_0_control_action = csr_io_bp_0_control_action; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_control_chain = csr_io_bp_0_control_chain; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_control_tmatch = csr_io_bp_0_control_tmatch; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_control_m = csr_io_bp_0_control_m; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_control_s = csr_io_bp_0_control_s; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_control_u = csr_io_bp_0_control_u; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_control_x = csr_io_bp_0_control_x; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_control_w = csr_io_bp_0_control_w; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_control_r = csr_io_bp_0_control_r; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_0_address = csr_io_bp_0_address; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_control_action = csr_io_bp_1_control_action; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_control_tmatch = csr_io_bp_1_control_tmatch; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_control_m = csr_io_bp_1_control_m; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_control_s = csr_io_bp_1_control_s; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_control_u = csr_io_bp_1_control_u; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_control_x = csr_io_bp_1_control_x; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_control_w = csr_io_bp_1_control_w; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_control_r = csr_io_bp_1_control_r; // @[RocketCore.scala 336:13]
+  assign bpu_io_bp_1_address = csr_io_bp_1_address; // @[RocketCore.scala 336:13]
+  assign bpu_io_pc = ibuf_io_pc; // @[RocketCore.scala 337:13]
+  assign bpu_io_ea = mem_reg_wdata; // @[RocketCore.scala 338:13]
+  assign alu_io_fn = ex_ctrl_alu_fn; // @[RocketCore.scala 401:13]
+  assign alu_io_in2 = 2'h1 == ex_ctrl_sel_alu2 ? $signed({{28{_ex_op2_T_1[3]}},_ex_op2_T_1}) : $signed(_ex_op2_T_5); // @[RocketCore.scala 402:24]
+  assign alu_io_in1 = 2'h2 == ex_ctrl_sel_alu1 ? $signed(ex_reg_pc) : $signed(_ex_op1_T_3); // @[RocketCore.scala 403:24]
+  assign div_clock = clock;
+  assign div_reset = reset;
+  assign div_io_req_valid = ex_reg_valid & ex_ctrl_div; // @[RocketCore.scala 424:36]
+  assign div_io_req_bits_fn = ex_ctrl_alu_fn; // @[RocketCore.scala 426:22]
+  assign div_io_req_bits_in1 = ex_reg_rs_bypass_0 ? _ex_rs_T_5 : _ex_rs_T_6; // @[RocketCore.scala 389:14]
+  assign div_io_req_bits_in2 = ex_reg_rs_bypass_1 ? _ex_rs_T_12 : _ex_rs_T_13; // @[RocketCore.scala 389:14]
+  assign div_io_req_bits_tag = ex_reg_inst[11:7]; // @[RocketCore.scala 373:29]
+  assign div_io_kill = killm_common & div_io_kill_REG; // @[RocketCore.scala 607:31]
+  assign div_io_resp_ready = dmem_resp_replay & dmem_resp_xpu ? 1'h0 : _ctrl_stalld_T_17; // @[RocketCore.scala 676:21 689:44 690:23]
+  assign PlusArgTimeout_clock = clock;
+  assign PlusArgTimeout_reset = reset;
+  assign PlusArgTimeout_io_count = csr_io_time; // @[PlusArg.scala 89:82]
+  always @(posedge clock) begin
+    if (rf_MPORT_en & rf_MPORT_mask) begin
+      rf[rf_MPORT_addr] <= rf_MPORT_data; // @[RocketCore.scala 1061:15]
+    end
+    if (unpause) begin // @[RocketCore.scala 908:18]
+      id_reg_pause <= 1'h0; // @[RocketCore.scala 908:33]
+    end else if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      id_reg_pause <= _GEN_1;
+    end
+    imem_might_request_reg <= ex_pc_valid | mem_pc_valid | io_ptw_customCSRs_csrs_0_value[1]; // @[RocketCore.scala 837:59]
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_branch <= id_ctrl_decoder_3; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_jal <= id_ctrl_decoder_4; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_jalr <= id_ctrl_decoder_5; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_rxs2 <= id_ctrl_decoder_6; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_rxs1 <= id_ctrl_decoder_7; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_xcpt) begin // @[RocketCore.scala 450:20]
+        if (bpu_io_xcpt_if | |_T_37) begin // @[RocketCore.scala 460:52]
+          ex_ctrl_sel_alu2 <= 2'h0; // @[RocketCore.scala 462:26]
+        end else if (|_T_35) begin // @[RocketCore.scala 455:34]
+          ex_ctrl_sel_alu2 <= 2'h1; // @[RocketCore.scala 457:26]
+        end else begin
+          ex_ctrl_sel_alu2 <= 2'h0; // @[RocketCore.scala 454:24]
+        end
+      end else begin
+        ex_ctrl_sel_alu2 <= id_ctrl_decoder_9; // @[RocketCore.scala 443:13]
+      end
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_xcpt) begin // @[RocketCore.scala 450:20]
+        if (bpu_io_xcpt_if | |_T_37) begin // @[RocketCore.scala 460:52]
+          ex_ctrl_sel_alu1 <= 2'h2; // @[RocketCore.scala 461:26]
+        end else if (|_T_35) begin // @[RocketCore.scala 455:34]
+          ex_ctrl_sel_alu1 <= 2'h2; // @[RocketCore.scala 456:26]
+        end else begin
+          ex_ctrl_sel_alu1 <= 2'h1; // @[RocketCore.scala 453:24]
+        end
+      end else begin
+        ex_ctrl_sel_alu1 <= id_ctrl_decoder_10; // @[RocketCore.scala 443:13]
+      end
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_sel_imm <= id_ctrl_decoder_11; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_xcpt) begin // @[RocketCore.scala 450:20]
+        ex_ctrl_alu_fn <= 4'h0; // @[RocketCore.scala 451:22]
+      end else begin
+        ex_ctrl_alu_fn <= id_ctrl_decoder_13; // @[RocketCore.scala 443:13]
+      end
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_mem <= id_ctrl_decoder_14; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_mem_cmd <= id_ctrl_decoder_15;
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_div <= id_ctrl_decoder_21; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_wxd <= id_ctrl_decoder_22; // @[RocketCore.scala 443:13]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_system_insn & id_ctrl_decoder_14) begin // @[RocketCore.scala 295:19]
+        ex_ctrl_csr <= 3'h0;
+      end else if (id_csr_ren) begin // @[RocketCore.scala 295:61]
+        ex_ctrl_csr <= 3'h2;
+      end else begin
+        ex_ctrl_csr <= id_ctrl_decoder_23;
+      end
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_ctrl_fence_i <= id_ctrl_decoder_24; // @[RocketCore.scala 443:13]
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_branch <= ex_ctrl_branch; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_jal <= ex_ctrl_jal; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_jalr <= ex_ctrl_jalr; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_rxs2 <= ex_ctrl_rxs2; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_rxs1 <= ex_ctrl_rxs1; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_mem <= ex_ctrl_mem; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_div <= ex_ctrl_div; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_wxd <= ex_ctrl_wxd; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_csr <= ex_ctrl_csr; // @[RocketCore.scala 553:14]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_ctrl_fence_i <= _GEN_80;
+      end
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_ctrl_rxs2 <= mem_ctrl_rxs2; // @[RocketCore.scala 616:13]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_ctrl_rxs1 <= mem_ctrl_rxs1; // @[RocketCore.scala 616:13]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_ctrl_mem <= mem_ctrl_mem; // @[RocketCore.scala 616:13]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_ctrl_div <= mem_ctrl_div; // @[RocketCore.scala 616:13]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_ctrl_wxd <= mem_ctrl_wxd; // @[RocketCore.scala 616:13]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_ctrl_csr <= mem_ctrl_csr; // @[RocketCore.scala 616:13]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_ctrl_fence_i <= mem_ctrl_fence_i; // @[RocketCore.scala 616:13]
+    end
+    ex_reg_xcpt_interrupt <= _ex_reg_replay_T_1 & csr_io_interrupt; // @[RocketCore.scala 440:62]
+    ex_reg_valid <= ~ctrl_killd; // @[RocketCore.scala 437:19]
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_xcpt) begin // @[RocketCore.scala 450:20]
+        ex_reg_rvc <= _GEN_5;
+      end else begin
+        ex_reg_rvc <= ibuf_io_inst_0_bits_rvc; // @[RocketCore.scala 444:16]
+      end
+    end
+    if (_ex_reg_valid_T | csr_io_interrupt | ibuf_io_inst_0_bits_replay) begin // @[RocketCore.scala 498:73]
+      ex_reg_btb_resp_entry <= ibuf_io_btb_resp_entry; // @[RocketCore.scala 503:21]
+    end
+    if (_ex_reg_valid_T | csr_io_interrupt | ibuf_io_inst_0_bits_replay) begin // @[RocketCore.scala 498:73]
+      ex_reg_btb_resp_bht_history <= ibuf_io_btb_resp_bht_history; // @[RocketCore.scala 503:21]
+    end
+    ex_reg_xcpt <= _ex_reg_valid_T & id_xcpt; // @[RocketCore.scala 439:30]
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_reg_flush_pipe <= id_ctrl_decoder_24 | id_csr_flush; // @[RocketCore.scala 465:23]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_reg_load_use <= id_load_use; // @[RocketCore.scala 466:21]
+    end
+    if (_ex_reg_valid_T | csr_io_interrupt | ibuf_io_inst_0_bits_replay) begin // @[RocketCore.scala 498:73]
+      if (csr_io_interrupt) begin // @[Mux.scala 47:70]
+        ex_reg_cause <= csr_io_interrupt_cause;
+      end else begin
+        ex_reg_cause <= {{27'd0}, _T_18};
+      end
+    end
+    ex_reg_replay <= ~take_pc_mem_wb & ibuf_io_inst_0_valid & ibuf_io_inst_0_bits_replay; // @[RocketCore.scala 438:54]
+    if (_ex_reg_valid_T | csr_io_interrupt | ibuf_io_inst_0_bits_replay) begin // @[RocketCore.scala 498:73]
+      ex_reg_pc <= ibuf_io_pc; // @[RocketCore.scala 502:15]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (_T_46) begin // @[RocketCore.scala 469:81]
+        ex_reg_mem_size <= _ex_reg_mem_size_T_6; // @[RocketCore.scala 470:23]
+      end else begin
+        ex_reg_mem_size <= ibuf_io_inst_0_bits_inst_bits[13:12]; // @[RocketCore.scala 468:21]
+      end
+    end
+    if (_ex_reg_valid_T | csr_io_interrupt | ibuf_io_inst_0_bits_replay) begin // @[RocketCore.scala 498:73]
+      ex_reg_inst <= ibuf_io_inst_0_bits_inst_bits; // @[RocketCore.scala 500:17]
+    end
+    if (_ex_reg_valid_T | csr_io_interrupt | ibuf_io_inst_0_bits_replay) begin // @[RocketCore.scala 498:73]
+      ex_reg_raw_inst <= ibuf_io_inst_0_bits_raw; // @[RocketCore.scala 501:21]
+    end
+    mem_reg_xcpt_interrupt <= _ex_reg_replay_T & ex_reg_xcpt_interrupt; // @[RocketCore.scala 546:45]
+    mem_reg_valid <= ~ctrl_killx; // @[RocketCore.scala 543:20]
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_rvc <= ex_reg_rvc; // @[RocketCore.scala 556:17]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_btb_resp_entry <= ex_reg_btb_resp_entry; // @[RocketCore.scala 560:22]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_btb_resp_bht_history <= ex_reg_btb_resp_bht_history; // @[RocketCore.scala 560:22]
+      end
+    end
+    mem_reg_xcpt <= _mem_reg_valid_T & ex_xcpt; // @[RocketCore.scala 545:31]
+    mem_reg_replay <= _ex_reg_replay_T & replay_ex; // @[RocketCore.scala 544:37]
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_flush_pipe <= _GEN_81;
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_cause <= ex_reg_cause; // @[RocketCore.scala 565:19]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_slow_bypass <= ex_slow_bypass; // @[RocketCore.scala 562:25]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_load <= ex_ctrl_mem & _mem_reg_load_T_24; // @[RocketCore.scala 557:18]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_store <= ex_ctrl_mem & _mem_reg_store_T_22; // @[RocketCore.scala 558:19]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_pc <= ex_reg_pc; // @[RocketCore.scala 570:16]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_inst <= ex_reg_inst; // @[RocketCore.scala 566:18]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_hls_or_dv <= io_dmem_req_bits_dv; // @[RocketCore.scala 569:23]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_raw_inst <= ex_reg_raw_inst; // @[RocketCore.scala 567:22]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_reg_wdata <= _mem_reg_wdata_T; // @[RocketCore.scala 571:19]
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        if (ex_ctrl_rxs2 & ex_ctrl_mem) begin // @[RocketCore.scala 574:71]
+          if (ex_reg_mem_size == 2'h0) begin // @[AMOALU.scala 26:13]
+            mem_reg_rs2 <= _mem_reg_rs2_T_3;
+          end else begin
+            mem_reg_rs2 <= _mem_reg_rs2_T_7;
+          end
+        end
+      end
+    end
+    if (!(mem_reg_valid & mem_reg_flush_pipe)) begin // @[RocketCore.scala 550:46]
+      if (ex_pc_valid) begin // @[RocketCore.scala 552:28]
+        mem_br_taken <= alu_io_cmp_out; // @[RocketCore.scala 572:18]
+      end
+    end
+    wb_reg_valid <= ~ctrl_killm; // @[RocketCore.scala 611:19]
+    wb_reg_xcpt <= mem_xcpt & _wb_reg_replay_T; // @[RocketCore.scala 613:27]
+    wb_reg_replay <= replay_mem & ~take_pc_wb; // @[RocketCore.scala 612:31]
+    wb_reg_flush_pipe <= _wb_reg_valid_T & mem_reg_flush_pipe; // @[RocketCore.scala 614:36]
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      if (_T_70) begin // @[Mux.scala 47:70]
+        wb_reg_cause <= mem_reg_cause;
+      end else begin
+        wb_reg_cause <= {{28'd0}, _T_74};
+      end
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_reg_pc <= mem_reg_pc; // @[RocketCore.scala 630:15]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_reg_hls_or_dv <= mem_reg_hls_or_dv; // @[RocketCore.scala 627:22]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_reg_inst <= mem_reg_inst; // @[RocketCore.scala 624:17]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_reg_raw_inst <= mem_reg_raw_inst; // @[RocketCore.scala 625:21]
+    end
+    if (mem_pc_valid) begin // @[RocketCore.scala 615:23]
+      wb_reg_wdata <= mem_int_wdata; // @[RocketCore.scala 618:18]
+    end
+    if (reset) begin // @[RocketCore.scala 283:25]
+      id_reg_fence <= 1'h0; // @[RocketCore.scala 283:25]
+    end else if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      id_reg_fence <= _GEN_2;
+    end else if (~id_mem_busy) begin // @[RocketCore.scala 327:23]
+      id_reg_fence <= 1'h0; // @[RocketCore.scala 327:38]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_illegal_insn) begin // @[RocketCore.scala 491:47]
+        ex_reg_rs_bypass_0 <= 1'h0; // @[RocketCore.scala 493:27]
+      end else begin
+        ex_reg_rs_bypass_0 <= do_bypass; // @[RocketCore.scala 484:27]
+      end
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      ex_reg_rs_bypass_1 <= do_bypass_1; // @[RocketCore.scala 484:27]
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_illegal_insn) begin // @[RocketCore.scala 491:47]
+        ex_reg_rs_lsb_0 <= inst[1:0]; // @[RocketCore.scala 494:24]
+      end else if (id_ctrl_decoder_7 & ~do_bypass) begin // @[RocketCore.scala 486:38]
+        ex_reg_rs_lsb_0 <= id_rs_0[1:0]; // @[RocketCore.scala 487:26]
+      end else if (id_bypass_src_0_0) begin // @[Mux.scala 47:70]
+        ex_reg_rs_lsb_0 <= 2'h0;
+      end else begin
+        ex_reg_rs_lsb_0 <= _bypass_src_T_1;
+      end
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_ctrl_decoder_6 & ~do_bypass_1) begin // @[RocketCore.scala 486:38]
+        ex_reg_rs_lsb_1 <= id_rs_1[1:0]; // @[RocketCore.scala 487:26]
+      end else if (id_bypass_src_1_0) begin // @[Mux.scala 47:70]
+        ex_reg_rs_lsb_1 <= 2'h0;
+      end else if (id_bypass_src_1_1) begin // @[Mux.scala 47:70]
+        ex_reg_rs_lsb_1 <= 2'h1;
+      end else begin
+        ex_reg_rs_lsb_1 <= _bypass_src_T_2;
+      end
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_illegal_insn) begin // @[RocketCore.scala 491:47]
+        ex_reg_rs_msb_0 <= inst[31:2]; // @[RocketCore.scala 495:24]
+      end else if (id_ctrl_decoder_7 & ~do_bypass) begin // @[RocketCore.scala 486:38]
+        ex_reg_rs_msb_0 <= id_rs_0[31:2]; // @[RocketCore.scala 488:26]
+      end
+    end
+    if (_ex_reg_valid_T) begin // @[RocketCore.scala 442:22]
+      if (id_ctrl_decoder_6 & ~do_bypass_1) begin // @[RocketCore.scala 486:38]
+        ex_reg_rs_msb_1 <= id_rs_1[31:2]; // @[RocketCore.scala 488:26]
+      end
+    end
+    if (reset) begin // @[RocketCore.scala 1047:25]
+      _r <= 32'h0; // @[RocketCore.scala 1047:25]
+    end else if (_T_153) begin // @[RocketCore.scala 1055:18]
+      _r <= _T_152; // @[RocketCore.scala 1055:23]
+    end else if (ll_wen) begin // @[RocketCore.scala 1055:18]
+      _r <= _T_147; // @[RocketCore.scala 1055:23]
+    end
+    blocked <= _replay_ex_structural_T & _dcache_blocked_T & (blocked | io_dmem_req_valid | io_dmem_s2_nack); // @[RocketCore.scala 808:83]
+    div_io_kill_REG <= div_io_req_ready & div_io_req_valid; // @[Decoupled.scala 50:35]
+    if (ex_reg_rs_bypass_0) begin // @[RocketCore.scala 389:14]
+      if (ex_reg_rs_lsb_0 == 2'h3) begin // @[package.scala 32:76]
+        coreMonitorBundle_rd0val_x23 <= io_dmem_resp_bits_data_word_bypass;
+      end else if (ex_reg_rs_lsb_0 == 2'h2) begin // @[package.scala 32:76]
+        coreMonitorBundle_rd0val_x23 <= wb_reg_wdata;
+      end else if (ex_reg_rs_lsb_0 == 2'h1) begin // @[package.scala 32:76]
+        coreMonitorBundle_rd0val_x23 <= mem_reg_wdata;
+      end else begin
+        coreMonitorBundle_rd0val_x23 <= 32'h0;
+      end
+    end else begin
+      coreMonitorBundle_rd0val_x23 <= _ex_rs_T_6;
+    end
+    coreMonitorBundle_rd0val_REG <= coreMonitorBundle_rd0val_x23; // @[RocketCore.scala 942:34]
+    if (ex_reg_rs_bypass_1) begin // @[RocketCore.scala 389:14]
+      if (ex_reg_rs_lsb_1 == 2'h3) begin // @[package.scala 32:76]
+        coreMonitorBundle_rd1val_x29 <= io_dmem_resp_bits_data_word_bypass;
+      end else if (ex_reg_rs_lsb_1 == 2'h2) begin // @[package.scala 32:76]
+        coreMonitorBundle_rd1val_x29 <= wb_reg_wdata;
+      end else if (ex_reg_rs_lsb_1 == 2'h1) begin // @[package.scala 32:76]
+        coreMonitorBundle_rd1val_x29 <= mem_reg_wdata;
+      end else begin
+        coreMonitorBundle_rd1val_x29 <= 32'h0;
+      end
+    end else begin
+      coreMonitorBundle_rd1val_x29 <= _ex_rs_T_13;
+    end
+    coreMonitorBundle_rd1val_REG <= coreMonitorBundle_rd1val_x29; // @[RocketCore.scala 944:34]
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~htval_valid_imem) & ~reset) begin
+          $fatal; // @[RocketCore.scala 733:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(~htval_valid_imem)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at RocketCore.scala:733 assert(!htval_valid_imem || io.imem.gpa.valid)\n"); // @[RocketCore.scala 733:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (csr_io_trace_0_valid & _csr_io_htval_T_3) begin
+          $fwrite(32'h80000002,"C%d: %d [%d] pc=[%x] W[r%d=%x][%d] R[r%d=%x] R[r%d=%x] inst=[%x] DASM(%x)\n",io_hartid,
+            _io_fpu_time_T,coreMonitorBundle_valid,coreMonitorBundle_pc,_T_155,_T_156,coreMonitorBundle_wrenx,_T_158,
+            _T_160,_T_162,_T_164,coreMonitorBundle_inst,coreMonitorBundle_inst); // @[RocketCore.scala 977:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+  _RAND_1 = {1{`RANDOM}};
+  _RAND_2 = {1{`RANDOM}};
+`endif // RANDOMIZE_GARBAGE_ASSIGN
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 31; initvar = initvar+1)
+    rf[initvar] = _RAND_0[31:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_3 = {1{`RANDOM}};
+  id_reg_pause = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  imem_might_request_reg = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  ex_ctrl_branch = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ex_ctrl_jal = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ex_ctrl_jalr = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  ex_ctrl_rxs2 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  ex_ctrl_rxs1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  ex_ctrl_sel_alu2 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  ex_ctrl_sel_alu1 = _RAND_11[1:0];
+  _RAND_12 = {1{`RANDOM}};
+  ex_ctrl_sel_imm = _RAND_12[2:0];
+  _RAND_13 = {1{`RANDOM}};
+  ex_ctrl_alu_fn = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  ex_ctrl_mem = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  ex_ctrl_mem_cmd = _RAND_15[4:0];
+  _RAND_16 = {1{`RANDOM}};
+  ex_ctrl_div = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  ex_ctrl_wxd = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  ex_ctrl_csr = _RAND_18[2:0];
+  _RAND_19 = {1{`RANDOM}};
+  ex_ctrl_fence_i = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  mem_ctrl_branch = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  mem_ctrl_jal = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  mem_ctrl_jalr = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  mem_ctrl_rxs2 = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  mem_ctrl_rxs1 = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  mem_ctrl_mem = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  mem_ctrl_div = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  mem_ctrl_wxd = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  mem_ctrl_csr = _RAND_28[2:0];
+  _RAND_29 = {1{`RANDOM}};
+  mem_ctrl_fence_i = _RAND_29[0:0];
+  _RAND_30 = {1{`RANDOM}};
+  wb_ctrl_rxs2 = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  wb_ctrl_rxs1 = _RAND_31[0:0];
+  _RAND_32 = {1{`RANDOM}};
+  wb_ctrl_mem = _RAND_32[0:0];
+  _RAND_33 = {1{`RANDOM}};
+  wb_ctrl_div = _RAND_33[0:0];
+  _RAND_34 = {1{`RANDOM}};
+  wb_ctrl_wxd = _RAND_34[0:0];
+  _RAND_35 = {1{`RANDOM}};
+  wb_ctrl_csr = _RAND_35[2:0];
+  _RAND_36 = {1{`RANDOM}};
+  wb_ctrl_fence_i = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  ex_reg_xcpt_interrupt = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  ex_reg_valid = _RAND_38[0:0];
+  _RAND_39 = {1{`RANDOM}};
+  ex_reg_rvc = _RAND_39[0:0];
+  _RAND_40 = {1{`RANDOM}};
+  ex_reg_btb_resp_entry = _RAND_40[4:0];
+  _RAND_41 = {1{`RANDOM}};
+  ex_reg_btb_resp_bht_history = _RAND_41[7:0];
+  _RAND_42 = {1{`RANDOM}};
+  ex_reg_xcpt = _RAND_42[0:0];
+  _RAND_43 = {1{`RANDOM}};
+  ex_reg_flush_pipe = _RAND_43[0:0];
+  _RAND_44 = {1{`RANDOM}};
+  ex_reg_load_use = _RAND_44[0:0];
+  _RAND_45 = {1{`RANDOM}};
+  ex_reg_cause = _RAND_45[31:0];
+  _RAND_46 = {1{`RANDOM}};
+  ex_reg_replay = _RAND_46[0:0];
+  _RAND_47 = {1{`RANDOM}};
+  ex_reg_pc = _RAND_47[31:0];
+  _RAND_48 = {1{`RANDOM}};
+  ex_reg_mem_size = _RAND_48[1:0];
+  _RAND_49 = {1{`RANDOM}};
+  ex_reg_inst = _RAND_49[31:0];
+  _RAND_50 = {1{`RANDOM}};
+  ex_reg_raw_inst = _RAND_50[31:0];
+  _RAND_51 = {1{`RANDOM}};
+  mem_reg_xcpt_interrupt = _RAND_51[0:0];
+  _RAND_52 = {1{`RANDOM}};
+  mem_reg_valid = _RAND_52[0:0];
+  _RAND_53 = {1{`RANDOM}};
+  mem_reg_rvc = _RAND_53[0:0];
+  _RAND_54 = {1{`RANDOM}};
+  mem_reg_btb_resp_entry = _RAND_54[4:0];
+  _RAND_55 = {1{`RANDOM}};
+  mem_reg_btb_resp_bht_history = _RAND_55[7:0];
+  _RAND_56 = {1{`RANDOM}};
+  mem_reg_xcpt = _RAND_56[0:0];
+  _RAND_57 = {1{`RANDOM}};
+  mem_reg_replay = _RAND_57[0:0];
+  _RAND_58 = {1{`RANDOM}};
+  mem_reg_flush_pipe = _RAND_58[0:0];
+  _RAND_59 = {1{`RANDOM}};
+  mem_reg_cause = _RAND_59[31:0];
+  _RAND_60 = {1{`RANDOM}};
+  mem_reg_slow_bypass = _RAND_60[0:0];
+  _RAND_61 = {1{`RANDOM}};
+  mem_reg_load = _RAND_61[0:0];
+  _RAND_62 = {1{`RANDOM}};
+  mem_reg_store = _RAND_62[0:0];
+  _RAND_63 = {1{`RANDOM}};
+  mem_reg_pc = _RAND_63[31:0];
+  _RAND_64 = {1{`RANDOM}};
+  mem_reg_inst = _RAND_64[31:0];
+  _RAND_65 = {1{`RANDOM}};
+  mem_reg_hls_or_dv = _RAND_65[0:0];
+  _RAND_66 = {1{`RANDOM}};
+  mem_reg_raw_inst = _RAND_66[31:0];
+  _RAND_67 = {1{`RANDOM}};
+  mem_reg_wdata = _RAND_67[31:0];
+  _RAND_68 = {1{`RANDOM}};
+  mem_reg_rs2 = _RAND_68[31:0];
+  _RAND_69 = {1{`RANDOM}};
+  mem_br_taken = _RAND_69[0:0];
+  _RAND_70 = {1{`RANDOM}};
+  wb_reg_valid = _RAND_70[0:0];
+  _RAND_71 = {1{`RANDOM}};
+  wb_reg_xcpt = _RAND_71[0:0];
+  _RAND_72 = {1{`RANDOM}};
+  wb_reg_replay = _RAND_72[0:0];
+  _RAND_73 = {1{`RANDOM}};
+  wb_reg_flush_pipe = _RAND_73[0:0];
+  _RAND_74 = {1{`RANDOM}};
+  wb_reg_cause = _RAND_74[31:0];
+  _RAND_75 = {1{`RANDOM}};
+  wb_reg_pc = _RAND_75[31:0];
+  _RAND_76 = {1{`RANDOM}};
+  wb_reg_hls_or_dv = _RAND_76[0:0];
+  _RAND_77 = {1{`RANDOM}};
+  wb_reg_inst = _RAND_77[31:0];
+  _RAND_78 = {1{`RANDOM}};
+  wb_reg_raw_inst = _RAND_78[31:0];
+  _RAND_79 = {1{`RANDOM}};
+  wb_reg_wdata = _RAND_79[31:0];
+  _RAND_80 = {1{`RANDOM}};
+  id_reg_fence = _RAND_80[0:0];
+  _RAND_81 = {1{`RANDOM}};
+  ex_reg_rs_bypass_0 = _RAND_81[0:0];
+  _RAND_82 = {1{`RANDOM}};
+  ex_reg_rs_bypass_1 = _RAND_82[0:0];
+  _RAND_83 = {1{`RANDOM}};
+  ex_reg_rs_lsb_0 = _RAND_83[1:0];
+  _RAND_84 = {1{`RANDOM}};
+  ex_reg_rs_lsb_1 = _RAND_84[1:0];
+  _RAND_85 = {1{`RANDOM}};
+  ex_reg_rs_msb_0 = _RAND_85[29:0];
+  _RAND_86 = {1{`RANDOM}};
+  ex_reg_rs_msb_1 = _RAND_86[29:0];
+  _RAND_87 = {1{`RANDOM}};
+  _r = _RAND_87[31:0];
+  _RAND_88 = {1{`RANDOM}};
+  blocked = _RAND_88[0:0];
+  _RAND_89 = {1{`RANDOM}};
+  div_io_kill_REG = _RAND_89[0:0];
+  _RAND_90 = {1{`RANDOM}};
+  coreMonitorBundle_rd0val_x23 = _RAND_90[31:0];
+  _RAND_91 = {1{`RANDOM}};
+  coreMonitorBundle_rd0val_REG = _RAND_91[31:0];
+  _RAND_92 = {1{`RANDOM}};
+  coreMonitorBundle_rd1val_x29 = _RAND_92[31:0];
+  _RAND_93 = {1{`RANDOM}};
+  coreMonitorBundle_rd1val_REG = _RAND_93[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module RocketTile(
+  input         clock,
+  input         reset,
+  output        auto_slave_in_a_ready,
+  input         auto_slave_in_a_valid,
+  input  [2:0]  auto_slave_in_a_bits_opcode,
+  input  [2:0]  auto_slave_in_a_bits_param,
+  input  [2:0]  auto_slave_in_a_bits_size,
+  input  [1:0]  auto_slave_in_a_bits_source,
+  input  [27:0] auto_slave_in_a_bits_address,
+  input  [3:0]  auto_slave_in_a_bits_mask,
+  input  [31:0] auto_slave_in_a_bits_data,
+  input         auto_slave_in_a_bits_corrupt,
+  input         auto_slave_in_d_ready,
+  output        auto_slave_in_d_valid,
+  output [2:0]  auto_slave_in_d_bits_opcode,
+  output [2:0]  auto_slave_in_d_bits_size,
+  output [1:0]  auto_slave_in_d_bits_source,
+  output [31:0] auto_slave_in_d_bits_data,
+  output        auto_wfi_out_0,
+  input         auto_int_local_in_3_0,
+  input         auto_int_local_in_2_0,
+  input         auto_int_local_in_1_0,
+  input         auto_int_local_in_1_1,
+  input         auto_int_local_in_0_0,
+  input         auto_hartid_in,
+  input         auto_tl_other_masters_out_a_ready,
+  output        auto_tl_other_masters_out_a_valid,
+  output [2:0]  auto_tl_other_masters_out_a_bits_opcode,
+  output [2:0]  auto_tl_other_masters_out_a_bits_param,
+  output [3:0]  auto_tl_other_masters_out_a_bits_size,
+  output [1:0]  auto_tl_other_masters_out_a_bits_source,
+  output [30:0] auto_tl_other_masters_out_a_bits_address,
+  output [3:0]  auto_tl_other_masters_out_a_bits_mask,
+  output [31:0] auto_tl_other_masters_out_a_bits_data,
+  output        auto_tl_other_masters_out_b_ready,
+  input         auto_tl_other_masters_out_b_valid,
+  input  [2:0]  auto_tl_other_masters_out_b_bits_opcode,
+  input  [1:0]  auto_tl_other_masters_out_b_bits_param,
+  input  [3:0]  auto_tl_other_masters_out_b_bits_size,
+  input  [1:0]  auto_tl_other_masters_out_b_bits_source,
+  input  [30:0] auto_tl_other_masters_out_b_bits_address,
+  input  [3:0]  auto_tl_other_masters_out_b_bits_mask,
+  input         auto_tl_other_masters_out_b_bits_corrupt,
+  input         auto_tl_other_masters_out_c_ready,
+  output        auto_tl_other_masters_out_c_valid,
+  output [2:0]  auto_tl_other_masters_out_c_bits_opcode,
+  output [2:0]  auto_tl_other_masters_out_c_bits_param,
+  output [3:0]  auto_tl_other_masters_out_c_bits_size,
+  output [1:0]  auto_tl_other_masters_out_c_bits_source,
+  output [30:0] auto_tl_other_masters_out_c_bits_address,
+  output [31:0] auto_tl_other_masters_out_c_bits_data,
+  output        auto_tl_other_masters_out_d_ready,
+  input         auto_tl_other_masters_out_d_valid,
+  input  [2:0]  auto_tl_other_masters_out_d_bits_opcode,
+  input  [1:0]  auto_tl_other_masters_out_d_bits_param,
+  input  [3:0]  auto_tl_other_masters_out_d_bits_size,
+  input  [1:0]  auto_tl_other_masters_out_d_bits_source,
+  input  [1:0]  auto_tl_other_masters_out_d_bits_sink,
+  input         auto_tl_other_masters_out_d_bits_denied,
+  input  [31:0] auto_tl_other_masters_out_d_bits_data,
+  input         auto_tl_other_masters_out_d_bits_corrupt,
+  input         auto_tl_other_masters_out_e_ready,
+  output        auto_tl_other_masters_out_e_valid,
+  output [1:0]  auto_tl_other_masters_out_e_bits_sink, // <no_sram>
+  output [5:0]  tag_array_ext_RW0_addr, // <no_sram>
+  output        tag_array_ext_RW0_en, // <no_sram>
+  output        tag_array_ext_RW0_clk, // <no_sram>
+  output        tag_array_ext_RW0_wmode, // <no_sram>
+  output [20:0] tag_array_ext_RW0_wdata, // <no_sram>
+  input  [20:0] tag_array_ext_RW0_rdata, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  wire  tlMasterXbar_clock; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_reset; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_1_a_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_1_a_valid; // @[BaseTile.scala 210:42]
+  wire [30:0] tlMasterXbar_auto_in_1_a_bits_address; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_1_d_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_1_d_valid; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_in_1_d_bits_opcode; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_in_1_d_bits_size; // @[BaseTile.scala 210:42]
+  wire [31:0] tlMasterXbar_auto_in_1_d_bits_data; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_1_d_bits_corrupt; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_a_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_a_valid; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_in_0_a_bits_opcode; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_in_0_a_bits_param; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_in_0_a_bits_size; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_a_bits_source; // @[BaseTile.scala 210:42]
+  wire [30:0] tlMasterXbar_auto_in_0_a_bits_address; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_in_0_a_bits_mask; // @[BaseTile.scala 210:42]
+  wire [31:0] tlMasterXbar_auto_in_0_a_bits_data; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_b_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_b_valid; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_in_0_b_bits_param; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_in_0_b_bits_size; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_b_bits_source; // @[BaseTile.scala 210:42]
+  wire [30:0] tlMasterXbar_auto_in_0_b_bits_address; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_c_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_c_valid; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_in_0_c_bits_opcode; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_in_0_c_bits_param; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_in_0_c_bits_size; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_c_bits_source; // @[BaseTile.scala 210:42]
+  wire [30:0] tlMasterXbar_auto_in_0_c_bits_address; // @[BaseTile.scala 210:42]
+  wire [31:0] tlMasterXbar_auto_in_0_c_bits_data; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_d_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_d_valid; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_in_0_d_bits_opcode; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_in_0_d_bits_param; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_in_0_d_bits_size; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_d_bits_source; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_in_0_d_bits_sink; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_d_bits_denied; // @[BaseTile.scala 210:42]
+  wire [31:0] tlMasterXbar_auto_in_0_d_bits_data; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_e_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_e_valid; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_in_0_e_bits_sink; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_a_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_a_valid; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_out_a_bits_opcode; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_out_a_bits_param; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_out_a_bits_size; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_out_a_bits_source; // @[BaseTile.scala 210:42]
+  wire [30:0] tlMasterXbar_auto_out_a_bits_address; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_out_a_bits_mask; // @[BaseTile.scala 210:42]
+  wire [31:0] tlMasterXbar_auto_out_a_bits_data; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_b_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_b_valid; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_out_b_bits_opcode; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_out_b_bits_param; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_out_b_bits_size; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_out_b_bits_source; // @[BaseTile.scala 210:42]
+  wire [30:0] tlMasterXbar_auto_out_b_bits_address; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_out_b_bits_mask; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_b_bits_corrupt; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_c_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_c_valid; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_out_c_bits_opcode; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_out_c_bits_param; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_out_c_bits_size; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_out_c_bits_source; // @[BaseTile.scala 210:42]
+  wire [30:0] tlMasterXbar_auto_out_c_bits_address; // @[BaseTile.scala 210:42]
+  wire [31:0] tlMasterXbar_auto_out_c_bits_data; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_d_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_d_valid; // @[BaseTile.scala 210:42]
+  wire [2:0] tlMasterXbar_auto_out_d_bits_opcode; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_out_d_bits_param; // @[BaseTile.scala 210:42]
+  wire [3:0] tlMasterXbar_auto_out_d_bits_size; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_out_d_bits_source; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_out_d_bits_sink; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_d_bits_denied; // @[BaseTile.scala 210:42]
+  wire [31:0] tlMasterXbar_auto_out_d_bits_data; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_d_bits_corrupt; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_e_ready; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_e_valid; // @[BaseTile.scala 210:42]
+  wire [1:0] tlMasterXbar_auto_out_e_bits_sink; // @[BaseTile.scala 210:42]
+  wire  tlSlaveXbar_auto_in_a_ready; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_in_a_valid; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_in_a_bits_opcode; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_in_a_bits_param; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_in_a_bits_size; // @[BaseTile.scala 211:41]
+  wire [1:0] tlSlaveXbar_auto_in_a_bits_source; // @[BaseTile.scala 211:41]
+  wire [27:0] tlSlaveXbar_auto_in_a_bits_address; // @[BaseTile.scala 211:41]
+  wire [3:0] tlSlaveXbar_auto_in_a_bits_mask; // @[BaseTile.scala 211:41]
+  wire [31:0] tlSlaveXbar_auto_in_a_bits_data; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_in_a_bits_corrupt; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_in_d_ready; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_in_d_valid; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_in_d_bits_opcode; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_in_d_bits_size; // @[BaseTile.scala 211:41]
+  wire [1:0] tlSlaveXbar_auto_in_d_bits_source; // @[BaseTile.scala 211:41]
+  wire [31:0] tlSlaveXbar_auto_in_d_bits_data; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_out_a_ready; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_out_a_valid; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_out_a_bits_opcode; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_out_a_bits_param; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_out_a_bits_size; // @[BaseTile.scala 211:41]
+  wire [1:0] tlSlaveXbar_auto_out_a_bits_source; // @[BaseTile.scala 211:41]
+  wire [27:0] tlSlaveXbar_auto_out_a_bits_address; // @[BaseTile.scala 211:41]
+  wire [3:0] tlSlaveXbar_auto_out_a_bits_mask; // @[BaseTile.scala 211:41]
+  wire [31:0] tlSlaveXbar_auto_out_a_bits_data; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_out_a_bits_corrupt; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_out_d_ready; // @[BaseTile.scala 211:41]
+  wire  tlSlaveXbar_auto_out_d_valid; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_out_d_bits_opcode; // @[BaseTile.scala 211:41]
+  wire [2:0] tlSlaveXbar_auto_out_d_bits_size; // @[BaseTile.scala 211:41]
+  wire [1:0] tlSlaveXbar_auto_out_d_bits_source; // @[BaseTile.scala 211:41]
+  wire [31:0] tlSlaveXbar_auto_out_d_bits_data; // @[BaseTile.scala 211:41]
+  wire  intXbar_auto_int_in_3_0; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_in_2_0; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_in_1_0; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_in_1_1; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_in_0_0; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_out_0; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_out_1; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_out_2; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_out_3; // @[BaseTile.scala 212:37]
+  wire  intXbar_auto_int_out_4; // @[BaseTile.scala 212:37]
+  wire  broadcast_auto_in; // @[BundleBridge.scala 196:31]
+  wire  broadcast_auto_out_0; // @[BundleBridge.scala 196:31]
+  wire  dcache_clock; // @[HellaCache.scala 269:43]
+  wire  dcache_reset; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_a_ready; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_a_valid; // @[HellaCache.scala 269:43]
+  wire [2:0] dcache_auto_out_a_bits_opcode; // @[HellaCache.scala 269:43]
+  wire [2:0] dcache_auto_out_a_bits_param; // @[HellaCache.scala 269:43]
+  wire [3:0] dcache_auto_out_a_bits_size; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_a_bits_source; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_auto_out_a_bits_address; // @[HellaCache.scala 269:43]
+  wire [3:0] dcache_auto_out_a_bits_mask; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_auto_out_a_bits_data; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_b_ready; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_b_valid; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_auto_out_b_bits_param; // @[HellaCache.scala 269:43]
+  wire [3:0] dcache_auto_out_b_bits_size; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_b_bits_source; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_auto_out_b_bits_address; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_c_ready; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_c_valid; // @[HellaCache.scala 269:43]
+  wire [2:0] dcache_auto_out_c_bits_opcode; // @[HellaCache.scala 269:43]
+  wire [2:0] dcache_auto_out_c_bits_param; // @[HellaCache.scala 269:43]
+  wire [3:0] dcache_auto_out_c_bits_size; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_c_bits_source; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_auto_out_c_bits_address; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_auto_out_c_bits_data; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_d_ready; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_d_valid; // @[HellaCache.scala 269:43]
+  wire [2:0] dcache_auto_out_d_bits_opcode; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_auto_out_d_bits_param; // @[HellaCache.scala 269:43]
+  wire [3:0] dcache_auto_out_d_bits_size; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_d_bits_source; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_auto_out_d_bits_sink; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_d_bits_denied; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_auto_out_d_bits_data; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_e_ready; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_e_valid; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_auto_out_e_bits_sink; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_req_ready; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_req_valid; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_io_cpu_req_bits_addr; // @[HellaCache.scala 269:43]
+  wire [5:0] dcache_io_cpu_req_bits_tag; // @[HellaCache.scala 269:43]
+  wire [4:0] dcache_io_cpu_req_bits_cmd; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_cpu_req_bits_size; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_req_bits_signed; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_cpu_req_bits_dprv; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s1_kill; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_io_cpu_s1_data_data; // @[HellaCache.scala 269:43]
+  wire [3:0] dcache_io_cpu_s1_data_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_nack; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_resp_valid; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_io_cpu_resp_bits_addr; // @[HellaCache.scala 269:43]
+  wire [5:0] dcache_io_cpu_resp_bits_tag; // @[HellaCache.scala 269:43]
+  wire [4:0] dcache_io_cpu_resp_bits_cmd; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_cpu_resp_bits_size; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_resp_bits_signed; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_cpu_resp_bits_dprv; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_resp_bits_dv; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_io_cpu_resp_bits_data; // @[HellaCache.scala 269:43]
+  wire [3:0] dcache_io_cpu_resp_bits_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_resp_bits_replay; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_resp_bits_has_data; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_io_cpu_resp_bits_data_word_bypass; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_io_cpu_resp_bits_data_raw; // @[HellaCache.scala 269:43]
+  wire [31:0] dcache_io_cpu_resp_bits_store_data; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_replay_next; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_xcpt_ma_ld; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_xcpt_ma_st; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_xcpt_pf_ld; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_xcpt_pf_st; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_xcpt_gf_ld; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_xcpt_gf_st; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_xcpt_ae_ld; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s2_xcpt_ae_st; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_ordered; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_perf_release; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_perf_grant; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_status_debug; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_0_cfg_l; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_ptw_pmp_0_cfg_a; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_0_cfg_x; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_0_cfg_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_0_cfg_r; // @[HellaCache.scala 269:43]
+  wire [28:0] dcache_io_ptw_pmp_0_addr; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_io_ptw_pmp_0_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_1_cfg_l; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_ptw_pmp_1_cfg_a; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_1_cfg_x; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_1_cfg_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_1_cfg_r; // @[HellaCache.scala 269:43]
+  wire [28:0] dcache_io_ptw_pmp_1_addr; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_io_ptw_pmp_1_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_2_cfg_l; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_ptw_pmp_2_cfg_a; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_2_cfg_x; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_2_cfg_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_2_cfg_r; // @[HellaCache.scala 269:43]
+  wire [28:0] dcache_io_ptw_pmp_2_addr; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_io_ptw_pmp_2_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_3_cfg_l; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_ptw_pmp_3_cfg_a; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_3_cfg_x; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_3_cfg_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_3_cfg_r; // @[HellaCache.scala 269:43]
+  wire [28:0] dcache_io_ptw_pmp_3_addr; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_io_ptw_pmp_3_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_4_cfg_l; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_ptw_pmp_4_cfg_a; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_4_cfg_x; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_4_cfg_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_4_cfg_r; // @[HellaCache.scala 269:43]
+  wire [28:0] dcache_io_ptw_pmp_4_addr; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_io_ptw_pmp_4_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_5_cfg_l; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_ptw_pmp_5_cfg_a; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_5_cfg_x; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_5_cfg_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_5_cfg_r; // @[HellaCache.scala 269:43]
+  wire [28:0] dcache_io_ptw_pmp_5_addr; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_io_ptw_pmp_5_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_6_cfg_l; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_ptw_pmp_6_cfg_a; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_6_cfg_x; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_6_cfg_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_6_cfg_r; // @[HellaCache.scala 269:43]
+  wire [28:0] dcache_io_ptw_pmp_6_addr; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_io_ptw_pmp_6_mask; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_7_cfg_l; // @[HellaCache.scala 269:43]
+  wire [1:0] dcache_io_ptw_pmp_7_cfg_a; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_7_cfg_x; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_7_cfg_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_7_cfg_r; // @[HellaCache.scala 269:43]
+  wire [28:0] dcache_io_ptw_pmp_7_addr; // @[HellaCache.scala 269:43]
+  wire [30:0] dcache_io_ptw_pmp_7_mask; // @[HellaCache.scala 269:43]
+  wire  frontend_clock; // @[Frontend.scala 371:28]
+  wire  frontend_reset; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_slave_in_a_ready; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_slave_in_a_valid; // @[Frontend.scala 371:28]
+  wire [2:0] frontend_auto_icache_slave_in_a_bits_opcode; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_auto_icache_slave_in_a_bits_size; // @[Frontend.scala 371:28]
+  wire [7:0] frontend_auto_icache_slave_in_a_bits_source; // @[Frontend.scala 371:28]
+  wire [27:0] frontend_auto_icache_slave_in_a_bits_address; // @[Frontend.scala 371:28]
+  wire [3:0] frontend_auto_icache_slave_in_a_bits_mask; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_auto_icache_slave_in_a_bits_data; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_slave_in_d_ready; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_slave_in_d_valid; // @[Frontend.scala 371:28]
+  wire [2:0] frontend_auto_icache_slave_in_d_bits_opcode; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_auto_icache_slave_in_d_bits_size; // @[Frontend.scala 371:28]
+  wire [7:0] frontend_auto_icache_slave_in_d_bits_source; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_auto_icache_slave_in_d_bits_data; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_master_out_a_ready; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_master_out_a_valid; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_auto_icache_master_out_a_bits_address; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_master_out_d_ready; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_master_out_d_valid; // @[Frontend.scala 371:28]
+  wire [2:0] frontend_auto_icache_master_out_d_bits_opcode; // @[Frontend.scala 371:28]
+  wire [3:0] frontend_auto_icache_master_out_d_bits_size; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_auto_icache_master_out_d_bits_data; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_master_out_d_bits_corrupt; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_might_request; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_req_valid; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_cpu_req_bits_pc; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_req_bits_speculative; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_resp_ready; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_resp_valid; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_resp_bits_btb_taken; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_resp_bits_btb_bridx; // @[Frontend.scala 371:28]
+  wire [4:0] frontend_io_cpu_resp_bits_btb_entry; // @[Frontend.scala 371:28]
+  wire [7:0] frontend_io_cpu_resp_bits_btb_bht_history; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_cpu_resp_bits_pc; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_cpu_resp_bits_data; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_resp_bits_xcpt_ae_inst; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_resp_bits_replay; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_btb_update_valid; // @[Frontend.scala 371:28]
+  wire [4:0] frontend_io_cpu_btb_update_bits_prediction_entry; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_cpu_btb_update_bits_pc; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_btb_update_bits_isValid; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_cpu_btb_update_bits_br_pc; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_cpu_btb_update_bits_cfiType; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_bht_update_valid; // @[Frontend.scala 371:28]
+  wire [7:0] frontend_io_cpu_bht_update_bits_prediction_history; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_cpu_bht_update_bits_pc; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_bht_update_bits_branch; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_bht_update_bits_taken; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_bht_update_bits_mispredict; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_flush_icache; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_cpu_npc; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_status_debug; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_status_prv; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_0_cfg_l; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_pmp_0_cfg_a; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_0_cfg_x; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_0_cfg_w; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_0_cfg_r; // @[Frontend.scala 371:28]
+  wire [28:0] frontend_io_ptw_pmp_0_addr; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_io_ptw_pmp_0_mask; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_1_cfg_l; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_pmp_1_cfg_a; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_1_cfg_x; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_1_cfg_w; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_1_cfg_r; // @[Frontend.scala 371:28]
+  wire [28:0] frontend_io_ptw_pmp_1_addr; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_io_ptw_pmp_1_mask; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_2_cfg_l; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_pmp_2_cfg_a; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_2_cfg_x; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_2_cfg_w; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_2_cfg_r; // @[Frontend.scala 371:28]
+  wire [28:0] frontend_io_ptw_pmp_2_addr; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_io_ptw_pmp_2_mask; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_3_cfg_l; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_pmp_3_cfg_a; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_3_cfg_x; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_3_cfg_w; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_3_cfg_r; // @[Frontend.scala 371:28]
+  wire [28:0] frontend_io_ptw_pmp_3_addr; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_io_ptw_pmp_3_mask; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_4_cfg_l; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_pmp_4_cfg_a; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_4_cfg_x; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_4_cfg_w; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_4_cfg_r; // @[Frontend.scala 371:28]
+  wire [28:0] frontend_io_ptw_pmp_4_addr; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_io_ptw_pmp_4_mask; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_5_cfg_l; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_pmp_5_cfg_a; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_5_cfg_x; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_5_cfg_w; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_5_cfg_r; // @[Frontend.scala 371:28]
+  wire [28:0] frontend_io_ptw_pmp_5_addr; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_io_ptw_pmp_5_mask; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_6_cfg_l; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_pmp_6_cfg_a; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_6_cfg_x; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_6_cfg_w; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_6_cfg_r; // @[Frontend.scala 371:28]
+  wire [28:0] frontend_io_ptw_pmp_6_addr; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_io_ptw_pmp_6_mask; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_7_cfg_l; // @[Frontend.scala 371:28]
+  wire [1:0] frontend_io_ptw_pmp_7_cfg_a; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_7_cfg_x; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_7_cfg_w; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_pmp_7_cfg_r; // @[Frontend.scala 371:28]
+  wire [28:0] frontend_io_ptw_pmp_7_addr; // @[Frontend.scala 371:28]
+  wire [30:0] frontend_io_ptw_pmp_7_mask; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_ptw_customCSRs_csrs_0_value; // @[Frontend.scala 371:28]
+  wire  fragmenter_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [27:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_a_bits_corrupt; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [27:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [3:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  dcacheArb_io_requestor_0_req_ready; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_req_valid; // @[HellaCache.scala 280:25]
+  wire [31:0] dcacheArb_io_requestor_0_req_bits_addr; // @[HellaCache.scala 280:25]
+  wire [5:0] dcacheArb_io_requestor_0_req_bits_tag; // @[HellaCache.scala 280:25]
+  wire [4:0] dcacheArb_io_requestor_0_req_bits_cmd; // @[HellaCache.scala 280:25]
+  wire [1:0] dcacheArb_io_requestor_0_req_bits_size; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_req_bits_signed; // @[HellaCache.scala 280:25]
+  wire [1:0] dcacheArb_io_requestor_0_req_bits_dprv; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_s1_kill; // @[HellaCache.scala 280:25]
+  wire [31:0] dcacheArb_io_requestor_0_s1_data_data; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_s2_nack; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_resp_valid; // @[HellaCache.scala 280:25]
+  wire [5:0] dcacheArb_io_requestor_0_resp_bits_tag; // @[HellaCache.scala 280:25]
+  wire [31:0] dcacheArb_io_requestor_0_resp_bits_data; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_resp_bits_replay; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_resp_bits_has_data; // @[HellaCache.scala 280:25]
+  wire [31:0] dcacheArb_io_requestor_0_resp_bits_data_word_bypass; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_replay_next; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_s2_xcpt_ma_ld; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_s2_xcpt_ma_st; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_s2_xcpt_pf_ld; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_s2_xcpt_pf_st; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_s2_xcpt_ae_ld; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_s2_xcpt_ae_st; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_ordered; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_perf_release; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_perf_grant; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_req_ready; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_req_valid; // @[HellaCache.scala 280:25]
+  wire [31:0] dcacheArb_io_mem_req_bits_addr; // @[HellaCache.scala 280:25]
+  wire [5:0] dcacheArb_io_mem_req_bits_tag; // @[HellaCache.scala 280:25]
+  wire [4:0] dcacheArb_io_mem_req_bits_cmd; // @[HellaCache.scala 280:25]
+  wire [1:0] dcacheArb_io_mem_req_bits_size; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_req_bits_signed; // @[HellaCache.scala 280:25]
+  wire [1:0] dcacheArb_io_mem_req_bits_dprv; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s1_kill; // @[HellaCache.scala 280:25]
+  wire [31:0] dcacheArb_io_mem_s1_data_data; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s2_nack; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_resp_valid; // @[HellaCache.scala 280:25]
+  wire [5:0] dcacheArb_io_mem_resp_bits_tag; // @[HellaCache.scala 280:25]
+  wire [31:0] dcacheArb_io_mem_resp_bits_data; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_resp_bits_replay; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_resp_bits_has_data; // @[HellaCache.scala 280:25]
+  wire [31:0] dcacheArb_io_mem_resp_bits_data_word_bypass; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_replay_next; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s2_xcpt_ma_ld; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s2_xcpt_ma_st; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s2_xcpt_pf_ld; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s2_xcpt_pf_st; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s2_xcpt_ae_ld; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s2_xcpt_ae_st; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_ordered; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_perf_release; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_perf_grant; // @[HellaCache.scala 280:25]
+  wire  ptw_clock; // @[PTW.scala 604:19]
+  wire  ptw_reset; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_status_debug; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_0_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_0_pmp_0_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_0_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_0_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_0_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_0_pmp_0_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_0_pmp_0_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_1_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_0_pmp_1_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_1_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_1_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_1_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_0_pmp_1_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_0_pmp_1_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_2_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_0_pmp_2_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_2_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_2_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_2_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_0_pmp_2_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_0_pmp_2_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_3_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_0_pmp_3_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_3_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_3_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_3_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_0_pmp_3_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_0_pmp_3_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_4_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_0_pmp_4_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_4_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_4_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_4_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_0_pmp_4_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_0_pmp_4_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_5_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_0_pmp_5_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_5_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_5_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_5_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_0_pmp_5_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_0_pmp_5_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_6_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_0_pmp_6_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_6_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_6_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_6_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_0_pmp_6_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_0_pmp_6_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_7_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_0_pmp_7_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_7_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_7_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_7_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_0_pmp_7_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_0_pmp_7_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_status_debug; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_status_prv; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_0_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_pmp_0_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_0_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_0_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_0_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_1_pmp_0_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_1_pmp_0_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_1_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_pmp_1_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_1_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_1_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_1_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_1_pmp_1_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_1_pmp_1_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_2_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_pmp_2_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_2_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_2_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_2_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_1_pmp_2_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_1_pmp_2_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_3_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_pmp_3_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_3_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_3_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_3_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_1_pmp_3_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_1_pmp_3_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_4_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_pmp_4_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_4_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_4_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_4_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_1_pmp_4_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_1_pmp_4_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_5_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_pmp_5_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_5_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_5_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_5_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_1_pmp_5_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_1_pmp_5_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_6_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_pmp_6_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_6_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_6_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_6_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_1_pmp_6_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_1_pmp_6_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_7_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_requestor_1_pmp_7_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_7_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_7_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_pmp_7_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_requestor_1_pmp_7_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_requestor_1_pmp_7_mask; // @[PTW.scala 604:19]
+  wire [31:0] ptw_io_requestor_1_customCSRs_csrs_0_value; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_status_debug; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_status_prv; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_0_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_pmp_0_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_0_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_0_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_0_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_dpath_pmp_0_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_dpath_pmp_0_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_1_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_pmp_1_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_1_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_1_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_1_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_dpath_pmp_1_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_dpath_pmp_1_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_2_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_pmp_2_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_2_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_2_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_2_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_dpath_pmp_2_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_dpath_pmp_2_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_3_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_pmp_3_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_3_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_3_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_3_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_dpath_pmp_3_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_dpath_pmp_3_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_4_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_pmp_4_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_4_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_4_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_4_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_dpath_pmp_4_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_dpath_pmp_4_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_5_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_pmp_5_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_5_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_5_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_5_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_dpath_pmp_5_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_dpath_pmp_5_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_6_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_pmp_6_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_6_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_6_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_6_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_dpath_pmp_6_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_dpath_pmp_6_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_7_cfg_l; // @[PTW.scala 604:19]
+  wire [1:0] ptw_io_dpath_pmp_7_cfg_a; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_7_cfg_x; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_7_cfg_w; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_pmp_7_cfg_r; // @[PTW.scala 604:19]
+  wire [28:0] ptw_io_dpath_pmp_7_addr; // @[PTW.scala 604:19]
+  wire [30:0] ptw_io_dpath_pmp_7_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_perf_l2hit; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_perf_pte_miss; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_perf_pte_hit; // @[PTW.scala 604:19]
+  wire [31:0] ptw_io_dpath_customCSRs_csrs_0_value; // @[PTW.scala 604:19]
+  wire  core_clock; // @[RocketTile.scala 140:20]
+  wire  core_reset; // @[RocketTile.scala 140:20]
+  wire  core_io_hartid; // @[RocketTile.scala 140:20]
+  wire  core_io_interrupts_debug; // @[RocketTile.scala 140:20]
+  wire  core_io_interrupts_mtip; // @[RocketTile.scala 140:20]
+  wire  core_io_interrupts_msip; // @[RocketTile.scala 140:20]
+  wire  core_io_interrupts_meip; // @[RocketTile.scala 140:20]
+  wire  core_io_interrupts_seip; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_might_request; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_req_valid; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_imem_req_bits_pc; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_req_bits_speculative; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_resp_ready; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_resp_valid; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_resp_bits_btb_taken; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_resp_bits_btb_bridx; // @[RocketTile.scala 140:20]
+  wire [4:0] core_io_imem_resp_bits_btb_entry; // @[RocketTile.scala 140:20]
+  wire [7:0] core_io_imem_resp_bits_btb_bht_history; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_imem_resp_bits_pc; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_imem_resp_bits_data; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_resp_bits_xcpt_ae_inst; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_resp_bits_replay; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_btb_update_valid; // @[RocketTile.scala 140:20]
+  wire [4:0] core_io_imem_btb_update_bits_prediction_entry; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_imem_btb_update_bits_pc; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_btb_update_bits_isValid; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_imem_btb_update_bits_br_pc; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_imem_btb_update_bits_cfiType; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_bht_update_valid; // @[RocketTile.scala 140:20]
+  wire [7:0] core_io_imem_bht_update_bits_prediction_history; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_imem_bht_update_bits_pc; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_bht_update_bits_branch; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_bht_update_bits_taken; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_bht_update_bits_mispredict; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_flush_icache; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_req_ready; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_req_valid; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_dmem_req_bits_addr; // @[RocketTile.scala 140:20]
+  wire [5:0] core_io_dmem_req_bits_tag; // @[RocketTile.scala 140:20]
+  wire [4:0] core_io_dmem_req_bits_cmd; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_dmem_req_bits_size; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_req_bits_signed; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_dmem_req_bits_dprv; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_req_bits_dv; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s1_kill; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_dmem_s1_data_data; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s2_nack; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_resp_valid; // @[RocketTile.scala 140:20]
+  wire [5:0] core_io_dmem_resp_bits_tag; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_dmem_resp_bits_data; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_resp_bits_replay; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_resp_bits_has_data; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_dmem_resp_bits_data_word_bypass; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_replay_next; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s2_xcpt_ma_ld; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s2_xcpt_ma_st; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s2_xcpt_pf_ld; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s2_xcpt_pf_st; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s2_xcpt_ae_ld; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s2_xcpt_ae_st; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_ordered; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_perf_release; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_perf_grant; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_status_debug; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_status_prv; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_0_cfg_l; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_pmp_0_cfg_a; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_0_cfg_x; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_0_cfg_w; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_0_cfg_r; // @[RocketTile.scala 140:20]
+  wire [28:0] core_io_ptw_pmp_0_addr; // @[RocketTile.scala 140:20]
+  wire [30:0] core_io_ptw_pmp_0_mask; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_1_cfg_l; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_pmp_1_cfg_a; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_1_cfg_x; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_1_cfg_w; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_1_cfg_r; // @[RocketTile.scala 140:20]
+  wire [28:0] core_io_ptw_pmp_1_addr; // @[RocketTile.scala 140:20]
+  wire [30:0] core_io_ptw_pmp_1_mask; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_2_cfg_l; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_pmp_2_cfg_a; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_2_cfg_x; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_2_cfg_w; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_2_cfg_r; // @[RocketTile.scala 140:20]
+  wire [28:0] core_io_ptw_pmp_2_addr; // @[RocketTile.scala 140:20]
+  wire [30:0] core_io_ptw_pmp_2_mask; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_3_cfg_l; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_pmp_3_cfg_a; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_3_cfg_x; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_3_cfg_w; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_3_cfg_r; // @[RocketTile.scala 140:20]
+  wire [28:0] core_io_ptw_pmp_3_addr; // @[RocketTile.scala 140:20]
+  wire [30:0] core_io_ptw_pmp_3_mask; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_4_cfg_l; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_pmp_4_cfg_a; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_4_cfg_x; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_4_cfg_w; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_4_cfg_r; // @[RocketTile.scala 140:20]
+  wire [28:0] core_io_ptw_pmp_4_addr; // @[RocketTile.scala 140:20]
+  wire [30:0] core_io_ptw_pmp_4_mask; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_5_cfg_l; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_pmp_5_cfg_a; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_5_cfg_x; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_5_cfg_w; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_5_cfg_r; // @[RocketTile.scala 140:20]
+  wire [28:0] core_io_ptw_pmp_5_addr; // @[RocketTile.scala 140:20]
+  wire [30:0] core_io_ptw_pmp_5_mask; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_6_cfg_l; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_pmp_6_cfg_a; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_6_cfg_x; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_6_cfg_w; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_6_cfg_r; // @[RocketTile.scala 140:20]
+  wire [28:0] core_io_ptw_pmp_6_addr; // @[RocketTile.scala 140:20]
+  wire [30:0] core_io_ptw_pmp_6_mask; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_7_cfg_l; // @[RocketTile.scala 140:20]
+  wire [1:0] core_io_ptw_pmp_7_cfg_a; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_7_cfg_x; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_7_cfg_w; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_pmp_7_cfg_r; // @[RocketTile.scala 140:20]
+  wire [28:0] core_io_ptw_pmp_7_addr; // @[RocketTile.scala 140:20]
+  wire [30:0] core_io_ptw_pmp_7_mask; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_ptw_customCSRs_csrs_0_value; // @[RocketTile.scala 140:20]
+  wire  core_io_wfi; // @[RocketTile.scala 140:20]
+  reg  bundleOut_0_0_REG; // @[Interrupts.scala 126:36]
+  TLXbar_7 tlMasterXbar ( // @[BaseTile.scala 210:42]
+    .clock(tlMasterXbar_clock),
+    .reset(tlMasterXbar_reset),
+    .auto_in_1_a_ready(tlMasterXbar_auto_in_1_a_ready),
+    .auto_in_1_a_valid(tlMasterXbar_auto_in_1_a_valid),
+    .auto_in_1_a_bits_address(tlMasterXbar_auto_in_1_a_bits_address),
+    .auto_in_1_d_ready(tlMasterXbar_auto_in_1_d_ready),
+    .auto_in_1_d_valid(tlMasterXbar_auto_in_1_d_valid),
+    .auto_in_1_d_bits_opcode(tlMasterXbar_auto_in_1_d_bits_opcode),
+    .auto_in_1_d_bits_size(tlMasterXbar_auto_in_1_d_bits_size),
+    .auto_in_1_d_bits_data(tlMasterXbar_auto_in_1_d_bits_data),
+    .auto_in_1_d_bits_corrupt(tlMasterXbar_auto_in_1_d_bits_corrupt),
+    .auto_in_0_a_ready(tlMasterXbar_auto_in_0_a_ready),
+    .auto_in_0_a_valid(tlMasterXbar_auto_in_0_a_valid),
+    .auto_in_0_a_bits_opcode(tlMasterXbar_auto_in_0_a_bits_opcode),
+    .auto_in_0_a_bits_param(tlMasterXbar_auto_in_0_a_bits_param),
+    .auto_in_0_a_bits_size(tlMasterXbar_auto_in_0_a_bits_size),
+    .auto_in_0_a_bits_source(tlMasterXbar_auto_in_0_a_bits_source),
+    .auto_in_0_a_bits_address(tlMasterXbar_auto_in_0_a_bits_address),
+    .auto_in_0_a_bits_mask(tlMasterXbar_auto_in_0_a_bits_mask),
+    .auto_in_0_a_bits_data(tlMasterXbar_auto_in_0_a_bits_data),
+    .auto_in_0_b_ready(tlMasterXbar_auto_in_0_b_ready),
+    .auto_in_0_b_valid(tlMasterXbar_auto_in_0_b_valid),
+    .auto_in_0_b_bits_param(tlMasterXbar_auto_in_0_b_bits_param),
+    .auto_in_0_b_bits_size(tlMasterXbar_auto_in_0_b_bits_size),
+    .auto_in_0_b_bits_source(tlMasterXbar_auto_in_0_b_bits_source),
+    .auto_in_0_b_bits_address(tlMasterXbar_auto_in_0_b_bits_address),
+    .auto_in_0_c_ready(tlMasterXbar_auto_in_0_c_ready),
+    .auto_in_0_c_valid(tlMasterXbar_auto_in_0_c_valid),
+    .auto_in_0_c_bits_opcode(tlMasterXbar_auto_in_0_c_bits_opcode),
+    .auto_in_0_c_bits_param(tlMasterXbar_auto_in_0_c_bits_param),
+    .auto_in_0_c_bits_size(tlMasterXbar_auto_in_0_c_bits_size),
+    .auto_in_0_c_bits_source(tlMasterXbar_auto_in_0_c_bits_source),
+    .auto_in_0_c_bits_address(tlMasterXbar_auto_in_0_c_bits_address),
+    .auto_in_0_c_bits_data(tlMasterXbar_auto_in_0_c_bits_data),
+    .auto_in_0_d_ready(tlMasterXbar_auto_in_0_d_ready),
+    .auto_in_0_d_valid(tlMasterXbar_auto_in_0_d_valid),
+    .auto_in_0_d_bits_opcode(tlMasterXbar_auto_in_0_d_bits_opcode),
+    .auto_in_0_d_bits_param(tlMasterXbar_auto_in_0_d_bits_param),
+    .auto_in_0_d_bits_size(tlMasterXbar_auto_in_0_d_bits_size),
+    .auto_in_0_d_bits_source(tlMasterXbar_auto_in_0_d_bits_source),
+    .auto_in_0_d_bits_sink(tlMasterXbar_auto_in_0_d_bits_sink),
+    .auto_in_0_d_bits_denied(tlMasterXbar_auto_in_0_d_bits_denied),
+    .auto_in_0_d_bits_data(tlMasterXbar_auto_in_0_d_bits_data),
+    .auto_in_0_e_ready(tlMasterXbar_auto_in_0_e_ready),
+    .auto_in_0_e_valid(tlMasterXbar_auto_in_0_e_valid),
+    .auto_in_0_e_bits_sink(tlMasterXbar_auto_in_0_e_bits_sink),
+    .auto_out_a_ready(tlMasterXbar_auto_out_a_ready),
+    .auto_out_a_valid(tlMasterXbar_auto_out_a_valid),
+    .auto_out_a_bits_opcode(tlMasterXbar_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(tlMasterXbar_auto_out_a_bits_param),
+    .auto_out_a_bits_size(tlMasterXbar_auto_out_a_bits_size),
+    .auto_out_a_bits_source(tlMasterXbar_auto_out_a_bits_source),
+    .auto_out_a_bits_address(tlMasterXbar_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(tlMasterXbar_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(tlMasterXbar_auto_out_a_bits_data),
+    .auto_out_b_ready(tlMasterXbar_auto_out_b_ready),
+    .auto_out_b_valid(tlMasterXbar_auto_out_b_valid),
+    .auto_out_b_bits_opcode(tlMasterXbar_auto_out_b_bits_opcode),
+    .auto_out_b_bits_param(tlMasterXbar_auto_out_b_bits_param),
+    .auto_out_b_bits_size(tlMasterXbar_auto_out_b_bits_size),
+    .auto_out_b_bits_source(tlMasterXbar_auto_out_b_bits_source),
+    .auto_out_b_bits_address(tlMasterXbar_auto_out_b_bits_address),
+    .auto_out_b_bits_mask(tlMasterXbar_auto_out_b_bits_mask),
+    .auto_out_b_bits_corrupt(tlMasterXbar_auto_out_b_bits_corrupt),
+    .auto_out_c_ready(tlMasterXbar_auto_out_c_ready),
+    .auto_out_c_valid(tlMasterXbar_auto_out_c_valid),
+    .auto_out_c_bits_opcode(tlMasterXbar_auto_out_c_bits_opcode),
+    .auto_out_c_bits_param(tlMasterXbar_auto_out_c_bits_param),
+    .auto_out_c_bits_size(tlMasterXbar_auto_out_c_bits_size),
+    .auto_out_c_bits_source(tlMasterXbar_auto_out_c_bits_source),
+    .auto_out_c_bits_address(tlMasterXbar_auto_out_c_bits_address),
+    .auto_out_c_bits_data(tlMasterXbar_auto_out_c_bits_data),
+    .auto_out_d_ready(tlMasterXbar_auto_out_d_ready),
+    .auto_out_d_valid(tlMasterXbar_auto_out_d_valid),
+    .auto_out_d_bits_opcode(tlMasterXbar_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(tlMasterXbar_auto_out_d_bits_param),
+    .auto_out_d_bits_size(tlMasterXbar_auto_out_d_bits_size),
+    .auto_out_d_bits_source(tlMasterXbar_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(tlMasterXbar_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(tlMasterXbar_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(tlMasterXbar_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(tlMasterXbar_auto_out_d_bits_corrupt),
+    .auto_out_e_ready(tlMasterXbar_auto_out_e_ready),
+    .auto_out_e_valid(tlMasterXbar_auto_out_e_valid),
+    .auto_out_e_bits_sink(tlMasterXbar_auto_out_e_bits_sink)
+  );
+  TLXbar_8 tlSlaveXbar ( // @[BaseTile.scala 211:41]
+    .auto_in_a_ready(tlSlaveXbar_auto_in_a_ready),
+    .auto_in_a_valid(tlSlaveXbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(tlSlaveXbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(tlSlaveXbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(tlSlaveXbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(tlSlaveXbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(tlSlaveXbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(tlSlaveXbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(tlSlaveXbar_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(tlSlaveXbar_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(tlSlaveXbar_auto_in_d_ready),
+    .auto_in_d_valid(tlSlaveXbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(tlSlaveXbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(tlSlaveXbar_auto_in_d_bits_size),
+    .auto_in_d_bits_source(tlSlaveXbar_auto_in_d_bits_source),
+    .auto_in_d_bits_data(tlSlaveXbar_auto_in_d_bits_data),
+    .auto_out_a_ready(tlSlaveXbar_auto_out_a_ready),
+    .auto_out_a_valid(tlSlaveXbar_auto_out_a_valid),
+    .auto_out_a_bits_opcode(tlSlaveXbar_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(tlSlaveXbar_auto_out_a_bits_param),
+    .auto_out_a_bits_size(tlSlaveXbar_auto_out_a_bits_size),
+    .auto_out_a_bits_source(tlSlaveXbar_auto_out_a_bits_source),
+    .auto_out_a_bits_address(tlSlaveXbar_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(tlSlaveXbar_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(tlSlaveXbar_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(tlSlaveXbar_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(tlSlaveXbar_auto_out_d_ready),
+    .auto_out_d_valid(tlSlaveXbar_auto_out_d_valid),
+    .auto_out_d_bits_opcode(tlSlaveXbar_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(tlSlaveXbar_auto_out_d_bits_size),
+    .auto_out_d_bits_source(tlSlaveXbar_auto_out_d_bits_source),
+    .auto_out_d_bits_data(tlSlaveXbar_auto_out_d_bits_data)
+  );
+  IntXbar_1 intXbar ( // @[BaseTile.scala 212:37]
+    .auto_int_in_3_0(intXbar_auto_int_in_3_0),
+    .auto_int_in_2_0(intXbar_auto_int_in_2_0),
+    .auto_int_in_1_0(intXbar_auto_int_in_1_0),
+    .auto_int_in_1_1(intXbar_auto_int_in_1_1),
+    .auto_int_in_0_0(intXbar_auto_int_in_0_0),
+    .auto_int_out_0(intXbar_auto_int_out_0),
+    .auto_int_out_1(intXbar_auto_int_out_1),
+    .auto_int_out_2(intXbar_auto_int_out_2),
+    .auto_int_out_3(intXbar_auto_int_out_3),
+    .auto_int_out_4(intXbar_auto_int_out_4)
+  );
+  BundleBridgeNexus_6 broadcast ( // @[BundleBridge.scala 196:31]
+    .auto_in(broadcast_auto_in),
+    .auto_out_0(broadcast_auto_out_0)
+  );
+  DCache dcache ( // @[HellaCache.scala 269:43]
+    .clock(dcache_clock),
+    .reset(dcache_reset),
+    .auto_out_a_ready(dcache_auto_out_a_ready),
+    .auto_out_a_valid(dcache_auto_out_a_valid),
+    .auto_out_a_bits_opcode(dcache_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(dcache_auto_out_a_bits_param),
+    .auto_out_a_bits_size(dcache_auto_out_a_bits_size),
+    .auto_out_a_bits_source(dcache_auto_out_a_bits_source),
+    .auto_out_a_bits_address(dcache_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(dcache_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(dcache_auto_out_a_bits_data),
+    .auto_out_b_ready(dcache_auto_out_b_ready),
+    .auto_out_b_valid(dcache_auto_out_b_valid),
+    .auto_out_b_bits_param(dcache_auto_out_b_bits_param),
+    .auto_out_b_bits_size(dcache_auto_out_b_bits_size),
+    .auto_out_b_bits_source(dcache_auto_out_b_bits_source),
+    .auto_out_b_bits_address(dcache_auto_out_b_bits_address),
+    .auto_out_c_ready(dcache_auto_out_c_ready),
+    .auto_out_c_valid(dcache_auto_out_c_valid),
+    .auto_out_c_bits_opcode(dcache_auto_out_c_bits_opcode),
+    .auto_out_c_bits_param(dcache_auto_out_c_bits_param),
+    .auto_out_c_bits_size(dcache_auto_out_c_bits_size),
+    .auto_out_c_bits_source(dcache_auto_out_c_bits_source),
+    .auto_out_c_bits_address(dcache_auto_out_c_bits_address),
+    .auto_out_c_bits_data(dcache_auto_out_c_bits_data),
+    .auto_out_d_ready(dcache_auto_out_d_ready),
+    .auto_out_d_valid(dcache_auto_out_d_valid),
+    .auto_out_d_bits_opcode(dcache_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(dcache_auto_out_d_bits_param),
+    .auto_out_d_bits_size(dcache_auto_out_d_bits_size),
+    .auto_out_d_bits_source(dcache_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(dcache_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(dcache_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(dcache_auto_out_d_bits_data),
+    .auto_out_e_ready(dcache_auto_out_e_ready),
+    .auto_out_e_valid(dcache_auto_out_e_valid),
+    .auto_out_e_bits_sink(dcache_auto_out_e_bits_sink),
+    .io_cpu_req_ready(dcache_io_cpu_req_ready),
+    .io_cpu_req_valid(dcache_io_cpu_req_valid),
+    .io_cpu_req_bits_addr(dcache_io_cpu_req_bits_addr),
+    .io_cpu_req_bits_tag(dcache_io_cpu_req_bits_tag),
+    .io_cpu_req_bits_cmd(dcache_io_cpu_req_bits_cmd),
+    .io_cpu_req_bits_size(dcache_io_cpu_req_bits_size),
+    .io_cpu_req_bits_signed(dcache_io_cpu_req_bits_signed),
+    .io_cpu_req_bits_dprv(dcache_io_cpu_req_bits_dprv),
+    .io_cpu_s1_kill(dcache_io_cpu_s1_kill),
+    .io_cpu_s1_data_data(dcache_io_cpu_s1_data_data),
+    .io_cpu_s1_data_mask(dcache_io_cpu_s1_data_mask),
+    .io_cpu_s2_nack(dcache_io_cpu_s2_nack),
+    .io_cpu_resp_valid(dcache_io_cpu_resp_valid),
+    .io_cpu_resp_bits_addr(dcache_io_cpu_resp_bits_addr),
+    .io_cpu_resp_bits_tag(dcache_io_cpu_resp_bits_tag),
+    .io_cpu_resp_bits_cmd(dcache_io_cpu_resp_bits_cmd),
+    .io_cpu_resp_bits_size(dcache_io_cpu_resp_bits_size),
+    .io_cpu_resp_bits_signed(dcache_io_cpu_resp_bits_signed),
+    .io_cpu_resp_bits_dprv(dcache_io_cpu_resp_bits_dprv),
+    .io_cpu_resp_bits_dv(dcache_io_cpu_resp_bits_dv),
+    .io_cpu_resp_bits_data(dcache_io_cpu_resp_bits_data),
+    .io_cpu_resp_bits_mask(dcache_io_cpu_resp_bits_mask),
+    .io_cpu_resp_bits_replay(dcache_io_cpu_resp_bits_replay),
+    .io_cpu_resp_bits_has_data(dcache_io_cpu_resp_bits_has_data),
+    .io_cpu_resp_bits_data_word_bypass(dcache_io_cpu_resp_bits_data_word_bypass),
+    .io_cpu_resp_bits_data_raw(dcache_io_cpu_resp_bits_data_raw),
+    .io_cpu_resp_bits_store_data(dcache_io_cpu_resp_bits_store_data),
+    .io_cpu_replay_next(dcache_io_cpu_replay_next),
+    .io_cpu_s2_xcpt_ma_ld(dcache_io_cpu_s2_xcpt_ma_ld),
+    .io_cpu_s2_xcpt_ma_st(dcache_io_cpu_s2_xcpt_ma_st),
+    .io_cpu_s2_xcpt_pf_ld(dcache_io_cpu_s2_xcpt_pf_ld),
+    .io_cpu_s2_xcpt_pf_st(dcache_io_cpu_s2_xcpt_pf_st),
+    .io_cpu_s2_xcpt_gf_ld(dcache_io_cpu_s2_xcpt_gf_ld),
+    .io_cpu_s2_xcpt_gf_st(dcache_io_cpu_s2_xcpt_gf_st),
+    .io_cpu_s2_xcpt_ae_ld(dcache_io_cpu_s2_xcpt_ae_ld),
+    .io_cpu_s2_xcpt_ae_st(dcache_io_cpu_s2_xcpt_ae_st),
+    .io_cpu_ordered(dcache_io_cpu_ordered),
+    .io_cpu_perf_release(dcache_io_cpu_perf_release),
+    .io_cpu_perf_grant(dcache_io_cpu_perf_grant),
+    .io_ptw_status_debug(dcache_io_ptw_status_debug),
+    .io_ptw_pmp_0_cfg_l(dcache_io_ptw_pmp_0_cfg_l),
+    .io_ptw_pmp_0_cfg_a(dcache_io_ptw_pmp_0_cfg_a),
+    .io_ptw_pmp_0_cfg_x(dcache_io_ptw_pmp_0_cfg_x),
+    .io_ptw_pmp_0_cfg_w(dcache_io_ptw_pmp_0_cfg_w),
+    .io_ptw_pmp_0_cfg_r(dcache_io_ptw_pmp_0_cfg_r),
+    .io_ptw_pmp_0_addr(dcache_io_ptw_pmp_0_addr),
+    .io_ptw_pmp_0_mask(dcache_io_ptw_pmp_0_mask),
+    .io_ptw_pmp_1_cfg_l(dcache_io_ptw_pmp_1_cfg_l),
+    .io_ptw_pmp_1_cfg_a(dcache_io_ptw_pmp_1_cfg_a),
+    .io_ptw_pmp_1_cfg_x(dcache_io_ptw_pmp_1_cfg_x),
+    .io_ptw_pmp_1_cfg_w(dcache_io_ptw_pmp_1_cfg_w),
+    .io_ptw_pmp_1_cfg_r(dcache_io_ptw_pmp_1_cfg_r),
+    .io_ptw_pmp_1_addr(dcache_io_ptw_pmp_1_addr),
+    .io_ptw_pmp_1_mask(dcache_io_ptw_pmp_1_mask),
+    .io_ptw_pmp_2_cfg_l(dcache_io_ptw_pmp_2_cfg_l),
+    .io_ptw_pmp_2_cfg_a(dcache_io_ptw_pmp_2_cfg_a),
+    .io_ptw_pmp_2_cfg_x(dcache_io_ptw_pmp_2_cfg_x),
+    .io_ptw_pmp_2_cfg_w(dcache_io_ptw_pmp_2_cfg_w),
+    .io_ptw_pmp_2_cfg_r(dcache_io_ptw_pmp_2_cfg_r),
+    .io_ptw_pmp_2_addr(dcache_io_ptw_pmp_2_addr),
+    .io_ptw_pmp_2_mask(dcache_io_ptw_pmp_2_mask),
+    .io_ptw_pmp_3_cfg_l(dcache_io_ptw_pmp_3_cfg_l),
+    .io_ptw_pmp_3_cfg_a(dcache_io_ptw_pmp_3_cfg_a),
+    .io_ptw_pmp_3_cfg_x(dcache_io_ptw_pmp_3_cfg_x),
+    .io_ptw_pmp_3_cfg_w(dcache_io_ptw_pmp_3_cfg_w),
+    .io_ptw_pmp_3_cfg_r(dcache_io_ptw_pmp_3_cfg_r),
+    .io_ptw_pmp_3_addr(dcache_io_ptw_pmp_3_addr),
+    .io_ptw_pmp_3_mask(dcache_io_ptw_pmp_3_mask),
+    .io_ptw_pmp_4_cfg_l(dcache_io_ptw_pmp_4_cfg_l),
+    .io_ptw_pmp_4_cfg_a(dcache_io_ptw_pmp_4_cfg_a),
+    .io_ptw_pmp_4_cfg_x(dcache_io_ptw_pmp_4_cfg_x),
+    .io_ptw_pmp_4_cfg_w(dcache_io_ptw_pmp_4_cfg_w),
+    .io_ptw_pmp_4_cfg_r(dcache_io_ptw_pmp_4_cfg_r),
+    .io_ptw_pmp_4_addr(dcache_io_ptw_pmp_4_addr),
+    .io_ptw_pmp_4_mask(dcache_io_ptw_pmp_4_mask),
+    .io_ptw_pmp_5_cfg_l(dcache_io_ptw_pmp_5_cfg_l),
+    .io_ptw_pmp_5_cfg_a(dcache_io_ptw_pmp_5_cfg_a),
+    .io_ptw_pmp_5_cfg_x(dcache_io_ptw_pmp_5_cfg_x),
+    .io_ptw_pmp_5_cfg_w(dcache_io_ptw_pmp_5_cfg_w),
+    .io_ptw_pmp_5_cfg_r(dcache_io_ptw_pmp_5_cfg_r),
+    .io_ptw_pmp_5_addr(dcache_io_ptw_pmp_5_addr),
+    .io_ptw_pmp_5_mask(dcache_io_ptw_pmp_5_mask),
+    .io_ptw_pmp_6_cfg_l(dcache_io_ptw_pmp_6_cfg_l),
+    .io_ptw_pmp_6_cfg_a(dcache_io_ptw_pmp_6_cfg_a),
+    .io_ptw_pmp_6_cfg_x(dcache_io_ptw_pmp_6_cfg_x),
+    .io_ptw_pmp_6_cfg_w(dcache_io_ptw_pmp_6_cfg_w),
+    .io_ptw_pmp_6_cfg_r(dcache_io_ptw_pmp_6_cfg_r),
+    .io_ptw_pmp_6_addr(dcache_io_ptw_pmp_6_addr),
+    .io_ptw_pmp_6_mask(dcache_io_ptw_pmp_6_mask),
+    .io_ptw_pmp_7_cfg_l(dcache_io_ptw_pmp_7_cfg_l),
+    .io_ptw_pmp_7_cfg_a(dcache_io_ptw_pmp_7_cfg_a),
+    .io_ptw_pmp_7_cfg_x(dcache_io_ptw_pmp_7_cfg_x),
+    .io_ptw_pmp_7_cfg_w(dcache_io_ptw_pmp_7_cfg_w),
+    .io_ptw_pmp_7_cfg_r(dcache_io_ptw_pmp_7_cfg_r),
+    .io_ptw_pmp_7_addr(dcache_io_ptw_pmp_7_addr),
+    .io_ptw_pmp_7_mask(dcache_io_ptw_pmp_7_mask), // <no_sram>
+    .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr), // <no_sram>
+    .tag_array_ext_RW0_en(tag_array_ext_RW0_en), // <no_sram>
+    .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk), // <no_sram>
+    .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode), // <no_sram>
+    .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata), // <no_sram>
+    .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask) // <no_sram>
+  );
+  Frontend frontend ( // @[Frontend.scala 371:28]
+    .clock(frontend_clock),
+    .reset(frontend_reset),
+    .auto_icache_slave_in_a_ready(frontend_auto_icache_slave_in_a_ready),
+    .auto_icache_slave_in_a_valid(frontend_auto_icache_slave_in_a_valid),
+    .auto_icache_slave_in_a_bits_opcode(frontend_auto_icache_slave_in_a_bits_opcode),
+    .auto_icache_slave_in_a_bits_size(frontend_auto_icache_slave_in_a_bits_size),
+    .auto_icache_slave_in_a_bits_source(frontend_auto_icache_slave_in_a_bits_source),
+    .auto_icache_slave_in_a_bits_address(frontend_auto_icache_slave_in_a_bits_address),
+    .auto_icache_slave_in_a_bits_mask(frontend_auto_icache_slave_in_a_bits_mask),
+    .auto_icache_slave_in_a_bits_data(frontend_auto_icache_slave_in_a_bits_data),
+    .auto_icache_slave_in_d_ready(frontend_auto_icache_slave_in_d_ready),
+    .auto_icache_slave_in_d_valid(frontend_auto_icache_slave_in_d_valid),
+    .auto_icache_slave_in_d_bits_opcode(frontend_auto_icache_slave_in_d_bits_opcode),
+    .auto_icache_slave_in_d_bits_size(frontend_auto_icache_slave_in_d_bits_size),
+    .auto_icache_slave_in_d_bits_source(frontend_auto_icache_slave_in_d_bits_source),
+    .auto_icache_slave_in_d_bits_data(frontend_auto_icache_slave_in_d_bits_data),
+    .auto_icache_master_out_a_ready(frontend_auto_icache_master_out_a_ready),
+    .auto_icache_master_out_a_valid(frontend_auto_icache_master_out_a_valid),
+    .auto_icache_master_out_a_bits_address(frontend_auto_icache_master_out_a_bits_address),
+    .auto_icache_master_out_d_ready(frontend_auto_icache_master_out_d_ready),
+    .auto_icache_master_out_d_valid(frontend_auto_icache_master_out_d_valid),
+    .auto_icache_master_out_d_bits_opcode(frontend_auto_icache_master_out_d_bits_opcode),
+    .auto_icache_master_out_d_bits_size(frontend_auto_icache_master_out_d_bits_size),
+    .auto_icache_master_out_d_bits_data(frontend_auto_icache_master_out_d_bits_data),
+    .auto_icache_master_out_d_bits_corrupt(frontend_auto_icache_master_out_d_bits_corrupt),
+    .io_cpu_might_request(frontend_io_cpu_might_request),
+    .io_cpu_req_valid(frontend_io_cpu_req_valid),
+    .io_cpu_req_bits_pc(frontend_io_cpu_req_bits_pc),
+    .io_cpu_req_bits_speculative(frontend_io_cpu_req_bits_speculative),
+    .io_cpu_resp_ready(frontend_io_cpu_resp_ready),
+    .io_cpu_resp_valid(frontend_io_cpu_resp_valid),
+    .io_cpu_resp_bits_btb_taken(frontend_io_cpu_resp_bits_btb_taken),
+    .io_cpu_resp_bits_btb_bridx(frontend_io_cpu_resp_bits_btb_bridx),
+    .io_cpu_resp_bits_btb_entry(frontend_io_cpu_resp_bits_btb_entry),
+    .io_cpu_resp_bits_btb_bht_history(frontend_io_cpu_resp_bits_btb_bht_history),
+    .io_cpu_resp_bits_pc(frontend_io_cpu_resp_bits_pc),
+    .io_cpu_resp_bits_data(frontend_io_cpu_resp_bits_data),
+    .io_cpu_resp_bits_xcpt_ae_inst(frontend_io_cpu_resp_bits_xcpt_ae_inst),
+    .io_cpu_resp_bits_replay(frontend_io_cpu_resp_bits_replay),
+    .io_cpu_btb_update_valid(frontend_io_cpu_btb_update_valid),
+    .io_cpu_btb_update_bits_prediction_entry(frontend_io_cpu_btb_update_bits_prediction_entry),
+    .io_cpu_btb_update_bits_pc(frontend_io_cpu_btb_update_bits_pc),
+    .io_cpu_btb_update_bits_isValid(frontend_io_cpu_btb_update_bits_isValid),
+    .io_cpu_btb_update_bits_br_pc(frontend_io_cpu_btb_update_bits_br_pc),
+    .io_cpu_btb_update_bits_cfiType(frontend_io_cpu_btb_update_bits_cfiType),
+    .io_cpu_bht_update_valid(frontend_io_cpu_bht_update_valid),
+    .io_cpu_bht_update_bits_prediction_history(frontend_io_cpu_bht_update_bits_prediction_history),
+    .io_cpu_bht_update_bits_pc(frontend_io_cpu_bht_update_bits_pc),
+    .io_cpu_bht_update_bits_branch(frontend_io_cpu_bht_update_bits_branch),
+    .io_cpu_bht_update_bits_taken(frontend_io_cpu_bht_update_bits_taken),
+    .io_cpu_bht_update_bits_mispredict(frontend_io_cpu_bht_update_bits_mispredict),
+    .io_cpu_flush_icache(frontend_io_cpu_flush_icache),
+    .io_cpu_npc(frontend_io_cpu_npc),
+    .io_ptw_status_debug(frontend_io_ptw_status_debug),
+    .io_ptw_status_prv(frontend_io_ptw_status_prv),
+    .io_ptw_pmp_0_cfg_l(frontend_io_ptw_pmp_0_cfg_l),
+    .io_ptw_pmp_0_cfg_a(frontend_io_ptw_pmp_0_cfg_a),
+    .io_ptw_pmp_0_cfg_x(frontend_io_ptw_pmp_0_cfg_x),
+    .io_ptw_pmp_0_cfg_w(frontend_io_ptw_pmp_0_cfg_w),
+    .io_ptw_pmp_0_cfg_r(frontend_io_ptw_pmp_0_cfg_r),
+    .io_ptw_pmp_0_addr(frontend_io_ptw_pmp_0_addr),
+    .io_ptw_pmp_0_mask(frontend_io_ptw_pmp_0_mask),
+    .io_ptw_pmp_1_cfg_l(frontend_io_ptw_pmp_1_cfg_l),
+    .io_ptw_pmp_1_cfg_a(frontend_io_ptw_pmp_1_cfg_a),
+    .io_ptw_pmp_1_cfg_x(frontend_io_ptw_pmp_1_cfg_x),
+    .io_ptw_pmp_1_cfg_w(frontend_io_ptw_pmp_1_cfg_w),
+    .io_ptw_pmp_1_cfg_r(frontend_io_ptw_pmp_1_cfg_r),
+    .io_ptw_pmp_1_addr(frontend_io_ptw_pmp_1_addr),
+    .io_ptw_pmp_1_mask(frontend_io_ptw_pmp_1_mask),
+    .io_ptw_pmp_2_cfg_l(frontend_io_ptw_pmp_2_cfg_l),
+    .io_ptw_pmp_2_cfg_a(frontend_io_ptw_pmp_2_cfg_a),
+    .io_ptw_pmp_2_cfg_x(frontend_io_ptw_pmp_2_cfg_x),
+    .io_ptw_pmp_2_cfg_w(frontend_io_ptw_pmp_2_cfg_w),
+    .io_ptw_pmp_2_cfg_r(frontend_io_ptw_pmp_2_cfg_r),
+    .io_ptw_pmp_2_addr(frontend_io_ptw_pmp_2_addr),
+    .io_ptw_pmp_2_mask(frontend_io_ptw_pmp_2_mask),
+    .io_ptw_pmp_3_cfg_l(frontend_io_ptw_pmp_3_cfg_l),
+    .io_ptw_pmp_3_cfg_a(frontend_io_ptw_pmp_3_cfg_a),
+    .io_ptw_pmp_3_cfg_x(frontend_io_ptw_pmp_3_cfg_x),
+    .io_ptw_pmp_3_cfg_w(frontend_io_ptw_pmp_3_cfg_w),
+    .io_ptw_pmp_3_cfg_r(frontend_io_ptw_pmp_3_cfg_r),
+    .io_ptw_pmp_3_addr(frontend_io_ptw_pmp_3_addr),
+    .io_ptw_pmp_3_mask(frontend_io_ptw_pmp_3_mask),
+    .io_ptw_pmp_4_cfg_l(frontend_io_ptw_pmp_4_cfg_l),
+    .io_ptw_pmp_4_cfg_a(frontend_io_ptw_pmp_4_cfg_a),
+    .io_ptw_pmp_4_cfg_x(frontend_io_ptw_pmp_4_cfg_x),
+    .io_ptw_pmp_4_cfg_w(frontend_io_ptw_pmp_4_cfg_w),
+    .io_ptw_pmp_4_cfg_r(frontend_io_ptw_pmp_4_cfg_r),
+    .io_ptw_pmp_4_addr(frontend_io_ptw_pmp_4_addr),
+    .io_ptw_pmp_4_mask(frontend_io_ptw_pmp_4_mask),
+    .io_ptw_pmp_5_cfg_l(frontend_io_ptw_pmp_5_cfg_l),
+    .io_ptw_pmp_5_cfg_a(frontend_io_ptw_pmp_5_cfg_a),
+    .io_ptw_pmp_5_cfg_x(frontend_io_ptw_pmp_5_cfg_x),
+    .io_ptw_pmp_5_cfg_w(frontend_io_ptw_pmp_5_cfg_w),
+    .io_ptw_pmp_5_cfg_r(frontend_io_ptw_pmp_5_cfg_r),
+    .io_ptw_pmp_5_addr(frontend_io_ptw_pmp_5_addr),
+    .io_ptw_pmp_5_mask(frontend_io_ptw_pmp_5_mask),
+    .io_ptw_pmp_6_cfg_l(frontend_io_ptw_pmp_6_cfg_l),
+    .io_ptw_pmp_6_cfg_a(frontend_io_ptw_pmp_6_cfg_a),
+    .io_ptw_pmp_6_cfg_x(frontend_io_ptw_pmp_6_cfg_x),
+    .io_ptw_pmp_6_cfg_w(frontend_io_ptw_pmp_6_cfg_w),
+    .io_ptw_pmp_6_cfg_r(frontend_io_ptw_pmp_6_cfg_r),
+    .io_ptw_pmp_6_addr(frontend_io_ptw_pmp_6_addr),
+    .io_ptw_pmp_6_mask(frontend_io_ptw_pmp_6_mask),
+    .io_ptw_pmp_7_cfg_l(frontend_io_ptw_pmp_7_cfg_l),
+    .io_ptw_pmp_7_cfg_a(frontend_io_ptw_pmp_7_cfg_a),
+    .io_ptw_pmp_7_cfg_x(frontend_io_ptw_pmp_7_cfg_x),
+    .io_ptw_pmp_7_cfg_w(frontend_io_ptw_pmp_7_cfg_w),
+    .io_ptw_pmp_7_cfg_r(frontend_io_ptw_pmp_7_cfg_r),
+    .io_ptw_pmp_7_addr(frontend_io_ptw_pmp_7_addr),
+    .io_ptw_pmp_7_mask(frontend_io_ptw_pmp_7_mask),
+    .io_ptw_customCSRs_csrs_0_value(frontend_io_ptw_customCSRs_csrs_0_value), // <no_sram>
+    .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+    .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+    .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+    .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+    .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+    .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+    .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask), // <no_sram>
+    .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+  );
+  TLFragmenter_21 fragmenter ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_clock),
+    .reset(fragmenter_reset),
+    .auto_in_a_ready(fragmenter_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(fragmenter_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(fragmenter_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_auto_out_a_bits_opcode),
+    .auto_out_a_bits_size(fragmenter_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_auto_out_a_bits_data),
+    .auto_out_d_ready(fragmenter_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_auto_out_d_bits_data)
+  );
+  HellaCacheArbiter dcacheArb ( // @[HellaCache.scala 280:25]
+    .io_requestor_0_req_ready(dcacheArb_io_requestor_0_req_ready),
+    .io_requestor_0_req_valid(dcacheArb_io_requestor_0_req_valid),
+    .io_requestor_0_req_bits_addr(dcacheArb_io_requestor_0_req_bits_addr),
+    .io_requestor_0_req_bits_tag(dcacheArb_io_requestor_0_req_bits_tag),
+    .io_requestor_0_req_bits_cmd(dcacheArb_io_requestor_0_req_bits_cmd),
+    .io_requestor_0_req_bits_size(dcacheArb_io_requestor_0_req_bits_size),
+    .io_requestor_0_req_bits_signed(dcacheArb_io_requestor_0_req_bits_signed),
+    .io_requestor_0_req_bits_dprv(dcacheArb_io_requestor_0_req_bits_dprv),
+    .io_requestor_0_s1_kill(dcacheArb_io_requestor_0_s1_kill),
+    .io_requestor_0_s1_data_data(dcacheArb_io_requestor_0_s1_data_data),
+    .io_requestor_0_s2_nack(dcacheArb_io_requestor_0_s2_nack),
+    .io_requestor_0_resp_valid(dcacheArb_io_requestor_0_resp_valid),
+    .io_requestor_0_resp_bits_tag(dcacheArb_io_requestor_0_resp_bits_tag),
+    .io_requestor_0_resp_bits_data(dcacheArb_io_requestor_0_resp_bits_data),
+    .io_requestor_0_resp_bits_replay(dcacheArb_io_requestor_0_resp_bits_replay),
+    .io_requestor_0_resp_bits_has_data(dcacheArb_io_requestor_0_resp_bits_has_data),
+    .io_requestor_0_resp_bits_data_word_bypass(dcacheArb_io_requestor_0_resp_bits_data_word_bypass),
+    .io_requestor_0_replay_next(dcacheArb_io_requestor_0_replay_next),
+    .io_requestor_0_s2_xcpt_ma_ld(dcacheArb_io_requestor_0_s2_xcpt_ma_ld),
+    .io_requestor_0_s2_xcpt_ma_st(dcacheArb_io_requestor_0_s2_xcpt_ma_st),
+    .io_requestor_0_s2_xcpt_pf_ld(dcacheArb_io_requestor_0_s2_xcpt_pf_ld),
+    .io_requestor_0_s2_xcpt_pf_st(dcacheArb_io_requestor_0_s2_xcpt_pf_st),
+    .io_requestor_0_s2_xcpt_ae_ld(dcacheArb_io_requestor_0_s2_xcpt_ae_ld),
+    .io_requestor_0_s2_xcpt_ae_st(dcacheArb_io_requestor_0_s2_xcpt_ae_st),
+    .io_requestor_0_ordered(dcacheArb_io_requestor_0_ordered),
+    .io_requestor_0_perf_release(dcacheArb_io_requestor_0_perf_release),
+    .io_requestor_0_perf_grant(dcacheArb_io_requestor_0_perf_grant),
+    .io_mem_req_ready(dcacheArb_io_mem_req_ready),
+    .io_mem_req_valid(dcacheArb_io_mem_req_valid),
+    .io_mem_req_bits_addr(dcacheArb_io_mem_req_bits_addr),
+    .io_mem_req_bits_tag(dcacheArb_io_mem_req_bits_tag),
+    .io_mem_req_bits_cmd(dcacheArb_io_mem_req_bits_cmd),
+    .io_mem_req_bits_size(dcacheArb_io_mem_req_bits_size),
+    .io_mem_req_bits_signed(dcacheArb_io_mem_req_bits_signed),
+    .io_mem_req_bits_dprv(dcacheArb_io_mem_req_bits_dprv),
+    .io_mem_s1_kill(dcacheArb_io_mem_s1_kill),
+    .io_mem_s1_data_data(dcacheArb_io_mem_s1_data_data),
+    .io_mem_s2_nack(dcacheArb_io_mem_s2_nack),
+    .io_mem_resp_valid(dcacheArb_io_mem_resp_valid),
+    .io_mem_resp_bits_tag(dcacheArb_io_mem_resp_bits_tag),
+    .io_mem_resp_bits_data(dcacheArb_io_mem_resp_bits_data),
+    .io_mem_resp_bits_replay(dcacheArb_io_mem_resp_bits_replay),
+    .io_mem_resp_bits_has_data(dcacheArb_io_mem_resp_bits_has_data),
+    .io_mem_resp_bits_data_word_bypass(dcacheArb_io_mem_resp_bits_data_word_bypass),
+    .io_mem_replay_next(dcacheArb_io_mem_replay_next),
+    .io_mem_s2_xcpt_ma_ld(dcacheArb_io_mem_s2_xcpt_ma_ld),
+    .io_mem_s2_xcpt_ma_st(dcacheArb_io_mem_s2_xcpt_ma_st),
+    .io_mem_s2_xcpt_pf_ld(dcacheArb_io_mem_s2_xcpt_pf_ld),
+    .io_mem_s2_xcpt_pf_st(dcacheArb_io_mem_s2_xcpt_pf_st),
+    .io_mem_s2_xcpt_ae_ld(dcacheArb_io_mem_s2_xcpt_ae_ld),
+    .io_mem_s2_xcpt_ae_st(dcacheArb_io_mem_s2_xcpt_ae_st),
+    .io_mem_ordered(dcacheArb_io_mem_ordered),
+    .io_mem_perf_release(dcacheArb_io_mem_perf_release),
+    .io_mem_perf_grant(dcacheArb_io_mem_perf_grant)
+  );
+  PTW ptw ( // @[PTW.scala 604:19]
+    .clock(ptw_clock),
+    .reset(ptw_reset),
+    .io_requestor_0_status_debug(ptw_io_requestor_0_status_debug),
+    .io_requestor_0_pmp_0_cfg_l(ptw_io_requestor_0_pmp_0_cfg_l),
+    .io_requestor_0_pmp_0_cfg_a(ptw_io_requestor_0_pmp_0_cfg_a),
+    .io_requestor_0_pmp_0_cfg_x(ptw_io_requestor_0_pmp_0_cfg_x),
+    .io_requestor_0_pmp_0_cfg_w(ptw_io_requestor_0_pmp_0_cfg_w),
+    .io_requestor_0_pmp_0_cfg_r(ptw_io_requestor_0_pmp_0_cfg_r),
+    .io_requestor_0_pmp_0_addr(ptw_io_requestor_0_pmp_0_addr),
+    .io_requestor_0_pmp_0_mask(ptw_io_requestor_0_pmp_0_mask),
+    .io_requestor_0_pmp_1_cfg_l(ptw_io_requestor_0_pmp_1_cfg_l),
+    .io_requestor_0_pmp_1_cfg_a(ptw_io_requestor_0_pmp_1_cfg_a),
+    .io_requestor_0_pmp_1_cfg_x(ptw_io_requestor_0_pmp_1_cfg_x),
+    .io_requestor_0_pmp_1_cfg_w(ptw_io_requestor_0_pmp_1_cfg_w),
+    .io_requestor_0_pmp_1_cfg_r(ptw_io_requestor_0_pmp_1_cfg_r),
+    .io_requestor_0_pmp_1_addr(ptw_io_requestor_0_pmp_1_addr),
+    .io_requestor_0_pmp_1_mask(ptw_io_requestor_0_pmp_1_mask),
+    .io_requestor_0_pmp_2_cfg_l(ptw_io_requestor_0_pmp_2_cfg_l),
+    .io_requestor_0_pmp_2_cfg_a(ptw_io_requestor_0_pmp_2_cfg_a),
+    .io_requestor_0_pmp_2_cfg_x(ptw_io_requestor_0_pmp_2_cfg_x),
+    .io_requestor_0_pmp_2_cfg_w(ptw_io_requestor_0_pmp_2_cfg_w),
+    .io_requestor_0_pmp_2_cfg_r(ptw_io_requestor_0_pmp_2_cfg_r),
+    .io_requestor_0_pmp_2_addr(ptw_io_requestor_0_pmp_2_addr),
+    .io_requestor_0_pmp_2_mask(ptw_io_requestor_0_pmp_2_mask),
+    .io_requestor_0_pmp_3_cfg_l(ptw_io_requestor_0_pmp_3_cfg_l),
+    .io_requestor_0_pmp_3_cfg_a(ptw_io_requestor_0_pmp_3_cfg_a),
+    .io_requestor_0_pmp_3_cfg_x(ptw_io_requestor_0_pmp_3_cfg_x),
+    .io_requestor_0_pmp_3_cfg_w(ptw_io_requestor_0_pmp_3_cfg_w),
+    .io_requestor_0_pmp_3_cfg_r(ptw_io_requestor_0_pmp_3_cfg_r),
+    .io_requestor_0_pmp_3_addr(ptw_io_requestor_0_pmp_3_addr),
+    .io_requestor_0_pmp_3_mask(ptw_io_requestor_0_pmp_3_mask),
+    .io_requestor_0_pmp_4_cfg_l(ptw_io_requestor_0_pmp_4_cfg_l),
+    .io_requestor_0_pmp_4_cfg_a(ptw_io_requestor_0_pmp_4_cfg_a),
+    .io_requestor_0_pmp_4_cfg_x(ptw_io_requestor_0_pmp_4_cfg_x),
+    .io_requestor_0_pmp_4_cfg_w(ptw_io_requestor_0_pmp_4_cfg_w),
+    .io_requestor_0_pmp_4_cfg_r(ptw_io_requestor_0_pmp_4_cfg_r),
+    .io_requestor_0_pmp_4_addr(ptw_io_requestor_0_pmp_4_addr),
+    .io_requestor_0_pmp_4_mask(ptw_io_requestor_0_pmp_4_mask),
+    .io_requestor_0_pmp_5_cfg_l(ptw_io_requestor_0_pmp_5_cfg_l),
+    .io_requestor_0_pmp_5_cfg_a(ptw_io_requestor_0_pmp_5_cfg_a),
+    .io_requestor_0_pmp_5_cfg_x(ptw_io_requestor_0_pmp_5_cfg_x),
+    .io_requestor_0_pmp_5_cfg_w(ptw_io_requestor_0_pmp_5_cfg_w),
+    .io_requestor_0_pmp_5_cfg_r(ptw_io_requestor_0_pmp_5_cfg_r),
+    .io_requestor_0_pmp_5_addr(ptw_io_requestor_0_pmp_5_addr),
+    .io_requestor_0_pmp_5_mask(ptw_io_requestor_0_pmp_5_mask),
+    .io_requestor_0_pmp_6_cfg_l(ptw_io_requestor_0_pmp_6_cfg_l),
+    .io_requestor_0_pmp_6_cfg_a(ptw_io_requestor_0_pmp_6_cfg_a),
+    .io_requestor_0_pmp_6_cfg_x(ptw_io_requestor_0_pmp_6_cfg_x),
+    .io_requestor_0_pmp_6_cfg_w(ptw_io_requestor_0_pmp_6_cfg_w),
+    .io_requestor_0_pmp_6_cfg_r(ptw_io_requestor_0_pmp_6_cfg_r),
+    .io_requestor_0_pmp_6_addr(ptw_io_requestor_0_pmp_6_addr),
+    .io_requestor_0_pmp_6_mask(ptw_io_requestor_0_pmp_6_mask),
+    .io_requestor_0_pmp_7_cfg_l(ptw_io_requestor_0_pmp_7_cfg_l),
+    .io_requestor_0_pmp_7_cfg_a(ptw_io_requestor_0_pmp_7_cfg_a),
+    .io_requestor_0_pmp_7_cfg_x(ptw_io_requestor_0_pmp_7_cfg_x),
+    .io_requestor_0_pmp_7_cfg_w(ptw_io_requestor_0_pmp_7_cfg_w),
+    .io_requestor_0_pmp_7_cfg_r(ptw_io_requestor_0_pmp_7_cfg_r),
+    .io_requestor_0_pmp_7_addr(ptw_io_requestor_0_pmp_7_addr),
+    .io_requestor_0_pmp_7_mask(ptw_io_requestor_0_pmp_7_mask),
+    .io_requestor_1_status_debug(ptw_io_requestor_1_status_debug),
+    .io_requestor_1_status_prv(ptw_io_requestor_1_status_prv),
+    .io_requestor_1_pmp_0_cfg_l(ptw_io_requestor_1_pmp_0_cfg_l),
+    .io_requestor_1_pmp_0_cfg_a(ptw_io_requestor_1_pmp_0_cfg_a),
+    .io_requestor_1_pmp_0_cfg_x(ptw_io_requestor_1_pmp_0_cfg_x),
+    .io_requestor_1_pmp_0_cfg_w(ptw_io_requestor_1_pmp_0_cfg_w),
+    .io_requestor_1_pmp_0_cfg_r(ptw_io_requestor_1_pmp_0_cfg_r),
+    .io_requestor_1_pmp_0_addr(ptw_io_requestor_1_pmp_0_addr),
+    .io_requestor_1_pmp_0_mask(ptw_io_requestor_1_pmp_0_mask),
+    .io_requestor_1_pmp_1_cfg_l(ptw_io_requestor_1_pmp_1_cfg_l),
+    .io_requestor_1_pmp_1_cfg_a(ptw_io_requestor_1_pmp_1_cfg_a),
+    .io_requestor_1_pmp_1_cfg_x(ptw_io_requestor_1_pmp_1_cfg_x),
+    .io_requestor_1_pmp_1_cfg_w(ptw_io_requestor_1_pmp_1_cfg_w),
+    .io_requestor_1_pmp_1_cfg_r(ptw_io_requestor_1_pmp_1_cfg_r),
+    .io_requestor_1_pmp_1_addr(ptw_io_requestor_1_pmp_1_addr),
+    .io_requestor_1_pmp_1_mask(ptw_io_requestor_1_pmp_1_mask),
+    .io_requestor_1_pmp_2_cfg_l(ptw_io_requestor_1_pmp_2_cfg_l),
+    .io_requestor_1_pmp_2_cfg_a(ptw_io_requestor_1_pmp_2_cfg_a),
+    .io_requestor_1_pmp_2_cfg_x(ptw_io_requestor_1_pmp_2_cfg_x),
+    .io_requestor_1_pmp_2_cfg_w(ptw_io_requestor_1_pmp_2_cfg_w),
+    .io_requestor_1_pmp_2_cfg_r(ptw_io_requestor_1_pmp_2_cfg_r),
+    .io_requestor_1_pmp_2_addr(ptw_io_requestor_1_pmp_2_addr),
+    .io_requestor_1_pmp_2_mask(ptw_io_requestor_1_pmp_2_mask),
+    .io_requestor_1_pmp_3_cfg_l(ptw_io_requestor_1_pmp_3_cfg_l),
+    .io_requestor_1_pmp_3_cfg_a(ptw_io_requestor_1_pmp_3_cfg_a),
+    .io_requestor_1_pmp_3_cfg_x(ptw_io_requestor_1_pmp_3_cfg_x),
+    .io_requestor_1_pmp_3_cfg_w(ptw_io_requestor_1_pmp_3_cfg_w),
+    .io_requestor_1_pmp_3_cfg_r(ptw_io_requestor_1_pmp_3_cfg_r),
+    .io_requestor_1_pmp_3_addr(ptw_io_requestor_1_pmp_3_addr),
+    .io_requestor_1_pmp_3_mask(ptw_io_requestor_1_pmp_3_mask),
+    .io_requestor_1_pmp_4_cfg_l(ptw_io_requestor_1_pmp_4_cfg_l),
+    .io_requestor_1_pmp_4_cfg_a(ptw_io_requestor_1_pmp_4_cfg_a),
+    .io_requestor_1_pmp_4_cfg_x(ptw_io_requestor_1_pmp_4_cfg_x),
+    .io_requestor_1_pmp_4_cfg_w(ptw_io_requestor_1_pmp_4_cfg_w),
+    .io_requestor_1_pmp_4_cfg_r(ptw_io_requestor_1_pmp_4_cfg_r),
+    .io_requestor_1_pmp_4_addr(ptw_io_requestor_1_pmp_4_addr),
+    .io_requestor_1_pmp_4_mask(ptw_io_requestor_1_pmp_4_mask),
+    .io_requestor_1_pmp_5_cfg_l(ptw_io_requestor_1_pmp_5_cfg_l),
+    .io_requestor_1_pmp_5_cfg_a(ptw_io_requestor_1_pmp_5_cfg_a),
+    .io_requestor_1_pmp_5_cfg_x(ptw_io_requestor_1_pmp_5_cfg_x),
+    .io_requestor_1_pmp_5_cfg_w(ptw_io_requestor_1_pmp_5_cfg_w),
+    .io_requestor_1_pmp_5_cfg_r(ptw_io_requestor_1_pmp_5_cfg_r),
+    .io_requestor_1_pmp_5_addr(ptw_io_requestor_1_pmp_5_addr),
+    .io_requestor_1_pmp_5_mask(ptw_io_requestor_1_pmp_5_mask),
+    .io_requestor_1_pmp_6_cfg_l(ptw_io_requestor_1_pmp_6_cfg_l),
+    .io_requestor_1_pmp_6_cfg_a(ptw_io_requestor_1_pmp_6_cfg_a),
+    .io_requestor_1_pmp_6_cfg_x(ptw_io_requestor_1_pmp_6_cfg_x),
+    .io_requestor_1_pmp_6_cfg_w(ptw_io_requestor_1_pmp_6_cfg_w),
+    .io_requestor_1_pmp_6_cfg_r(ptw_io_requestor_1_pmp_6_cfg_r),
+    .io_requestor_1_pmp_6_addr(ptw_io_requestor_1_pmp_6_addr),
+    .io_requestor_1_pmp_6_mask(ptw_io_requestor_1_pmp_6_mask),
+    .io_requestor_1_pmp_7_cfg_l(ptw_io_requestor_1_pmp_7_cfg_l),
+    .io_requestor_1_pmp_7_cfg_a(ptw_io_requestor_1_pmp_7_cfg_a),
+    .io_requestor_1_pmp_7_cfg_x(ptw_io_requestor_1_pmp_7_cfg_x),
+    .io_requestor_1_pmp_7_cfg_w(ptw_io_requestor_1_pmp_7_cfg_w),
+    .io_requestor_1_pmp_7_cfg_r(ptw_io_requestor_1_pmp_7_cfg_r),
+    .io_requestor_1_pmp_7_addr(ptw_io_requestor_1_pmp_7_addr),
+    .io_requestor_1_pmp_7_mask(ptw_io_requestor_1_pmp_7_mask),
+    .io_requestor_1_customCSRs_csrs_0_value(ptw_io_requestor_1_customCSRs_csrs_0_value),
+    .io_dpath_status_debug(ptw_io_dpath_status_debug),
+    .io_dpath_status_prv(ptw_io_dpath_status_prv),
+    .io_dpath_pmp_0_cfg_l(ptw_io_dpath_pmp_0_cfg_l),
+    .io_dpath_pmp_0_cfg_a(ptw_io_dpath_pmp_0_cfg_a),
+    .io_dpath_pmp_0_cfg_x(ptw_io_dpath_pmp_0_cfg_x),
+    .io_dpath_pmp_0_cfg_w(ptw_io_dpath_pmp_0_cfg_w),
+    .io_dpath_pmp_0_cfg_r(ptw_io_dpath_pmp_0_cfg_r),
+    .io_dpath_pmp_0_addr(ptw_io_dpath_pmp_0_addr),
+    .io_dpath_pmp_0_mask(ptw_io_dpath_pmp_0_mask),
+    .io_dpath_pmp_1_cfg_l(ptw_io_dpath_pmp_1_cfg_l),
+    .io_dpath_pmp_1_cfg_a(ptw_io_dpath_pmp_1_cfg_a),
+    .io_dpath_pmp_1_cfg_x(ptw_io_dpath_pmp_1_cfg_x),
+    .io_dpath_pmp_1_cfg_w(ptw_io_dpath_pmp_1_cfg_w),
+    .io_dpath_pmp_1_cfg_r(ptw_io_dpath_pmp_1_cfg_r),
+    .io_dpath_pmp_1_addr(ptw_io_dpath_pmp_1_addr),
+    .io_dpath_pmp_1_mask(ptw_io_dpath_pmp_1_mask),
+    .io_dpath_pmp_2_cfg_l(ptw_io_dpath_pmp_2_cfg_l),
+    .io_dpath_pmp_2_cfg_a(ptw_io_dpath_pmp_2_cfg_a),
+    .io_dpath_pmp_2_cfg_x(ptw_io_dpath_pmp_2_cfg_x),
+    .io_dpath_pmp_2_cfg_w(ptw_io_dpath_pmp_2_cfg_w),
+    .io_dpath_pmp_2_cfg_r(ptw_io_dpath_pmp_2_cfg_r),
+    .io_dpath_pmp_2_addr(ptw_io_dpath_pmp_2_addr),
+    .io_dpath_pmp_2_mask(ptw_io_dpath_pmp_2_mask),
+    .io_dpath_pmp_3_cfg_l(ptw_io_dpath_pmp_3_cfg_l),
+    .io_dpath_pmp_3_cfg_a(ptw_io_dpath_pmp_3_cfg_a),
+    .io_dpath_pmp_3_cfg_x(ptw_io_dpath_pmp_3_cfg_x),
+    .io_dpath_pmp_3_cfg_w(ptw_io_dpath_pmp_3_cfg_w),
+    .io_dpath_pmp_3_cfg_r(ptw_io_dpath_pmp_3_cfg_r),
+    .io_dpath_pmp_3_addr(ptw_io_dpath_pmp_3_addr),
+    .io_dpath_pmp_3_mask(ptw_io_dpath_pmp_3_mask),
+    .io_dpath_pmp_4_cfg_l(ptw_io_dpath_pmp_4_cfg_l),
+    .io_dpath_pmp_4_cfg_a(ptw_io_dpath_pmp_4_cfg_a),
+    .io_dpath_pmp_4_cfg_x(ptw_io_dpath_pmp_4_cfg_x),
+    .io_dpath_pmp_4_cfg_w(ptw_io_dpath_pmp_4_cfg_w),
+    .io_dpath_pmp_4_cfg_r(ptw_io_dpath_pmp_4_cfg_r),
+    .io_dpath_pmp_4_addr(ptw_io_dpath_pmp_4_addr),
+    .io_dpath_pmp_4_mask(ptw_io_dpath_pmp_4_mask),
+    .io_dpath_pmp_5_cfg_l(ptw_io_dpath_pmp_5_cfg_l),
+    .io_dpath_pmp_5_cfg_a(ptw_io_dpath_pmp_5_cfg_a),
+    .io_dpath_pmp_5_cfg_x(ptw_io_dpath_pmp_5_cfg_x),
+    .io_dpath_pmp_5_cfg_w(ptw_io_dpath_pmp_5_cfg_w),
+    .io_dpath_pmp_5_cfg_r(ptw_io_dpath_pmp_5_cfg_r),
+    .io_dpath_pmp_5_addr(ptw_io_dpath_pmp_5_addr),
+    .io_dpath_pmp_5_mask(ptw_io_dpath_pmp_5_mask),
+    .io_dpath_pmp_6_cfg_l(ptw_io_dpath_pmp_6_cfg_l),
+    .io_dpath_pmp_6_cfg_a(ptw_io_dpath_pmp_6_cfg_a),
+    .io_dpath_pmp_6_cfg_x(ptw_io_dpath_pmp_6_cfg_x),
+    .io_dpath_pmp_6_cfg_w(ptw_io_dpath_pmp_6_cfg_w),
+    .io_dpath_pmp_6_cfg_r(ptw_io_dpath_pmp_6_cfg_r),
+    .io_dpath_pmp_6_addr(ptw_io_dpath_pmp_6_addr),
+    .io_dpath_pmp_6_mask(ptw_io_dpath_pmp_6_mask),
+    .io_dpath_pmp_7_cfg_l(ptw_io_dpath_pmp_7_cfg_l),
+    .io_dpath_pmp_7_cfg_a(ptw_io_dpath_pmp_7_cfg_a),
+    .io_dpath_pmp_7_cfg_x(ptw_io_dpath_pmp_7_cfg_x),
+    .io_dpath_pmp_7_cfg_w(ptw_io_dpath_pmp_7_cfg_w),
+    .io_dpath_pmp_7_cfg_r(ptw_io_dpath_pmp_7_cfg_r),
+    .io_dpath_pmp_7_addr(ptw_io_dpath_pmp_7_addr),
+    .io_dpath_pmp_7_mask(ptw_io_dpath_pmp_7_mask),
+    .io_dpath_perf_l2hit(ptw_io_dpath_perf_l2hit),
+    .io_dpath_perf_pte_miss(ptw_io_dpath_perf_pte_miss),
+    .io_dpath_perf_pte_hit(ptw_io_dpath_perf_pte_hit),
+    .io_dpath_customCSRs_csrs_0_value(ptw_io_dpath_customCSRs_csrs_0_value)
+  );
+  Rocket core ( // @[RocketTile.scala 140:20]
+    .clock(core_clock),
+    .reset(core_reset),
+    .io_hartid(core_io_hartid),
+    .io_interrupts_debug(core_io_interrupts_debug),
+    .io_interrupts_mtip(core_io_interrupts_mtip),
+    .io_interrupts_msip(core_io_interrupts_msip),
+    .io_interrupts_meip(core_io_interrupts_meip),
+    .io_interrupts_seip(core_io_interrupts_seip),
+    .io_imem_might_request(core_io_imem_might_request),
+    .io_imem_req_valid(core_io_imem_req_valid),
+    .io_imem_req_bits_pc(core_io_imem_req_bits_pc),
+    .io_imem_req_bits_speculative(core_io_imem_req_bits_speculative),
+    .io_imem_resp_ready(core_io_imem_resp_ready),
+    .io_imem_resp_valid(core_io_imem_resp_valid),
+    .io_imem_resp_bits_btb_taken(core_io_imem_resp_bits_btb_taken),
+    .io_imem_resp_bits_btb_bridx(core_io_imem_resp_bits_btb_bridx),
+    .io_imem_resp_bits_btb_entry(core_io_imem_resp_bits_btb_entry),
+    .io_imem_resp_bits_btb_bht_history(core_io_imem_resp_bits_btb_bht_history),
+    .io_imem_resp_bits_pc(core_io_imem_resp_bits_pc),
+    .io_imem_resp_bits_data(core_io_imem_resp_bits_data),
+    .io_imem_resp_bits_xcpt_ae_inst(core_io_imem_resp_bits_xcpt_ae_inst),
+    .io_imem_resp_bits_replay(core_io_imem_resp_bits_replay),
+    .io_imem_btb_update_valid(core_io_imem_btb_update_valid),
+    .io_imem_btb_update_bits_prediction_entry(core_io_imem_btb_update_bits_prediction_entry),
+    .io_imem_btb_update_bits_pc(core_io_imem_btb_update_bits_pc),
+    .io_imem_btb_update_bits_isValid(core_io_imem_btb_update_bits_isValid),
+    .io_imem_btb_update_bits_br_pc(core_io_imem_btb_update_bits_br_pc),
+    .io_imem_btb_update_bits_cfiType(core_io_imem_btb_update_bits_cfiType),
+    .io_imem_bht_update_valid(core_io_imem_bht_update_valid),
+    .io_imem_bht_update_bits_prediction_history(core_io_imem_bht_update_bits_prediction_history),
+    .io_imem_bht_update_bits_pc(core_io_imem_bht_update_bits_pc),
+    .io_imem_bht_update_bits_branch(core_io_imem_bht_update_bits_branch),
+    .io_imem_bht_update_bits_taken(core_io_imem_bht_update_bits_taken),
+    .io_imem_bht_update_bits_mispredict(core_io_imem_bht_update_bits_mispredict),
+    .io_imem_flush_icache(core_io_imem_flush_icache),
+    .io_dmem_req_ready(core_io_dmem_req_ready),
+    .io_dmem_req_valid(core_io_dmem_req_valid),
+    .io_dmem_req_bits_addr(core_io_dmem_req_bits_addr),
+    .io_dmem_req_bits_tag(core_io_dmem_req_bits_tag),
+    .io_dmem_req_bits_cmd(core_io_dmem_req_bits_cmd),
+    .io_dmem_req_bits_size(core_io_dmem_req_bits_size),
+    .io_dmem_req_bits_signed(core_io_dmem_req_bits_signed),
+    .io_dmem_req_bits_dprv(core_io_dmem_req_bits_dprv),
+    .io_dmem_req_bits_dv(core_io_dmem_req_bits_dv),
+    .io_dmem_s1_kill(core_io_dmem_s1_kill),
+    .io_dmem_s1_data_data(core_io_dmem_s1_data_data),
+    .io_dmem_s2_nack(core_io_dmem_s2_nack),
+    .io_dmem_resp_valid(core_io_dmem_resp_valid),
+    .io_dmem_resp_bits_tag(core_io_dmem_resp_bits_tag),
+    .io_dmem_resp_bits_data(core_io_dmem_resp_bits_data),
+    .io_dmem_resp_bits_replay(core_io_dmem_resp_bits_replay),
+    .io_dmem_resp_bits_has_data(core_io_dmem_resp_bits_has_data),
+    .io_dmem_resp_bits_data_word_bypass(core_io_dmem_resp_bits_data_word_bypass),
+    .io_dmem_replay_next(core_io_dmem_replay_next),
+    .io_dmem_s2_xcpt_ma_ld(core_io_dmem_s2_xcpt_ma_ld),
+    .io_dmem_s2_xcpt_ma_st(core_io_dmem_s2_xcpt_ma_st),
+    .io_dmem_s2_xcpt_pf_ld(core_io_dmem_s2_xcpt_pf_ld),
+    .io_dmem_s2_xcpt_pf_st(core_io_dmem_s2_xcpt_pf_st),
+    .io_dmem_s2_xcpt_ae_ld(core_io_dmem_s2_xcpt_ae_ld),
+    .io_dmem_s2_xcpt_ae_st(core_io_dmem_s2_xcpt_ae_st),
+    .io_dmem_ordered(core_io_dmem_ordered),
+    .io_dmem_perf_release(core_io_dmem_perf_release),
+    .io_dmem_perf_grant(core_io_dmem_perf_grant),
+    .io_ptw_status_debug(core_io_ptw_status_debug),
+    .io_ptw_status_prv(core_io_ptw_status_prv),
+    .io_ptw_pmp_0_cfg_l(core_io_ptw_pmp_0_cfg_l),
+    .io_ptw_pmp_0_cfg_a(core_io_ptw_pmp_0_cfg_a),
+    .io_ptw_pmp_0_cfg_x(core_io_ptw_pmp_0_cfg_x),
+    .io_ptw_pmp_0_cfg_w(core_io_ptw_pmp_0_cfg_w),
+    .io_ptw_pmp_0_cfg_r(core_io_ptw_pmp_0_cfg_r),
+    .io_ptw_pmp_0_addr(core_io_ptw_pmp_0_addr),
+    .io_ptw_pmp_0_mask(core_io_ptw_pmp_0_mask),
+    .io_ptw_pmp_1_cfg_l(core_io_ptw_pmp_1_cfg_l),
+    .io_ptw_pmp_1_cfg_a(core_io_ptw_pmp_1_cfg_a),
+    .io_ptw_pmp_1_cfg_x(core_io_ptw_pmp_1_cfg_x),
+    .io_ptw_pmp_1_cfg_w(core_io_ptw_pmp_1_cfg_w),
+    .io_ptw_pmp_1_cfg_r(core_io_ptw_pmp_1_cfg_r),
+    .io_ptw_pmp_1_addr(core_io_ptw_pmp_1_addr),
+    .io_ptw_pmp_1_mask(core_io_ptw_pmp_1_mask),
+    .io_ptw_pmp_2_cfg_l(core_io_ptw_pmp_2_cfg_l),
+    .io_ptw_pmp_2_cfg_a(core_io_ptw_pmp_2_cfg_a),
+    .io_ptw_pmp_2_cfg_x(core_io_ptw_pmp_2_cfg_x),
+    .io_ptw_pmp_2_cfg_w(core_io_ptw_pmp_2_cfg_w),
+    .io_ptw_pmp_2_cfg_r(core_io_ptw_pmp_2_cfg_r),
+    .io_ptw_pmp_2_addr(core_io_ptw_pmp_2_addr),
+    .io_ptw_pmp_2_mask(core_io_ptw_pmp_2_mask),
+    .io_ptw_pmp_3_cfg_l(core_io_ptw_pmp_3_cfg_l),
+    .io_ptw_pmp_3_cfg_a(core_io_ptw_pmp_3_cfg_a),
+    .io_ptw_pmp_3_cfg_x(core_io_ptw_pmp_3_cfg_x),
+    .io_ptw_pmp_3_cfg_w(core_io_ptw_pmp_3_cfg_w),
+    .io_ptw_pmp_3_cfg_r(core_io_ptw_pmp_3_cfg_r),
+    .io_ptw_pmp_3_addr(core_io_ptw_pmp_3_addr),
+    .io_ptw_pmp_3_mask(core_io_ptw_pmp_3_mask),
+    .io_ptw_pmp_4_cfg_l(core_io_ptw_pmp_4_cfg_l),
+    .io_ptw_pmp_4_cfg_a(core_io_ptw_pmp_4_cfg_a),
+    .io_ptw_pmp_4_cfg_x(core_io_ptw_pmp_4_cfg_x),
+    .io_ptw_pmp_4_cfg_w(core_io_ptw_pmp_4_cfg_w),
+    .io_ptw_pmp_4_cfg_r(core_io_ptw_pmp_4_cfg_r),
+    .io_ptw_pmp_4_addr(core_io_ptw_pmp_4_addr),
+    .io_ptw_pmp_4_mask(core_io_ptw_pmp_4_mask),
+    .io_ptw_pmp_5_cfg_l(core_io_ptw_pmp_5_cfg_l),
+    .io_ptw_pmp_5_cfg_a(core_io_ptw_pmp_5_cfg_a),
+    .io_ptw_pmp_5_cfg_x(core_io_ptw_pmp_5_cfg_x),
+    .io_ptw_pmp_5_cfg_w(core_io_ptw_pmp_5_cfg_w),
+    .io_ptw_pmp_5_cfg_r(core_io_ptw_pmp_5_cfg_r),
+    .io_ptw_pmp_5_addr(core_io_ptw_pmp_5_addr),
+    .io_ptw_pmp_5_mask(core_io_ptw_pmp_5_mask),
+    .io_ptw_pmp_6_cfg_l(core_io_ptw_pmp_6_cfg_l),
+    .io_ptw_pmp_6_cfg_a(core_io_ptw_pmp_6_cfg_a),
+    .io_ptw_pmp_6_cfg_x(core_io_ptw_pmp_6_cfg_x),
+    .io_ptw_pmp_6_cfg_w(core_io_ptw_pmp_6_cfg_w),
+    .io_ptw_pmp_6_cfg_r(core_io_ptw_pmp_6_cfg_r),
+    .io_ptw_pmp_6_addr(core_io_ptw_pmp_6_addr),
+    .io_ptw_pmp_6_mask(core_io_ptw_pmp_6_mask),
+    .io_ptw_pmp_7_cfg_l(core_io_ptw_pmp_7_cfg_l),
+    .io_ptw_pmp_7_cfg_a(core_io_ptw_pmp_7_cfg_a),
+    .io_ptw_pmp_7_cfg_x(core_io_ptw_pmp_7_cfg_x),
+    .io_ptw_pmp_7_cfg_w(core_io_ptw_pmp_7_cfg_w),
+    .io_ptw_pmp_7_cfg_r(core_io_ptw_pmp_7_cfg_r),
+    .io_ptw_pmp_7_addr(core_io_ptw_pmp_7_addr),
+    .io_ptw_pmp_7_mask(core_io_ptw_pmp_7_mask),
+    .io_ptw_customCSRs_csrs_0_value(core_io_ptw_customCSRs_csrs_0_value),
+    .io_wfi(core_io_wfi)
+  );
+  assign auto_slave_in_a_ready = tlSlaveXbar_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_slave_in_d_valid = tlSlaveXbar_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_slave_in_d_bits_opcode = tlSlaveXbar_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_slave_in_d_bits_size = tlSlaveXbar_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_slave_in_d_bits_source = tlSlaveXbar_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_slave_in_d_bits_data = tlSlaveXbar_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_wfi_out_0 = bundleOut_0_0_REG; // @[Nodes.scala 1207:84 Interrupts.scala 126:12]
+  assign auto_tl_other_masters_out_a_valid = tlMasterXbar_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_a_bits_opcode = tlMasterXbar_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_a_bits_param = tlMasterXbar_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_a_bits_size = tlMasterXbar_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_a_bits_source = tlMasterXbar_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_a_bits_address = tlMasterXbar_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_a_bits_mask = tlMasterXbar_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_a_bits_data = tlMasterXbar_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_b_ready = tlMasterXbar_auto_out_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_c_valid = tlMasterXbar_auto_out_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_c_bits_opcode = tlMasterXbar_auto_out_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_c_bits_param = tlMasterXbar_auto_out_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_c_bits_size = tlMasterXbar_auto_out_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_c_bits_source = tlMasterXbar_auto_out_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_c_bits_address = tlMasterXbar_auto_out_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_c_bits_data = tlMasterXbar_auto_out_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_d_ready = tlMasterXbar_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_e_valid = tlMasterXbar_auto_out_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_other_masters_out_e_bits_sink = tlMasterXbar_auto_out_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign tlMasterXbar_clock = clock;
+  assign tlMasterXbar_reset = reset;
+  assign tlMasterXbar_auto_in_1_a_valid = frontend_auto_icache_master_out_a_valid; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_1_a_bits_address = frontend_auto_icache_master_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_1_d_ready = frontend_auto_icache_master_out_d_ready; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_a_valid = dcache_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_a_bits_opcode = dcache_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_a_bits_param = dcache_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_a_bits_size = dcache_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_a_bits_source = dcache_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_a_bits_address = dcache_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_a_bits_mask = dcache_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_a_bits_data = dcache_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_b_ready = dcache_auto_out_b_ready; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_c_valid = dcache_auto_out_c_valid; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_c_bits_opcode = dcache_auto_out_c_bits_opcode; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_c_bits_param = dcache_auto_out_c_bits_param; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_c_bits_size = dcache_auto_out_c_bits_size; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_c_bits_source = dcache_auto_out_c_bits_source; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_c_bits_address = dcache_auto_out_c_bits_address; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_c_bits_data = dcache_auto_out_c_bits_data; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_d_ready = dcache_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_e_valid = dcache_auto_out_e_valid; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_in_0_e_bits_sink = dcache_auto_out_e_bits_sink; // @[LazyModule.scala 296:16]
+  assign tlMasterXbar_auto_out_a_ready = auto_tl_other_masters_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_b_valid = auto_tl_other_masters_out_b_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_b_bits_opcode = auto_tl_other_masters_out_b_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_b_bits_param = auto_tl_other_masters_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_b_bits_size = auto_tl_other_masters_out_b_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_b_bits_source = auto_tl_other_masters_out_b_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_b_bits_address = auto_tl_other_masters_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_b_bits_mask = auto_tl_other_masters_out_b_bits_mask; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_b_bits_corrupt = auto_tl_other_masters_out_b_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_c_ready = auto_tl_other_masters_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_valid = auto_tl_other_masters_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_bits_opcode = auto_tl_other_masters_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_bits_param = auto_tl_other_masters_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_bits_size = auto_tl_other_masters_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_bits_source = auto_tl_other_masters_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_bits_sink = auto_tl_other_masters_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_bits_denied = auto_tl_other_masters_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_bits_data = auto_tl_other_masters_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_d_bits_corrupt = auto_tl_other_masters_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlMasterXbar_auto_out_e_ready = auto_tl_other_masters_out_e_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign tlSlaveXbar_auto_in_a_valid = auto_slave_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_a_bits_opcode = auto_slave_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_a_bits_param = auto_slave_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_a_bits_size = auto_slave_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_a_bits_source = auto_slave_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_a_bits_address = auto_slave_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_a_bits_mask = auto_slave_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_a_bits_data = auto_slave_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_a_bits_corrupt = auto_slave_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_in_d_ready = auto_slave_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_out_a_ready = fragmenter_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_valid = fragmenter_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_bits_size = fragmenter_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_bits_source = fragmenter_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_bits_data = fragmenter_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign intXbar_auto_int_in_3_0 = auto_int_local_in_3_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intXbar_auto_int_in_2_0 = auto_int_local_in_2_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intXbar_auto_int_in_1_0 = auto_int_local_in_1_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intXbar_auto_int_in_1_1 = auto_int_local_in_1_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intXbar_auto_int_in_0_0 = auto_int_local_in_0_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign broadcast_auto_in = auto_hartid_in; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign dcache_clock = clock;
+  assign dcache_reset = reset;
+  assign dcache_auto_out_a_ready = tlMasterXbar_auto_in_0_a_ready; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_b_valid = tlMasterXbar_auto_in_0_b_valid; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_b_bits_param = tlMasterXbar_auto_in_0_b_bits_param; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_b_bits_size = tlMasterXbar_auto_in_0_b_bits_size; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_b_bits_source = tlMasterXbar_auto_in_0_b_bits_source; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_b_bits_address = tlMasterXbar_auto_in_0_b_bits_address; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_c_ready = tlMasterXbar_auto_in_0_c_ready; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_d_valid = tlMasterXbar_auto_in_0_d_valid; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_d_bits_opcode = tlMasterXbar_auto_in_0_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_d_bits_param = tlMasterXbar_auto_in_0_d_bits_param; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_d_bits_size = tlMasterXbar_auto_in_0_d_bits_size; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_d_bits_source = tlMasterXbar_auto_in_0_d_bits_source; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_d_bits_sink = tlMasterXbar_auto_in_0_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_d_bits_denied = tlMasterXbar_auto_in_0_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_d_bits_data = tlMasterXbar_auto_in_0_d_bits_data; // @[LazyModule.scala 296:16]
+  assign dcache_auto_out_e_ready = tlMasterXbar_auto_in_0_e_ready; // @[LazyModule.scala 296:16]
+  assign dcache_io_cpu_req_valid = dcacheArb_io_mem_req_valid; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_req_bits_addr = dcacheArb_io_mem_req_bits_addr; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_req_bits_tag = dcacheArb_io_mem_req_bits_tag; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_req_bits_cmd = dcacheArb_io_mem_req_bits_cmd; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_req_bits_size = dcacheArb_io_mem_req_bits_size; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_req_bits_signed = dcacheArb_io_mem_req_bits_signed; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_req_bits_dprv = dcacheArb_io_mem_req_bits_dprv; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_s1_kill = dcacheArb_io_mem_s1_kill; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_s1_data_data = dcacheArb_io_mem_s1_data_data; // @[HellaCache.scala 281:30]
+  assign dcache_io_cpu_s1_data_mask = 4'h0; // @[HellaCache.scala 281:30]
+  assign dcache_io_ptw_status_debug = ptw_io_requestor_0_status_debug; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_0_cfg_l = ptw_io_requestor_0_pmp_0_cfg_l; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_0_cfg_a = ptw_io_requestor_0_pmp_0_cfg_a; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_0_cfg_x = ptw_io_requestor_0_pmp_0_cfg_x; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_0_cfg_w = ptw_io_requestor_0_pmp_0_cfg_w; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_0_cfg_r = ptw_io_requestor_0_pmp_0_cfg_r; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_0_addr = ptw_io_requestor_0_pmp_0_addr; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_0_mask = ptw_io_requestor_0_pmp_0_mask; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_1_cfg_l = ptw_io_requestor_0_pmp_1_cfg_l; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_1_cfg_a = ptw_io_requestor_0_pmp_1_cfg_a; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_1_cfg_x = ptw_io_requestor_0_pmp_1_cfg_x; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_1_cfg_w = ptw_io_requestor_0_pmp_1_cfg_w; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_1_cfg_r = ptw_io_requestor_0_pmp_1_cfg_r; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_1_addr = ptw_io_requestor_0_pmp_1_addr; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_1_mask = ptw_io_requestor_0_pmp_1_mask; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_2_cfg_l = ptw_io_requestor_0_pmp_2_cfg_l; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_2_cfg_a = ptw_io_requestor_0_pmp_2_cfg_a; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_2_cfg_x = ptw_io_requestor_0_pmp_2_cfg_x; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_2_cfg_w = ptw_io_requestor_0_pmp_2_cfg_w; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_2_cfg_r = ptw_io_requestor_0_pmp_2_cfg_r; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_2_addr = ptw_io_requestor_0_pmp_2_addr; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_2_mask = ptw_io_requestor_0_pmp_2_mask; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_3_cfg_l = ptw_io_requestor_0_pmp_3_cfg_l; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_3_cfg_a = ptw_io_requestor_0_pmp_3_cfg_a; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_3_cfg_x = ptw_io_requestor_0_pmp_3_cfg_x; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_3_cfg_w = ptw_io_requestor_0_pmp_3_cfg_w; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_3_cfg_r = ptw_io_requestor_0_pmp_3_cfg_r; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_3_addr = ptw_io_requestor_0_pmp_3_addr; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_3_mask = ptw_io_requestor_0_pmp_3_mask; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_4_cfg_l = ptw_io_requestor_0_pmp_4_cfg_l; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_4_cfg_a = ptw_io_requestor_0_pmp_4_cfg_a; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_4_cfg_x = ptw_io_requestor_0_pmp_4_cfg_x; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_4_cfg_w = ptw_io_requestor_0_pmp_4_cfg_w; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_4_cfg_r = ptw_io_requestor_0_pmp_4_cfg_r; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_4_addr = ptw_io_requestor_0_pmp_4_addr; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_4_mask = ptw_io_requestor_0_pmp_4_mask; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_5_cfg_l = ptw_io_requestor_0_pmp_5_cfg_l; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_5_cfg_a = ptw_io_requestor_0_pmp_5_cfg_a; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_5_cfg_x = ptw_io_requestor_0_pmp_5_cfg_x; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_5_cfg_w = ptw_io_requestor_0_pmp_5_cfg_w; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_5_cfg_r = ptw_io_requestor_0_pmp_5_cfg_r; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_5_addr = ptw_io_requestor_0_pmp_5_addr; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_5_mask = ptw_io_requestor_0_pmp_5_mask; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_6_cfg_l = ptw_io_requestor_0_pmp_6_cfg_l; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_6_cfg_a = ptw_io_requestor_0_pmp_6_cfg_a; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_6_cfg_x = ptw_io_requestor_0_pmp_6_cfg_x; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_6_cfg_w = ptw_io_requestor_0_pmp_6_cfg_w; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_6_cfg_r = ptw_io_requestor_0_pmp_6_cfg_r; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_6_addr = ptw_io_requestor_0_pmp_6_addr; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_6_mask = ptw_io_requestor_0_pmp_6_mask; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_7_cfg_l = ptw_io_requestor_0_pmp_7_cfg_l; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_7_cfg_a = ptw_io_requestor_0_pmp_7_cfg_a; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_7_cfg_x = ptw_io_requestor_0_pmp_7_cfg_x; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_7_cfg_w = ptw_io_requestor_0_pmp_7_cfg_w; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_7_cfg_r = ptw_io_requestor_0_pmp_7_cfg_r; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_7_addr = ptw_io_requestor_0_pmp_7_addr; // @[RocketTile.scala 198:20]
+  assign dcache_io_ptw_pmp_7_mask = ptw_io_requestor_0_pmp_7_mask; // @[RocketTile.scala 198:20]
+  assign frontend_clock = clock;
+  assign frontend_reset = reset;
+  assign frontend_auto_icache_slave_in_a_valid = fragmenter_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_slave_in_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_slave_in_a_bits_size = fragmenter_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_slave_in_a_bits_source = fragmenter_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_slave_in_a_bits_address = fragmenter_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_slave_in_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_slave_in_a_bits_data = fragmenter_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_slave_in_d_ready = fragmenter_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_master_out_a_ready = tlMasterXbar_auto_in_1_a_ready; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_master_out_d_valid = tlMasterXbar_auto_in_1_d_valid; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_master_out_d_bits_opcode = tlMasterXbar_auto_in_1_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_master_out_d_bits_size = tlMasterXbar_auto_in_1_d_bits_size; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_master_out_d_bits_data = tlMasterXbar_auto_in_1_d_bits_data; // @[LazyModule.scala 296:16]
+  assign frontend_auto_icache_master_out_d_bits_corrupt = tlMasterXbar_auto_in_1_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign frontend_io_cpu_might_request = core_io_imem_might_request; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_req_valid = core_io_imem_req_valid; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_req_bits_pc = core_io_imem_req_bits_pc; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_req_bits_speculative = core_io_imem_req_bits_speculative; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_resp_ready = core_io_imem_resp_ready; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_btb_update_valid = core_io_imem_btb_update_valid; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_btb_update_bits_prediction_entry = core_io_imem_btb_update_bits_prediction_entry; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_btb_update_bits_pc = core_io_imem_btb_update_bits_pc; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_btb_update_bits_isValid = core_io_imem_btb_update_bits_isValid; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_btb_update_bits_br_pc = core_io_imem_btb_update_bits_br_pc; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_btb_update_bits_cfiType = core_io_imem_btb_update_bits_cfiType; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_bht_update_valid = core_io_imem_bht_update_valid; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_bht_update_bits_prediction_history = core_io_imem_bht_update_bits_prediction_history; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_bht_update_bits_pc = core_io_imem_bht_update_bits_pc; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_bht_update_bits_branch = core_io_imem_bht_update_bits_branch; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_bht_update_bits_taken = core_io_imem_bht_update_bits_taken; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_bht_update_bits_mispredict = core_io_imem_bht_update_bits_mispredict; // @[RocketTile.scala 173:32]
+  assign frontend_io_cpu_flush_icache = core_io_imem_flush_icache; // @[RocketTile.scala 173:32]
+  assign frontend_io_ptw_status_debug = ptw_io_requestor_1_status_debug; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_status_prv = ptw_io_requestor_1_status_prv; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_0_cfg_l = ptw_io_requestor_1_pmp_0_cfg_l; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_0_cfg_a = ptw_io_requestor_1_pmp_0_cfg_a; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_0_cfg_x = ptw_io_requestor_1_pmp_0_cfg_x; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_0_cfg_w = ptw_io_requestor_1_pmp_0_cfg_w; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_0_cfg_r = ptw_io_requestor_1_pmp_0_cfg_r; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_0_addr = ptw_io_requestor_1_pmp_0_addr; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_0_mask = ptw_io_requestor_1_pmp_0_mask; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_1_cfg_l = ptw_io_requestor_1_pmp_1_cfg_l; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_1_cfg_a = ptw_io_requestor_1_pmp_1_cfg_a; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_1_cfg_x = ptw_io_requestor_1_pmp_1_cfg_x; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_1_cfg_w = ptw_io_requestor_1_pmp_1_cfg_w; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_1_cfg_r = ptw_io_requestor_1_pmp_1_cfg_r; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_1_addr = ptw_io_requestor_1_pmp_1_addr; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_1_mask = ptw_io_requestor_1_pmp_1_mask; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_2_cfg_l = ptw_io_requestor_1_pmp_2_cfg_l; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_2_cfg_a = ptw_io_requestor_1_pmp_2_cfg_a; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_2_cfg_x = ptw_io_requestor_1_pmp_2_cfg_x; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_2_cfg_w = ptw_io_requestor_1_pmp_2_cfg_w; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_2_cfg_r = ptw_io_requestor_1_pmp_2_cfg_r; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_2_addr = ptw_io_requestor_1_pmp_2_addr; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_2_mask = ptw_io_requestor_1_pmp_2_mask; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_3_cfg_l = ptw_io_requestor_1_pmp_3_cfg_l; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_3_cfg_a = ptw_io_requestor_1_pmp_3_cfg_a; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_3_cfg_x = ptw_io_requestor_1_pmp_3_cfg_x; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_3_cfg_w = ptw_io_requestor_1_pmp_3_cfg_w; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_3_cfg_r = ptw_io_requestor_1_pmp_3_cfg_r; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_3_addr = ptw_io_requestor_1_pmp_3_addr; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_3_mask = ptw_io_requestor_1_pmp_3_mask; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_4_cfg_l = ptw_io_requestor_1_pmp_4_cfg_l; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_4_cfg_a = ptw_io_requestor_1_pmp_4_cfg_a; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_4_cfg_x = ptw_io_requestor_1_pmp_4_cfg_x; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_4_cfg_w = ptw_io_requestor_1_pmp_4_cfg_w; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_4_cfg_r = ptw_io_requestor_1_pmp_4_cfg_r; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_4_addr = ptw_io_requestor_1_pmp_4_addr; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_4_mask = ptw_io_requestor_1_pmp_4_mask; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_5_cfg_l = ptw_io_requestor_1_pmp_5_cfg_l; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_5_cfg_a = ptw_io_requestor_1_pmp_5_cfg_a; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_5_cfg_x = ptw_io_requestor_1_pmp_5_cfg_x; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_5_cfg_w = ptw_io_requestor_1_pmp_5_cfg_w; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_5_cfg_r = ptw_io_requestor_1_pmp_5_cfg_r; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_5_addr = ptw_io_requestor_1_pmp_5_addr; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_5_mask = ptw_io_requestor_1_pmp_5_mask; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_6_cfg_l = ptw_io_requestor_1_pmp_6_cfg_l; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_6_cfg_a = ptw_io_requestor_1_pmp_6_cfg_a; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_6_cfg_x = ptw_io_requestor_1_pmp_6_cfg_x; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_6_cfg_w = ptw_io_requestor_1_pmp_6_cfg_w; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_6_cfg_r = ptw_io_requestor_1_pmp_6_cfg_r; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_6_addr = ptw_io_requestor_1_pmp_6_addr; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_6_mask = ptw_io_requestor_1_pmp_6_mask; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_7_cfg_l = ptw_io_requestor_1_pmp_7_cfg_l; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_7_cfg_a = ptw_io_requestor_1_pmp_7_cfg_a; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_7_cfg_x = ptw_io_requestor_1_pmp_7_cfg_x; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_7_cfg_w = ptw_io_requestor_1_pmp_7_cfg_w; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_7_cfg_r = ptw_io_requestor_1_pmp_7_cfg_r; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_7_addr = ptw_io_requestor_1_pmp_7_addr; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_pmp_7_mask = ptw_io_requestor_1_pmp_7_mask; // @[RocketTile.scala 198:20]
+  assign frontend_io_ptw_customCSRs_csrs_0_value = ptw_io_requestor_1_customCSRs_csrs_0_value; // @[RocketTile.scala 198:20]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = tlSlaveXbar_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_a_bits_opcode = tlSlaveXbar_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_a_bits_param = tlSlaveXbar_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_a_bits_size = tlSlaveXbar_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_a_bits_source = tlSlaveXbar_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_a_bits_address = tlSlaveXbar_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_a_bits_mask = tlSlaveXbar_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_a_bits_data = tlSlaveXbar_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_a_bits_corrupt = tlSlaveXbar_auto_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_in_d_ready = tlSlaveXbar_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign fragmenter_auto_out_a_ready = frontend_auto_icache_slave_in_a_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_valid = frontend_auto_icache_slave_in_d_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_opcode = frontend_auto_icache_slave_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_size = frontend_auto_icache_slave_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_source = frontend_auto_icache_slave_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_data = frontend_auto_icache_slave_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign dcacheArb_io_requestor_0_req_valid = core_io_dmem_req_valid; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_0_req_bits_addr = core_io_dmem_req_bits_addr; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_0_req_bits_tag = core_io_dmem_req_bits_tag; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_0_req_bits_cmd = core_io_dmem_req_bits_cmd; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_0_req_bits_size = core_io_dmem_req_bits_size; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_0_req_bits_signed = core_io_dmem_req_bits_signed; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_0_req_bits_dprv = core_io_dmem_req_bits_dprv; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_0_s1_kill = core_io_dmem_s1_kill; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_0_s1_data_data = core_io_dmem_s1_data_data; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_mem_req_ready = dcache_io_cpu_req_ready; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_s2_nack = dcache_io_cpu_s2_nack; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_resp_valid = dcache_io_cpu_resp_valid; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_resp_bits_tag = dcache_io_cpu_resp_bits_tag; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_resp_bits_data = dcache_io_cpu_resp_bits_data; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_resp_bits_replay = dcache_io_cpu_resp_bits_replay; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_resp_bits_has_data = dcache_io_cpu_resp_bits_has_data; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_resp_bits_data_word_bypass = dcache_io_cpu_resp_bits_data_word_bypass; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_replay_next = dcache_io_cpu_replay_next; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_s2_xcpt_ma_ld = dcache_io_cpu_s2_xcpt_ma_ld; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_s2_xcpt_ma_st = dcache_io_cpu_s2_xcpt_ma_st; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_s2_xcpt_pf_ld = dcache_io_cpu_s2_xcpt_pf_ld; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_s2_xcpt_pf_st = dcache_io_cpu_s2_xcpt_pf_st; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_s2_xcpt_ae_ld = dcache_io_cpu_s2_xcpt_ae_ld; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_s2_xcpt_ae_st = dcache_io_cpu_s2_xcpt_ae_st; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_ordered = dcache_io_cpu_ordered; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_perf_release = dcache_io_cpu_perf_release; // @[HellaCache.scala 281:30]
+  assign dcacheArb_io_mem_perf_grant = dcache_io_cpu_perf_grant; // @[HellaCache.scala 281:30]
+  assign ptw_clock = clock;
+  assign ptw_reset = reset;
+  assign ptw_io_dpath_status_debug = core_io_ptw_status_debug; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_status_prv = core_io_ptw_status_prv; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_0_cfg_l = core_io_ptw_pmp_0_cfg_l; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_0_cfg_a = core_io_ptw_pmp_0_cfg_a; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_0_cfg_x = core_io_ptw_pmp_0_cfg_x; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_0_cfg_w = core_io_ptw_pmp_0_cfg_w; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_0_cfg_r = core_io_ptw_pmp_0_cfg_r; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_0_addr = core_io_ptw_pmp_0_addr; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_0_mask = core_io_ptw_pmp_0_mask; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_1_cfg_l = core_io_ptw_pmp_1_cfg_l; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_1_cfg_a = core_io_ptw_pmp_1_cfg_a; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_1_cfg_x = core_io_ptw_pmp_1_cfg_x; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_1_cfg_w = core_io_ptw_pmp_1_cfg_w; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_1_cfg_r = core_io_ptw_pmp_1_cfg_r; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_1_addr = core_io_ptw_pmp_1_addr; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_1_mask = core_io_ptw_pmp_1_mask; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_2_cfg_l = core_io_ptw_pmp_2_cfg_l; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_2_cfg_a = core_io_ptw_pmp_2_cfg_a; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_2_cfg_x = core_io_ptw_pmp_2_cfg_x; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_2_cfg_w = core_io_ptw_pmp_2_cfg_w; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_2_cfg_r = core_io_ptw_pmp_2_cfg_r; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_2_addr = core_io_ptw_pmp_2_addr; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_2_mask = core_io_ptw_pmp_2_mask; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_3_cfg_l = core_io_ptw_pmp_3_cfg_l; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_3_cfg_a = core_io_ptw_pmp_3_cfg_a; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_3_cfg_x = core_io_ptw_pmp_3_cfg_x; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_3_cfg_w = core_io_ptw_pmp_3_cfg_w; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_3_cfg_r = core_io_ptw_pmp_3_cfg_r; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_3_addr = core_io_ptw_pmp_3_addr; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_3_mask = core_io_ptw_pmp_3_mask; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_4_cfg_l = core_io_ptw_pmp_4_cfg_l; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_4_cfg_a = core_io_ptw_pmp_4_cfg_a; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_4_cfg_x = core_io_ptw_pmp_4_cfg_x; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_4_cfg_w = core_io_ptw_pmp_4_cfg_w; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_4_cfg_r = core_io_ptw_pmp_4_cfg_r; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_4_addr = core_io_ptw_pmp_4_addr; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_4_mask = core_io_ptw_pmp_4_mask; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_5_cfg_l = core_io_ptw_pmp_5_cfg_l; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_5_cfg_a = core_io_ptw_pmp_5_cfg_a; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_5_cfg_x = core_io_ptw_pmp_5_cfg_x; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_5_cfg_w = core_io_ptw_pmp_5_cfg_w; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_5_cfg_r = core_io_ptw_pmp_5_cfg_r; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_5_addr = core_io_ptw_pmp_5_addr; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_5_mask = core_io_ptw_pmp_5_mask; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_6_cfg_l = core_io_ptw_pmp_6_cfg_l; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_6_cfg_a = core_io_ptw_pmp_6_cfg_a; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_6_cfg_x = core_io_ptw_pmp_6_cfg_x; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_6_cfg_w = core_io_ptw_pmp_6_cfg_w; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_6_cfg_r = core_io_ptw_pmp_6_cfg_r; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_6_addr = core_io_ptw_pmp_6_addr; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_6_mask = core_io_ptw_pmp_6_mask; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_7_cfg_l = core_io_ptw_pmp_7_cfg_l; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_7_cfg_a = core_io_ptw_pmp_7_cfg_a; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_7_cfg_x = core_io_ptw_pmp_7_cfg_x; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_7_cfg_w = core_io_ptw_pmp_7_cfg_w; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_7_cfg_r = core_io_ptw_pmp_7_cfg_r; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_7_addr = core_io_ptw_pmp_7_addr; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_pmp_7_mask = core_io_ptw_pmp_7_mask; // @[RocketTile.scala 176:15]
+  assign ptw_io_dpath_customCSRs_csrs_0_value = core_io_ptw_customCSRs_csrs_0_value; // @[RocketTile.scala 176:15]
+  assign core_clock = clock;
+  assign core_reset = reset;
+  assign core_io_hartid = broadcast_auto_out_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign core_io_interrupts_debug = intXbar_auto_int_out_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign core_io_interrupts_mtip = intXbar_auto_int_out_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign core_io_interrupts_msip = intXbar_auto_int_out_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign core_io_interrupts_meip = intXbar_auto_int_out_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign core_io_interrupts_seip = intXbar_auto_int_out_4; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign core_io_imem_resp_valid = frontend_io_cpu_resp_valid; // @[RocketTile.scala 173:32]
+  assign core_io_imem_resp_bits_btb_taken = frontend_io_cpu_resp_bits_btb_taken; // @[RocketTile.scala 173:32]
+  assign core_io_imem_resp_bits_btb_bridx = frontend_io_cpu_resp_bits_btb_bridx; // @[RocketTile.scala 173:32]
+  assign core_io_imem_resp_bits_btb_entry = frontend_io_cpu_resp_bits_btb_entry; // @[RocketTile.scala 173:32]
+  assign core_io_imem_resp_bits_btb_bht_history = frontend_io_cpu_resp_bits_btb_bht_history; // @[RocketTile.scala 173:32]
+  assign core_io_imem_resp_bits_pc = frontend_io_cpu_resp_bits_pc; // @[RocketTile.scala 173:32]
+  assign core_io_imem_resp_bits_data = frontend_io_cpu_resp_bits_data; // @[RocketTile.scala 173:32]
+  assign core_io_imem_resp_bits_xcpt_ae_inst = frontend_io_cpu_resp_bits_xcpt_ae_inst; // @[RocketTile.scala 173:32]
+  assign core_io_imem_resp_bits_replay = frontend_io_cpu_resp_bits_replay; // @[RocketTile.scala 173:32]
+  assign core_io_dmem_req_ready = dcacheArb_io_requestor_0_req_ready; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_s2_nack = dcacheArb_io_requestor_0_s2_nack; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_resp_valid = dcacheArb_io_requestor_0_resp_valid; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_resp_bits_tag = dcacheArb_io_requestor_0_resp_bits_tag; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_resp_bits_data = dcacheArb_io_requestor_0_resp_bits_data; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_resp_bits_replay = dcacheArb_io_requestor_0_resp_bits_replay; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_resp_bits_has_data = dcacheArb_io_requestor_0_resp_bits_has_data; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_resp_bits_data_word_bypass = dcacheArb_io_requestor_0_resp_bits_data_word_bypass; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_replay_next = dcacheArb_io_requestor_0_replay_next; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_s2_xcpt_ma_ld = dcacheArb_io_requestor_0_s2_xcpt_ma_ld; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_s2_xcpt_ma_st = dcacheArb_io_requestor_0_s2_xcpt_ma_st; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_s2_xcpt_pf_ld = dcacheArb_io_requestor_0_s2_xcpt_pf_ld; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_s2_xcpt_pf_st = dcacheArb_io_requestor_0_s2_xcpt_pf_st; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_s2_xcpt_ae_ld = dcacheArb_io_requestor_0_s2_xcpt_ae_ld; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_s2_xcpt_ae_st = dcacheArb_io_requestor_0_s2_xcpt_ae_st; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_ordered = dcacheArb_io_requestor_0_ordered; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_perf_release = dcacheArb_io_requestor_0_perf_release; // @[RocketTile.scala 197:26]
+  assign core_io_dmem_perf_grant = dcacheArb_io_requestor_0_perf_grant; // @[RocketTile.scala 197:26]
+  always @(posedge clock) begin
+    if (reset) begin // @[Interrupts.scala 126:36]
+      bundleOut_0_0_REG <= 1'h0; // @[Interrupts.scala 126:36]
+    end else begin
+      bundleOut_0_0_REG <= core_io_wfi; // @[Interrupts.scala 126:36]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  bundleOut_0_0_REG = _RAND_0[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TileResetDomain(
+  output        auto_tile_slave_in_a_ready,
+  input         auto_tile_slave_in_a_valid,
+  input  [2:0]  auto_tile_slave_in_a_bits_opcode,
+  input  [2:0]  auto_tile_slave_in_a_bits_param,
+  input  [2:0]  auto_tile_slave_in_a_bits_size,
+  input  [1:0]  auto_tile_slave_in_a_bits_source,
+  input  [27:0] auto_tile_slave_in_a_bits_address,
+  input  [3:0]  auto_tile_slave_in_a_bits_mask,
+  input  [31:0] auto_tile_slave_in_a_bits_data,
+  input         auto_tile_slave_in_a_bits_corrupt,
+  input         auto_tile_slave_in_d_ready,
+  output        auto_tile_slave_in_d_valid,
+  output [2:0]  auto_tile_slave_in_d_bits_opcode,
+  output [2:0]  auto_tile_slave_in_d_bits_size,
+  output [1:0]  auto_tile_slave_in_d_bits_source,
+  output [31:0] auto_tile_slave_in_d_bits_data,
+  output        auto_tile_wfi_out_0,
+  input         auto_tile_int_local_in_3_0,
+  input         auto_tile_int_local_in_2_0,
+  input         auto_tile_int_local_in_1_0,
+  input         auto_tile_int_local_in_1_1,
+  input         auto_tile_int_local_in_0_0,
+  input         auto_tile_hartid_in,
+  input         auto_tile_tl_other_masters_out_a_ready,
+  output        auto_tile_tl_other_masters_out_a_valid,
+  output [2:0]  auto_tile_tl_other_masters_out_a_bits_opcode,
+  output [2:0]  auto_tile_tl_other_masters_out_a_bits_param,
+  output [3:0]  auto_tile_tl_other_masters_out_a_bits_size,
+  output [1:0]  auto_tile_tl_other_masters_out_a_bits_source,
+  output [30:0] auto_tile_tl_other_masters_out_a_bits_address,
+  output [3:0]  auto_tile_tl_other_masters_out_a_bits_mask,
+  output [31:0] auto_tile_tl_other_masters_out_a_bits_data,
+  output        auto_tile_tl_other_masters_out_b_ready,
+  input         auto_tile_tl_other_masters_out_b_valid,
+  input  [2:0]  auto_tile_tl_other_masters_out_b_bits_opcode,
+  input  [1:0]  auto_tile_tl_other_masters_out_b_bits_param,
+  input  [3:0]  auto_tile_tl_other_masters_out_b_bits_size,
+  input  [1:0]  auto_tile_tl_other_masters_out_b_bits_source,
+  input  [30:0] auto_tile_tl_other_masters_out_b_bits_address,
+  input  [3:0]  auto_tile_tl_other_masters_out_b_bits_mask,
+  input         auto_tile_tl_other_masters_out_b_bits_corrupt,
+  input         auto_tile_tl_other_masters_out_c_ready,
+  output        auto_tile_tl_other_masters_out_c_valid,
+  output [2:0]  auto_tile_tl_other_masters_out_c_bits_opcode,
+  output [2:0]  auto_tile_tl_other_masters_out_c_bits_param,
+  output [3:0]  auto_tile_tl_other_masters_out_c_bits_size,
+  output [1:0]  auto_tile_tl_other_masters_out_c_bits_source,
+  output [30:0] auto_tile_tl_other_masters_out_c_bits_address,
+  output [31:0] auto_tile_tl_other_masters_out_c_bits_data,
+  output        auto_tile_tl_other_masters_out_d_ready,
+  input         auto_tile_tl_other_masters_out_d_valid,
+  input  [2:0]  auto_tile_tl_other_masters_out_d_bits_opcode,
+  input  [1:0]  auto_tile_tl_other_masters_out_d_bits_param,
+  input  [3:0]  auto_tile_tl_other_masters_out_d_bits_size,
+  input  [1:0]  auto_tile_tl_other_masters_out_d_bits_source,
+  input  [1:0]  auto_tile_tl_other_masters_out_d_bits_sink,
+  input         auto_tile_tl_other_masters_out_d_bits_denied,
+  input  [31:0] auto_tile_tl_other_masters_out_d_bits_data,
+  input         auto_tile_tl_other_masters_out_d_bits_corrupt,
+  input         auto_tile_tl_other_masters_out_e_ready,
+  output        auto_tile_tl_other_masters_out_e_valid,
+  output [1:0]  auto_tile_tl_other_masters_out_e_bits_sink,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset, // <no_sram>
+  output [5:0]  tag_array_ext_RW0_addr, // <no_sram>
+  output        tag_array_ext_RW0_en, // <no_sram>
+  output        tag_array_ext_RW0_clk, // <no_sram>
+  output        tag_array_ext_RW0_wmode, // <no_sram>
+  output [20:0] tag_array_ext_RW0_wdata, // <no_sram>
+  input  [20:0] tag_array_ext_RW0_rdata, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+  wire  tile_clock; // @[HasTiles.scala 253:53]
+  wire  tile_reset; // @[HasTiles.scala 253:53]
+  wire  tile_auto_slave_in_a_ready; // @[HasTiles.scala 253:53]
+  wire  tile_auto_slave_in_a_valid; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_slave_in_a_bits_opcode; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_slave_in_a_bits_param; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_slave_in_a_bits_size; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_slave_in_a_bits_source; // @[HasTiles.scala 253:53]
+  wire [27:0] tile_auto_slave_in_a_bits_address; // @[HasTiles.scala 253:53]
+  wire [3:0] tile_auto_slave_in_a_bits_mask; // @[HasTiles.scala 253:53]
+  wire [31:0] tile_auto_slave_in_a_bits_data; // @[HasTiles.scala 253:53]
+  wire  tile_auto_slave_in_a_bits_corrupt; // @[HasTiles.scala 253:53]
+  wire  tile_auto_slave_in_d_ready; // @[HasTiles.scala 253:53]
+  wire  tile_auto_slave_in_d_valid; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_slave_in_d_bits_opcode; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_slave_in_d_bits_size; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_slave_in_d_bits_source; // @[HasTiles.scala 253:53]
+  wire [31:0] tile_auto_slave_in_d_bits_data; // @[HasTiles.scala 253:53]
+  wire  tile_auto_wfi_out_0; // @[HasTiles.scala 253:53]
+  wire  tile_auto_int_local_in_3_0; // @[HasTiles.scala 253:53]
+  wire  tile_auto_int_local_in_2_0; // @[HasTiles.scala 253:53]
+  wire  tile_auto_int_local_in_1_0; // @[HasTiles.scala 253:53]
+  wire  tile_auto_int_local_in_1_1; // @[HasTiles.scala 253:53]
+  wire  tile_auto_int_local_in_0_0; // @[HasTiles.scala 253:53]
+  wire  tile_auto_hartid_in; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_a_ready; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_a_valid; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_tl_other_masters_out_a_bits_opcode; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_tl_other_masters_out_a_bits_param; // @[HasTiles.scala 253:53]
+  wire [3:0] tile_auto_tl_other_masters_out_a_bits_size; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_tl_other_masters_out_a_bits_source; // @[HasTiles.scala 253:53]
+  wire [30:0] tile_auto_tl_other_masters_out_a_bits_address; // @[HasTiles.scala 253:53]
+  wire [3:0] tile_auto_tl_other_masters_out_a_bits_mask; // @[HasTiles.scala 253:53]
+  wire [31:0] tile_auto_tl_other_masters_out_a_bits_data; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_b_ready; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_b_valid; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_tl_other_masters_out_b_bits_opcode; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_tl_other_masters_out_b_bits_param; // @[HasTiles.scala 253:53]
+  wire [3:0] tile_auto_tl_other_masters_out_b_bits_size; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_tl_other_masters_out_b_bits_source; // @[HasTiles.scala 253:53]
+  wire [30:0] tile_auto_tl_other_masters_out_b_bits_address; // @[HasTiles.scala 253:53]
+  wire [3:0] tile_auto_tl_other_masters_out_b_bits_mask; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_b_bits_corrupt; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_c_ready; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_c_valid; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_tl_other_masters_out_c_bits_opcode; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_tl_other_masters_out_c_bits_param; // @[HasTiles.scala 253:53]
+  wire [3:0] tile_auto_tl_other_masters_out_c_bits_size; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_tl_other_masters_out_c_bits_source; // @[HasTiles.scala 253:53]
+  wire [30:0] tile_auto_tl_other_masters_out_c_bits_address; // @[HasTiles.scala 253:53]
+  wire [31:0] tile_auto_tl_other_masters_out_c_bits_data; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_d_ready; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_d_valid; // @[HasTiles.scala 253:53]
+  wire [2:0] tile_auto_tl_other_masters_out_d_bits_opcode; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_tl_other_masters_out_d_bits_param; // @[HasTiles.scala 253:53]
+  wire [3:0] tile_auto_tl_other_masters_out_d_bits_size; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_tl_other_masters_out_d_bits_source; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_tl_other_masters_out_d_bits_sink; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_d_bits_denied; // @[HasTiles.scala 253:53]
+  wire [31:0] tile_auto_tl_other_masters_out_d_bits_data; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_d_bits_corrupt; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_e_ready; // @[HasTiles.scala 253:53]
+  wire  tile_auto_tl_other_masters_out_e_valid; // @[HasTiles.scala 253:53]
+  wire [1:0] tile_auto_tl_other_masters_out_e_bits_sink; // @[HasTiles.scala 253:53]
+  RocketTile tile ( // @[HasTiles.scala 253:53]
+    .clock(tile_clock),
+    .reset(tile_reset),
+    .auto_slave_in_a_ready(tile_auto_slave_in_a_ready),
+    .auto_slave_in_a_valid(tile_auto_slave_in_a_valid),
+    .auto_slave_in_a_bits_opcode(tile_auto_slave_in_a_bits_opcode),
+    .auto_slave_in_a_bits_param(tile_auto_slave_in_a_bits_param),
+    .auto_slave_in_a_bits_size(tile_auto_slave_in_a_bits_size),
+    .auto_slave_in_a_bits_source(tile_auto_slave_in_a_bits_source),
+    .auto_slave_in_a_bits_address(tile_auto_slave_in_a_bits_address),
+    .auto_slave_in_a_bits_mask(tile_auto_slave_in_a_bits_mask),
+    .auto_slave_in_a_bits_data(tile_auto_slave_in_a_bits_data),
+    .auto_slave_in_a_bits_corrupt(tile_auto_slave_in_a_bits_corrupt),
+    .auto_slave_in_d_ready(tile_auto_slave_in_d_ready),
+    .auto_slave_in_d_valid(tile_auto_slave_in_d_valid),
+    .auto_slave_in_d_bits_opcode(tile_auto_slave_in_d_bits_opcode),
+    .auto_slave_in_d_bits_size(tile_auto_slave_in_d_bits_size),
+    .auto_slave_in_d_bits_source(tile_auto_slave_in_d_bits_source),
+    .auto_slave_in_d_bits_data(tile_auto_slave_in_d_bits_data),
+    .auto_wfi_out_0(tile_auto_wfi_out_0),
+    .auto_int_local_in_3_0(tile_auto_int_local_in_3_0),
+    .auto_int_local_in_2_0(tile_auto_int_local_in_2_0),
+    .auto_int_local_in_1_0(tile_auto_int_local_in_1_0),
+    .auto_int_local_in_1_1(tile_auto_int_local_in_1_1),
+    .auto_int_local_in_0_0(tile_auto_int_local_in_0_0),
+    .auto_hartid_in(tile_auto_hartid_in),
+    .auto_tl_other_masters_out_a_ready(tile_auto_tl_other_masters_out_a_ready),
+    .auto_tl_other_masters_out_a_valid(tile_auto_tl_other_masters_out_a_valid),
+    .auto_tl_other_masters_out_a_bits_opcode(tile_auto_tl_other_masters_out_a_bits_opcode),
+    .auto_tl_other_masters_out_a_bits_param(tile_auto_tl_other_masters_out_a_bits_param),
+    .auto_tl_other_masters_out_a_bits_size(tile_auto_tl_other_masters_out_a_bits_size),
+    .auto_tl_other_masters_out_a_bits_source(tile_auto_tl_other_masters_out_a_bits_source),
+    .auto_tl_other_masters_out_a_bits_address(tile_auto_tl_other_masters_out_a_bits_address),
+    .auto_tl_other_masters_out_a_bits_mask(tile_auto_tl_other_masters_out_a_bits_mask),
+    .auto_tl_other_masters_out_a_bits_data(tile_auto_tl_other_masters_out_a_bits_data),
+    .auto_tl_other_masters_out_b_ready(tile_auto_tl_other_masters_out_b_ready),
+    .auto_tl_other_masters_out_b_valid(tile_auto_tl_other_masters_out_b_valid),
+    .auto_tl_other_masters_out_b_bits_opcode(tile_auto_tl_other_masters_out_b_bits_opcode),
+    .auto_tl_other_masters_out_b_bits_param(tile_auto_tl_other_masters_out_b_bits_param),
+    .auto_tl_other_masters_out_b_bits_size(tile_auto_tl_other_masters_out_b_bits_size),
+    .auto_tl_other_masters_out_b_bits_source(tile_auto_tl_other_masters_out_b_bits_source),
+    .auto_tl_other_masters_out_b_bits_address(tile_auto_tl_other_masters_out_b_bits_address),
+    .auto_tl_other_masters_out_b_bits_mask(tile_auto_tl_other_masters_out_b_bits_mask),
+    .auto_tl_other_masters_out_b_bits_corrupt(tile_auto_tl_other_masters_out_b_bits_corrupt),
+    .auto_tl_other_masters_out_c_ready(tile_auto_tl_other_masters_out_c_ready),
+    .auto_tl_other_masters_out_c_valid(tile_auto_tl_other_masters_out_c_valid),
+    .auto_tl_other_masters_out_c_bits_opcode(tile_auto_tl_other_masters_out_c_bits_opcode),
+    .auto_tl_other_masters_out_c_bits_param(tile_auto_tl_other_masters_out_c_bits_param),
+    .auto_tl_other_masters_out_c_bits_size(tile_auto_tl_other_masters_out_c_bits_size),
+    .auto_tl_other_masters_out_c_bits_source(tile_auto_tl_other_masters_out_c_bits_source),
+    .auto_tl_other_masters_out_c_bits_address(tile_auto_tl_other_masters_out_c_bits_address),
+    .auto_tl_other_masters_out_c_bits_data(tile_auto_tl_other_masters_out_c_bits_data),
+    .auto_tl_other_masters_out_d_ready(tile_auto_tl_other_masters_out_d_ready),
+    .auto_tl_other_masters_out_d_valid(tile_auto_tl_other_masters_out_d_valid),
+    .auto_tl_other_masters_out_d_bits_opcode(tile_auto_tl_other_masters_out_d_bits_opcode),
+    .auto_tl_other_masters_out_d_bits_param(tile_auto_tl_other_masters_out_d_bits_param),
+    .auto_tl_other_masters_out_d_bits_size(tile_auto_tl_other_masters_out_d_bits_size),
+    .auto_tl_other_masters_out_d_bits_source(tile_auto_tl_other_masters_out_d_bits_source),
+    .auto_tl_other_masters_out_d_bits_sink(tile_auto_tl_other_masters_out_d_bits_sink),
+    .auto_tl_other_masters_out_d_bits_denied(tile_auto_tl_other_masters_out_d_bits_denied),
+    .auto_tl_other_masters_out_d_bits_data(tile_auto_tl_other_masters_out_d_bits_data),
+    .auto_tl_other_masters_out_d_bits_corrupt(tile_auto_tl_other_masters_out_d_bits_corrupt),
+    .auto_tl_other_masters_out_e_ready(tile_auto_tl_other_masters_out_e_ready),
+    .auto_tl_other_masters_out_e_valid(tile_auto_tl_other_masters_out_e_valid),
+    .auto_tl_other_masters_out_e_bits_sink(tile_auto_tl_other_masters_out_e_bits_sink), // <no_sram>
+    .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr), // <no_sram>
+    .tag_array_ext_RW0_en(tag_array_ext_RW0_en), // <no_sram>
+    .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk), // <no_sram>
+    .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode), // <no_sram>
+    .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata), // <no_sram>
+    .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask), // <no_sram>
+    .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+    .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+    .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+    .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+    .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+    .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+    .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask), // <no_sram>
+    .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+  );
+  assign auto_tile_slave_in_a_ready = tile_auto_slave_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_tile_slave_in_d_valid = tile_auto_slave_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_tile_slave_in_d_bits_opcode = tile_auto_slave_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_tile_slave_in_d_bits_size = tile_auto_slave_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_tile_slave_in_d_bits_source = tile_auto_slave_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_tile_slave_in_d_bits_data = tile_auto_slave_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_tile_wfi_out_0 = tile_auto_wfi_out_0; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_a_valid = tile_auto_tl_other_masters_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_a_bits_opcode = tile_auto_tl_other_masters_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_a_bits_param = tile_auto_tl_other_masters_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_a_bits_size = tile_auto_tl_other_masters_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_a_bits_source = tile_auto_tl_other_masters_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_a_bits_address = tile_auto_tl_other_masters_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_a_bits_mask = tile_auto_tl_other_masters_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_a_bits_data = tile_auto_tl_other_masters_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_b_ready = tile_auto_tl_other_masters_out_b_ready; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_c_valid = tile_auto_tl_other_masters_out_c_valid; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_c_bits_opcode = tile_auto_tl_other_masters_out_c_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_c_bits_param = tile_auto_tl_other_masters_out_c_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_c_bits_size = tile_auto_tl_other_masters_out_c_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_c_bits_source = tile_auto_tl_other_masters_out_c_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_c_bits_address = tile_auto_tl_other_masters_out_c_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_c_bits_data = tile_auto_tl_other_masters_out_c_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_d_ready = tile_auto_tl_other_masters_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_e_valid = tile_auto_tl_other_masters_out_e_valid; // @[LazyModule.scala 311:12]
+  assign auto_tile_tl_other_masters_out_e_bits_sink = tile_auto_tl_other_masters_out_e_bits_sink; // @[LazyModule.scala 311:12]
+  assign tile_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tile_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_valid = auto_tile_slave_in_a_valid; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_bits_opcode = auto_tile_slave_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_bits_param = auto_tile_slave_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_bits_size = auto_tile_slave_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_bits_source = auto_tile_slave_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_bits_address = auto_tile_slave_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_bits_mask = auto_tile_slave_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_bits_data = auto_tile_slave_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_a_bits_corrupt = auto_tile_slave_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign tile_auto_slave_in_d_ready = auto_tile_slave_in_d_ready; // @[LazyModule.scala 309:16]
+  assign tile_auto_int_local_in_3_0 = auto_tile_int_local_in_3_0; // @[LazyModule.scala 309:16]
+  assign tile_auto_int_local_in_2_0 = auto_tile_int_local_in_2_0; // @[LazyModule.scala 309:16]
+  assign tile_auto_int_local_in_1_0 = auto_tile_int_local_in_1_0; // @[LazyModule.scala 309:16]
+  assign tile_auto_int_local_in_1_1 = auto_tile_int_local_in_1_1; // @[LazyModule.scala 309:16]
+  assign tile_auto_int_local_in_0_0 = auto_tile_int_local_in_0_0; // @[LazyModule.scala 309:16]
+  assign tile_auto_hartid_in = auto_tile_hartid_in; // @[LazyModule.scala 309:16]
+  assign tile_auto_tl_other_masters_out_a_ready = auto_tile_tl_other_masters_out_a_ready; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_b_valid = auto_tile_tl_other_masters_out_b_valid; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_b_bits_opcode = auto_tile_tl_other_masters_out_b_bits_opcode; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_b_bits_param = auto_tile_tl_other_masters_out_b_bits_param; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_b_bits_size = auto_tile_tl_other_masters_out_b_bits_size; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_b_bits_source = auto_tile_tl_other_masters_out_b_bits_source; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_b_bits_address = auto_tile_tl_other_masters_out_b_bits_address; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_b_bits_mask = auto_tile_tl_other_masters_out_b_bits_mask; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_b_bits_corrupt = auto_tile_tl_other_masters_out_b_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_c_ready = auto_tile_tl_other_masters_out_c_ready; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_valid = auto_tile_tl_other_masters_out_d_valid; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_bits_opcode = auto_tile_tl_other_masters_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_bits_param = auto_tile_tl_other_masters_out_d_bits_param; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_bits_size = auto_tile_tl_other_masters_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_bits_source = auto_tile_tl_other_masters_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_bits_sink = auto_tile_tl_other_masters_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_bits_denied = auto_tile_tl_other_masters_out_d_bits_denied; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_bits_data = auto_tile_tl_other_masters_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_d_bits_corrupt = auto_tile_tl_other_masters_out_d_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign tile_auto_tl_other_masters_out_e_ready = auto_tile_tl_other_masters_out_e_ready; // @[LazyModule.scala 311:12]
+endmodule
+module TLBuffer_9(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_b_ready,
+  output        auto_in_b_valid,
+  output [2:0]  auto_in_b_bits_opcode,
+  output [1:0]  auto_in_b_bits_param,
+  output [3:0]  auto_in_b_bits_size,
+  output [1:0]  auto_in_b_bits_source,
+  output [30:0] auto_in_b_bits_address,
+  output [3:0]  auto_in_b_bits_mask,
+  output        auto_in_b_bits_corrupt,
+  output        auto_in_c_ready,
+  input         auto_in_c_valid,
+  input  [2:0]  auto_in_c_bits_opcode,
+  input  [2:0]  auto_in_c_bits_param,
+  input  [3:0]  auto_in_c_bits_size,
+  input  [1:0]  auto_in_c_bits_source,
+  input  [30:0] auto_in_c_bits_address,
+  input  [31:0] auto_in_c_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [1:0]  auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  output        auto_in_e_ready,
+  input         auto_in_e_valid,
+  input  [1:0]  auto_in_e_bits_sink,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_b_ready,
+  input         auto_out_b_valid,
+  input  [2:0]  auto_out_b_bits_opcode,
+  input  [1:0]  auto_out_b_bits_param,
+  input  [3:0]  auto_out_b_bits_size,
+  input  [1:0]  auto_out_b_bits_source,
+  input  [30:0] auto_out_b_bits_address,
+  input  [3:0]  auto_out_b_bits_mask,
+  input         auto_out_b_bits_corrupt,
+  input         auto_out_c_ready,
+  output        auto_out_c_valid,
+  output [2:0]  auto_out_c_bits_opcode,
+  output [2:0]  auto_out_c_bits_param,
+  output [3:0]  auto_out_c_bits_size,
+  output [1:0]  auto_out_c_bits_source,
+  output [30:0] auto_out_c_bits_address,
+  output [31:0] auto_out_c_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [1:0]  auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt,
+  input         auto_out_e_ready,
+  output        auto_out_e_valid,
+  output [1:0]  auto_out_e_bits_sink
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_valid = auto_out_b_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_opcode = auto_out_b_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_param = auto_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_size = auto_out_b_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_source = auto_out_b_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_address = auto_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_mask = auto_out_b_bits_mask; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_b_bits_corrupt = auto_out_b_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_c_ready = auto_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_e_ready = auto_out_e_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_valid = auto_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_source = auto_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_c_bits_data = auto_in_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_e_valid = auto_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_e_bits_sink = auto_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_45(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [3:0]  io_in_a_bits_size,
+  input  [1:0]  io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_b_ready,
+  input         io_in_b_valid,
+  input  [2:0]  io_in_b_bits_opcode,
+  input  [1:0]  io_in_b_bits_param,
+  input  [3:0]  io_in_b_bits_size,
+  input  [1:0]  io_in_b_bits_source,
+  input  [30:0] io_in_b_bits_address,
+  input  [3:0]  io_in_b_bits_mask,
+  input         io_in_b_bits_corrupt,
+  input         io_in_c_ready,
+  input         io_in_c_valid,
+  input  [2:0]  io_in_c_bits_opcode,
+  input  [2:0]  io_in_c_bits_param,
+  input  [3:0]  io_in_c_bits_size,
+  input  [1:0]  io_in_c_bits_source,
+  input  [30:0] io_in_c_bits_address,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_param,
+  input  [3:0]  io_in_d_bits_size,
+  input  [1:0]  io_in_d_bits_source,
+  input  [1:0]  io_in_d_bits_sink,
+  input         io_in_d_bits_denied,
+  input         io_in_d_bits_corrupt,
+  input         io_in_e_ready,
+  input         io_in_e_valid,
+  input  [1:0]  io_in_e_bits_sink
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T = io_in_a_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_1 = 27'hfff << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask = ~_is_aligned_mask_T_1[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_86 = {{19'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T = io_in_a_bits_address & _GEN_86; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire [31:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_33 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_35 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_42 = _T_35 & source_ok; // @[Parameters.scala 1160:30]
+  wire [31:0] _T_48 = $signed(_T_7) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_50 = io_in_a_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_53 = $signed(_T_51) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_55 = io_in_a_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_58 = $signed(_T_56) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_60 = io_in_a_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_63 = $signed(_T_61) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_65 = io_in_a_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_68 = $signed(_T_66) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_70 = io_in_a_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_73 = $signed(_T_71) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_75 = io_in_a_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_78 = $signed(_T_76) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_80 = io_in_a_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_83 = $signed(_T_81) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_85 = io_in_a_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_86 = {1'b0,$signed(_T_85)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_88 = $signed(_T_86) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_89 = $signed(_T_88) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_90 = io_in_a_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_91 = {1'b0,$signed(_T_90)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_93 = $signed(_T_91) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_94 = $signed(_T_93) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_95 = io_in_a_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_96 = {1'b0,$signed(_T_95)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_98 = $signed(_T_96) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_99 = $signed(_T_98) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_100 = io_in_a_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_101 = {1'b0,$signed(_T_100)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_103 = $signed(_T_101) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_104 = $signed(_T_103) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_105 = io_in_a_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_106 = {1'b0,$signed(_T_105)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_108 = $signed(_T_106) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_109 = $signed(_T_108) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _T_110 = io_in_a_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_111 = {1'b0,$signed(_T_110)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_113 = $signed(_T_111) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_114 = $signed(_T_113) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_130 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire [30:0] _T_133 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_134 = {1'b0,$signed(_T_133)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_136 = $signed(_T_134) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_137 = $signed(_T_136) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_138 = _T_130 & _T_137; // @[Parameters.scala 670:56]
+  wire  _T_141 = _T_42 & _T_138; // @[Monitor.scala 82:72]
+  wire  _T_148 = 4'h6 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_149 = _source_ok_T & _T_148; // @[Mux.scala 27:73]
+  wire  _T_246 = _T_49 | _T_54 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109
+     | _T_114 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_247 = _T_35 & _T_246; // @[Parameters.scala 670:56]
+  wire  _T_249 = _T_149 & _T_247; // @[Monitor.scala 83:78]
+  wire  _T_263 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_267 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_268 = _T_267 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_276 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_510 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_523 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_546 = _T_35 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_633 = _T_49 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 |
+    _T_114 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_634 = _T_130 & _T_633; // @[Parameters.scala 670:56]
+  wire  _T_636 = _T_546 | _T_634; // @[Parameters.scala 672:30]
+  wire  _T_646 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_650 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_658 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_752 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_753 = _T_49 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109 | _T_137; // @[Parameters.scala 671:42]
+  wire  _T_754 = _T_130 & _T_753; // @[Parameters.scala 670:56]
+  wire  _T_769 = _T_546 | _T_754; // @[Parameters.scala 672:30]
+  wire  _T_771 = _T_42 & _T_769; // @[Monitor.scala 115:71]
+  wire  _T_789 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_879 = _T_130 & _T_752; // @[Parameters.scala 670:56]
+  wire  _T_900 = _T_546 | _T_879; // @[Parameters.scala 672:30]
+  wire  _T_902 = _T_42 & _T_900; // @[Monitor.scala 123:74]
+  wire [3:0] _T_916 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_917 = io_in_a_bits_mask & _T_916; // @[Monitor.scala 127:31]
+  wire  _T_918 = _T_917 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_922 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_934 = io_in_a_bits_size <= 4'h2; // @[Parameters.scala 92:42]
+  wire  _T_1007 = _T_49 | _T_54 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104 | _T_109; // @[Parameters.scala 671:42]
+  wire  _T_1008 = _T_934 & _T_1007; // @[Parameters.scala 670:56]
+  wire  _T_1030 = _T_42 & _T_1008; // @[Monitor.scala 131:74]
+  wire  _T_1040 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_1048 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1166 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1174 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1282 = _T_42 & _T_546; // @[Monitor.scala 147:68]
+  wire  _T_1292 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1304 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_5 = io_in_d_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_4 | _source_ok_T_5 | _source_ok_T_6; // @[Parameters.scala 1125:46]
+  wire  _T_1308 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1312 = io_in_d_bits_size >= 4'h2; // @[Monitor.scala 312:27]
+  wire  _T_1316 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1320 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1324 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1328 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1339 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1343 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1356 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1376 = _T_1324 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1385 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1402 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1420 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  _T_1437 = io_in_b_bits_opcode <= 3'h6; // @[Bundles.scala 40:24]
+  wire  _T_1441 = io_in_b_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire [31:0] _T_1444 = {1'b0,$signed(io_in_b_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_1449 = io_in_b_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _T_1457 = io_in_b_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire [30:0] _address_ok_T = io_in_b_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_1 = {1'b0,$signed(_address_ok_T)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_3 = $signed(_address_ok_T_1) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_4 = $signed(_address_ok_T_3) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_5 = io_in_b_bits_address ^ 31'h10013000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_6 = {1'b0,$signed(_address_ok_T_5)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_8 = $signed(_address_ok_T_6) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_9 = $signed(_address_ok_T_8) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_10 = io_in_b_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_11 = {1'b0,$signed(_address_ok_T_10)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_13 = $signed(_address_ok_T_11) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_14 = $signed(_address_ok_T_13) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_15 = io_in_b_bits_address ^ 31'h10033000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_16 = {1'b0,$signed(_address_ok_T_15)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_18 = $signed(_address_ok_T_16) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_19 = $signed(_address_ok_T_18) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_20 = io_in_b_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_21 = {1'b0,$signed(_address_ok_T_20)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_23 = $signed(_address_ok_T_21) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_24 = $signed(_address_ok_T_23) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_25 = io_in_b_bits_address ^ 31'h10053000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_26 = {1'b0,$signed(_address_ok_T_25)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_28 = $signed(_address_ok_T_26) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_29 = $signed(_address_ok_T_28) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_30 = io_in_b_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_31 = {1'b0,$signed(_address_ok_T_30)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_33 = $signed(_address_ok_T_31) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_34 = $signed(_address_ok_T_33) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_35 = io_in_b_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_36 = {1'b0,$signed(_address_ok_T_35)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_38 = $signed(_address_ok_T_36) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_39 = $signed(_address_ok_T_38) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_40 = io_in_b_bits_address ^ 31'h10034000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_41 = {1'b0,$signed(_address_ok_T_40)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_43 = $signed(_address_ok_T_41) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_44 = $signed(_address_ok_T_43) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_45 = io_in_b_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_46 = {1'b0,$signed(_address_ok_T_45)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_48 = $signed(_address_ok_T_46) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_49 = $signed(_address_ok_T_48) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_50 = io_in_b_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_51 = {1'b0,$signed(_address_ok_T_50)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_53 = $signed(_address_ok_T_51) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_54 = $signed(_address_ok_T_53) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_55 = io_in_b_bits_address ^ 31'h10015000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_56 = {1'b0,$signed(_address_ok_T_55)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_58 = $signed(_address_ok_T_56) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_59 = $signed(_address_ok_T_58) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_60 = io_in_b_bits_address ^ 31'h10025000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_61 = {1'b0,$signed(_address_ok_T_60)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_63 = $signed(_address_ok_T_61) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_64 = $signed(_address_ok_T_63) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_65 = io_in_b_bits_address ^ 31'h10035000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_66 = {1'b0,$signed(_address_ok_T_65)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_68 = $signed(_address_ok_T_66) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_69 = $signed(_address_ok_T_68) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_70 = io_in_b_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_71 = {1'b0,$signed(_address_ok_T_70)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_73 = $signed(_address_ok_T_71) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_74 = $signed(_address_ok_T_73) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_75 = io_in_b_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_76 = {1'b0,$signed(_address_ok_T_75)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_78 = $signed(_address_ok_T_76) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_79 = $signed(_address_ok_T_78) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_80 = io_in_b_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_81 = {1'b0,$signed(_address_ok_T_80)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_83 = $signed(_address_ok_T_81) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_84 = $signed(_address_ok_T_83) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_85 = io_in_b_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_86 = {1'b0,$signed(_address_ok_T_85)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_88 = $signed(_address_ok_T_86) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_89 = $signed(_address_ok_T_88) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _address_ok_T_93 = $signed(_T_1444) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_94 = $signed(_address_ok_T_93) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_95 = io_in_b_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_96 = {1'b0,$signed(_address_ok_T_95)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_98 = $signed(_address_ok_T_96) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_99 = $signed(_address_ok_T_98) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_100 = io_in_b_bits_address ^ 31'h10000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_101 = {1'b0,$signed(_address_ok_T_100)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_103 = $signed(_address_ok_T_101) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_104 = $signed(_address_ok_T_103) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_105 = io_in_b_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_106 = {1'b0,$signed(_address_ok_T_105)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_108 = $signed(_address_ok_T_106) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_109 = $signed(_address_ok_T_108) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_110 = io_in_b_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_111 = {1'b0,$signed(_address_ok_T_110)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_113 = $signed(_address_ok_T_111) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_114 = $signed(_address_ok_T_113) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  address_ok = _address_ok_T_4 | _address_ok_T_9 | _address_ok_T_14 | _address_ok_T_19 | _address_ok_T_24 |
+    _address_ok_T_29 | _address_ok_T_34 | _address_ok_T_39 | _address_ok_T_44 | _address_ok_T_49 | _address_ok_T_54 |
+    _address_ok_T_59 | _address_ok_T_64 | _address_ok_T_69 | _address_ok_T_74 | _address_ok_T_79 | _address_ok_T_84 |
+    _address_ok_T_89 | _address_ok_T_94 | _address_ok_T_99 | _address_ok_T_104 | _address_ok_T_109 | _address_ok_T_114; // @[Parameters.scala 622:64]
+  wire [26:0] _is_aligned_mask_T_4 = 27'hfff << io_in_b_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask_1 = ~_is_aligned_mask_T_4[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_87 = {{19'd0}, is_aligned_mask_1}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T_1 = io_in_b_bits_address & _GEN_87; // @[Edges.scala 20:16]
+  wire  is_aligned_1 = _is_aligned_T_1 == 31'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount_1 = io_in_b_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_4 = 2'h1 << mask_sizeOH_shiftAmount_1; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH_1 = _mask_sizeOH_T_4 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T_1 = io_in_b_bits_size >= 4'h2; // @[Misc.scala 205:21]
+  wire  mask_size_2 = mask_sizeOH_1[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_b_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_acc_6 = _mask_T_1 | mask_size_2 & mask_nbit_2; // @[Misc.scala 214:29]
+  wire  mask_acc_7 = _mask_T_1 | mask_size_2 & mask_bit_2; // @[Misc.scala 214:29]
+  wire  mask_size_3 = mask_sizeOH_1[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_3 = io_in_b_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_3 = ~mask_bit_3; // @[Misc.scala 210:20]
+  wire  mask_eq_8 = mask_nbit_2 & mask_nbit_3; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_6 | mask_size_3 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_nbit_2 & mask_bit_3; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_6 | mask_size_3 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_bit_2 & mask_nbit_3; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_7 | mask_size_3 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_bit_2 & mask_bit_3; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_7 | mask_size_3 & mask_eq_11; // @[Misc.scala 214:29]
+  wire [3:0] mask_1 = {mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8}; // @[Cat.scala 31:58]
+  wire [1:0] _legal_source_T_5 = _T_1457 ? 2'h2 : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _GEN_88 = {{1'd0}, _T_1449}; // @[Mux.scala 27:73]
+  wire [1:0] _legal_source_T_7 = _GEN_88 | _legal_source_T_5; // @[Mux.scala 27:73]
+  wire  legal_source = _legal_source_T_7 == io_in_b_bits_source; // @[Monitor.scala 165:113]
+  wire  _T_1470 = io_in_b_bits_opcode == 3'h6; // @[Monitor.scala 167:25]
+  wire  _T_1474 = 4'h6 == io_in_b_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_1475 = _T_1441 & _T_1474; // @[Mux.scala 27:73]
+  wire  _T_1481 = io_in_b_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire [31:0] _T_1487 = $signed(_T_1444) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_1488 = $signed(_T_1487) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1517 = $signed(_address_ok_T_51) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_1518 = $signed(_T_1517) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1522 = $signed(_address_ok_T_31) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_1523 = $signed(_T_1522) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1532 = $signed(_address_ok_T_11) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_1533 = $signed(_T_1532) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1537 = $signed(_address_ok_T_46) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_1538 = $signed(_T_1537) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_1547 = $signed(_address_ok_T_21) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_1548 = $signed(_T_1547) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_1572 = _T_1488 | _address_ok_T_4 | _address_ok_T_109 | _address_ok_T_89 | _address_ok_T_99 | _address_ok_T_84
+     | _T_1518 | _T_1523 | _address_ok_T_74 | _T_1533 | _T_1538 | _address_ok_T_79 | _T_1548 | _address_ok_T_39 |
+    _address_ok_T_114; // @[Parameters.scala 671:42]
+  wire  _T_1573 = _T_1481 & _T_1572; // @[Parameters.scala 670:56]
+  wire  _T_1575 = _T_1475 & _T_1573; // @[Monitor.scala 168:75]
+  wire  _T_1581 = ~address_ok; // @[Monitor.scala 49:11]
+  wire  _T_1584 = ~legal_source; // @[Monitor.scala 49:11]
+  wire  _T_1587 = ~is_aligned_1; // @[Monitor.scala 49:11]
+  wire  _T_1588 = io_in_b_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1592 = io_in_b_bits_mask == mask_1; // @[Monitor.scala 173:27]
+  wire  _T_1595 = ~_T_1592; // @[Monitor.scala 49:11]
+  wire  _T_1596 = ~io_in_b_bits_corrupt; // @[Monitor.scala 174:15]
+  wire  _T_1599 = ~_T_1596; // @[Monitor.scala 49:11]
+  wire  _T_1600 = io_in_b_bits_opcode == 3'h4; // @[Monitor.scala 177:25]
+  wire  _T_1709 = io_in_b_bits_param == 2'h0; // @[Monitor.scala 182:31]
+  wire  _T_1721 = io_in_b_bits_opcode == 3'h0; // @[Monitor.scala 187:25]
+  wire  _T_1838 = io_in_b_bits_opcode == 3'h1; // @[Monitor.scala 196:25]
+  wire [3:0] _T_1951 = ~mask_1; // @[Monitor.scala 202:33]
+  wire [3:0] _T_1952 = io_in_b_bits_mask & _T_1951; // @[Monitor.scala 202:31]
+  wire  _T_1953 = _T_1952 == 4'h0; // @[Monitor.scala 202:40]
+  wire  _T_1957 = io_in_b_bits_opcode == 3'h2; // @[Monitor.scala 205:25]
+  wire  _T_2074 = io_in_b_bits_opcode == 3'h3; // @[Monitor.scala 214:25]
+  wire  _T_2191 = io_in_b_bits_opcode == 3'h5; // @[Monitor.scala 223:25]
+  wire  _source_ok_T_8 = io_in_c_bits_source == 2'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_c_bits_source == 2'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_10 = io_in_c_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  source_ok_2 = _source_ok_T_8 | _source_ok_T_9 | _source_ok_T_10; // @[Parameters.scala 1125:46]
+  wire [26:0] _is_aligned_mask_T_7 = 27'hfff << io_in_c_bits_size; // @[package.scala 234:77]
+  wire [11:0] is_aligned_mask_2 = ~_is_aligned_mask_T_7[11:0]; // @[package.scala 234:46]
+  wire [30:0] _GEN_89 = {{19'd0}, is_aligned_mask_2}; // @[Edges.scala 20:16]
+  wire [30:0] _is_aligned_T_2 = io_in_c_bits_address & _GEN_89; // @[Edges.scala 20:16]
+  wire  is_aligned_2 = _is_aligned_T_2 == 31'h0; // @[Edges.scala 20:24]
+  wire [30:0] _address_ok_T_136 = io_in_c_bits_address ^ 31'h3000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_137 = {1'b0,$signed(_address_ok_T_136)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_139 = $signed(_address_ok_T_137) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_140 = $signed(_address_ok_T_139) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_141 = io_in_c_bits_address ^ 31'h10013000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_142 = {1'b0,$signed(_address_ok_T_141)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_144 = $signed(_address_ok_T_142) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_145 = $signed(_address_ok_T_144) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_146 = io_in_c_bits_address ^ 31'h10023000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_147 = {1'b0,$signed(_address_ok_T_146)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_149 = $signed(_address_ok_T_147) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_150 = $signed(_address_ok_T_149) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_151 = io_in_c_bits_address ^ 31'h10033000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_152 = {1'b0,$signed(_address_ok_T_151)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_154 = $signed(_address_ok_T_152) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_155 = $signed(_address_ok_T_154) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_156 = io_in_c_bits_address ^ 31'h10043000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_157 = {1'b0,$signed(_address_ok_T_156)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_159 = $signed(_address_ok_T_157) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_160 = $signed(_address_ok_T_159) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_161 = io_in_c_bits_address ^ 31'h10053000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_162 = {1'b0,$signed(_address_ok_T_161)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_164 = $signed(_address_ok_T_162) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_165 = $signed(_address_ok_T_164) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_166 = io_in_c_bits_address ^ 31'h10014000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_167 = {1'b0,$signed(_address_ok_T_166)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_169 = $signed(_address_ok_T_167) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_170 = $signed(_address_ok_T_169) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_171 = io_in_c_bits_address ^ 31'h20000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_172 = {1'b0,$signed(_address_ok_T_171)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_174 = $signed(_address_ok_T_172) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_175 = $signed(_address_ok_T_174) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_176 = io_in_c_bits_address ^ 31'h10034000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_177 = {1'b0,$signed(_address_ok_T_176)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_179 = $signed(_address_ok_T_177) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_180 = $signed(_address_ok_T_179) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_181 = io_in_c_bits_address ^ 31'h10024000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_182 = {1'b0,$signed(_address_ok_T_181)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_184 = $signed(_address_ok_T_182) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_185 = $signed(_address_ok_T_184) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_186 = io_in_c_bits_address ^ 31'h10012000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_187 = {1'b0,$signed(_address_ok_T_186)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_189 = $signed(_address_ok_T_187) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_190 = $signed(_address_ok_T_189) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_191 = io_in_c_bits_address ^ 31'h10015000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_192 = {1'b0,$signed(_address_ok_T_191)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_194 = $signed(_address_ok_T_192) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_195 = $signed(_address_ok_T_194) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_196 = io_in_c_bits_address ^ 31'h10025000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_197 = {1'b0,$signed(_address_ok_T_196)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_199 = $signed(_address_ok_T_197) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_200 = $signed(_address_ok_T_199) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_201 = io_in_c_bits_address ^ 31'h10035000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_202 = {1'b0,$signed(_address_ok_T_201)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_204 = $signed(_address_ok_T_202) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_205 = $signed(_address_ok_T_204) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_206 = io_in_c_bits_address ^ 31'h10016000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_207 = {1'b0,$signed(_address_ok_T_206)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_209 = $signed(_address_ok_T_207) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_210 = $signed(_address_ok_T_209) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_211 = io_in_c_bits_address ^ 31'h10026000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_212 = {1'b0,$signed(_address_ok_T_211)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_214 = $signed(_address_ok_T_212) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_215 = $signed(_address_ok_T_214) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_216 = io_in_c_bits_address ^ 31'hc000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_217 = {1'b0,$signed(_address_ok_T_216)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_219 = $signed(_address_ok_T_217) & -32'sh4000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_220 = $signed(_address_ok_T_219) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_221 = io_in_c_bits_address ^ 31'h2000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_222 = {1'b0,$signed(_address_ok_T_221)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_224 = $signed(_address_ok_T_222) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_225 = $signed(_address_ok_T_224) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _address_ok_T_227 = {1'b0,$signed(io_in_c_bits_address)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_229 = $signed(_address_ok_T_227) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_230 = $signed(_address_ok_T_229) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_231 = io_in_c_bits_address ^ 31'h8000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_232 = {1'b0,$signed(_address_ok_T_231)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_234 = $signed(_address_ok_T_232) & -32'sh4000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_235 = $signed(_address_ok_T_234) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_236 = io_in_c_bits_address ^ 31'h10000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_237 = {1'b0,$signed(_address_ok_T_236)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_239 = $signed(_address_ok_T_237) & -32'sh1000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_240 = $signed(_address_ok_T_239) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_241 = io_in_c_bits_address ^ 31'h10000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_242 = {1'b0,$signed(_address_ok_T_241)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_244 = $signed(_address_ok_T_242) & -32'sh10000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_245 = $signed(_address_ok_T_244) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [30:0] _address_ok_T_246 = io_in_c_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _address_ok_T_247 = {1'b0,$signed(_address_ok_T_246)}; // @[Parameters.scala 137:49]
+  wire [31:0] _address_ok_T_249 = $signed(_address_ok_T_247) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _address_ok_T_250 = $signed(_address_ok_T_249) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  address_ok_1 = _address_ok_T_140 | _address_ok_T_145 | _address_ok_T_150 | _address_ok_T_155 | _address_ok_T_160
+     | _address_ok_T_165 | _address_ok_T_170 | _address_ok_T_175 | _address_ok_T_180 | _address_ok_T_185 |
+    _address_ok_T_190 | _address_ok_T_195 | _address_ok_T_200 | _address_ok_T_205 | _address_ok_T_210 |
+    _address_ok_T_215 | _address_ok_T_220 | _address_ok_T_225 | _address_ok_T_230 | _address_ok_T_235 |
+    _address_ok_T_240 | _address_ok_T_245 | _address_ok_T_250; // @[Parameters.scala 622:64]
+  wire  _T_2341 = io_in_c_bits_opcode == 3'h4; // @[Monitor.scala 242:25]
+  wire  _T_2348 = io_in_c_bits_size >= 4'h2; // @[Monitor.scala 245:30]
+  wire  _T_2355 = io_in_c_bits_param <= 3'h5; // @[Bundles.scala 120:29]
+  wire  _T_2363 = io_in_c_bits_opcode == 3'h5; // @[Monitor.scala 251:25]
+  wire  _T_2381 = io_in_c_bits_opcode == 3'h6; // @[Monitor.scala 259:25]
+  wire  _T_2383 = io_in_c_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_2390 = _T_2383 & source_ok_2; // @[Parameters.scala 1160:30]
+  wire [31:0] _T_2396 = $signed(_address_ok_T_227) & -32'sh10001000; // @[Parameters.scala 137:52]
+  wire  _T_2397 = $signed(_T_2396) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2426 = $signed(_address_ok_T_187) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_2427 = $signed(_T_2426) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2431 = $signed(_address_ok_T_167) & -32'sh2000; // @[Parameters.scala 137:52]
+  wire  _T_2432 = $signed(_T_2431) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2441 = $signed(_address_ok_T_147) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_2442 = $signed(_T_2441) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2446 = $signed(_address_ok_T_182) & -32'sh12000; // @[Parameters.scala 137:52]
+  wire  _T_2447 = $signed(_T_2446) == 32'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_2456 = $signed(_address_ok_T_157) & -32'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_2457 = $signed(_T_2456) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_2478 = io_in_c_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_2486 = _T_2478 & _address_ok_T_250; // @[Parameters.scala 670:56]
+  wire  _T_2489 = _T_2390 & _T_2486; // @[Monitor.scala 260:78]
+  wire  _T_2496 = 4'h6 == io_in_c_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_2497 = _source_ok_T_8 & _T_2496; // @[Mux.scala 27:73]
+  wire  _T_2594 = _T_2397 | _address_ok_T_140 | _address_ok_T_245 | _address_ok_T_225 | _address_ok_T_235 |
+    _address_ok_T_220 | _T_2427 | _T_2432 | _address_ok_T_210 | _T_2442 | _T_2447 | _address_ok_T_215 | _T_2457 |
+    _address_ok_T_175 | _address_ok_T_250; // @[Parameters.scala 671:42]
+  wire  _T_2595 = _T_2383 & _T_2594; // @[Parameters.scala 670:56]
+  wire  _T_2597 = _T_2497 & _T_2595; // @[Monitor.scala 261:78]
+  wire  _T_2619 = io_in_c_bits_opcode == 3'h7; // @[Monitor.scala 269:25]
+  wire  _T_2853 = io_in_c_bits_opcode == 3'h0; // @[Monitor.scala 278:25]
+  wire  _T_2863 = io_in_c_bits_param == 3'h0; // @[Monitor.scala 282:31]
+  wire  _T_2871 = io_in_c_bits_opcode == 3'h1; // @[Monitor.scala 286:25]
+  wire  _T_2885 = io_in_c_bits_opcode == 3'h2; // @[Monitor.scala 293:25]
+  wire  _a_first_T = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] a_first_beats1_decode = is_aligned_mask[11:2]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [9:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1 = a_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [3:0] size; // @[Monitor.scala 386:22]
+  reg [1:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_2907 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_2908 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_2912 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_2916 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_2920 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_2924 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  _d_first_T = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _d_first_beats1_decode_T_1 = 27'hfff << io_in_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _d_first_beats1_decode_T_3 = ~_d_first_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [9:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:2]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [9:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1 = d_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [1:0] source_1; // @[Monitor.scala 538:22]
+  reg [1:0] sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_2931 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_2932 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_2936 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_2940 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_2944 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_2948 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_2952 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  wire  b_first_done = io_in_b_ready & io_in_b_valid; // @[Decoupled.scala 50:35]
+  reg [9:0] b_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] b_first_counter1 = b_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  b_first = b_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_2; // @[Monitor.scala 407:22]
+  reg [1:0] param_2; // @[Monitor.scala 408:22]
+  reg [3:0] size_2; // @[Monitor.scala 409:22]
+  reg [1:0] source_2; // @[Monitor.scala 410:22]
+  reg [30:0] address_1; // @[Monitor.scala 411:22]
+  wire  _T_2959 = io_in_b_valid & ~b_first; // @[Monitor.scala 412:19]
+  wire  _T_2960 = io_in_b_bits_opcode == opcode_2; // @[Monitor.scala 413:32]
+  wire  _T_2964 = io_in_b_bits_param == param_2; // @[Monitor.scala 414:32]
+  wire  _T_2968 = io_in_b_bits_size == size_2; // @[Monitor.scala 415:32]
+  wire  _T_2972 = io_in_b_bits_source == source_2; // @[Monitor.scala 416:32]
+  wire  _T_2976 = io_in_b_bits_address == address_1; // @[Monitor.scala 417:32]
+  wire  _c_first_T = io_in_c_ready & io_in_c_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] c_first_beats1_decode = is_aligned_mask_2[11:2]; // @[Edges.scala 219:59]
+  wire  c_first_beats1_opdata = io_in_c_bits_opcode[0]; // @[Edges.scala 101:36]
+  reg [9:0] c_first_counter; // @[Edges.scala 228:27]
+  wire [9:0] c_first_counter1 = c_first_counter - 10'h1; // @[Edges.scala 229:28]
+  wire  c_first = c_first_counter == 10'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_3; // @[Monitor.scala 512:22]
+  reg [2:0] param_3; // @[Monitor.scala 513:22]
+  reg [3:0] size_3; // @[Monitor.scala 514:22]
+  reg [1:0] source_3; // @[Monitor.scala 515:22]
+  reg [30:0] address_2; // @[Monitor.scala 516:22]
+  wire  _T_2983 = io_in_c_valid & ~c_first; // @[Monitor.scala 517:19]
+  wire  _T_2984 = io_in_c_bits_opcode == opcode_3; // @[Monitor.scala 518:32]
+  wire  _T_2988 = io_in_c_bits_param == param_3; // @[Monitor.scala 519:32]
+  wire  _T_2992 = io_in_c_bits_size == size_3; // @[Monitor.scala 520:32]
+  wire  _T_2996 = io_in_c_bits_source == source_3; // @[Monitor.scala 521:32]
+  wire  _T_3000 = io_in_c_bits_address == address_2; // @[Monitor.scala 522:32]
+  reg [2:0] inflight; // @[Monitor.scala 611:27]
+  reg [11:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [23:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [9:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] a_first_counter1_1 = a_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_1 = d_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  wire [3:0] _GEN_90 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [4:0] _a_opcode_lookup_T = {{1'd0}, _GEN_90}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_91 = {{4'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_91 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [4:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [23:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [23:0] _GEN_93 = {{8'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_93; // @[Monitor.scala 638:91]
+  wire [23:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[23:1]}; // @[Monitor.scala 638:144]
+  wire  _T_3006 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [3:0] _a_set_wo_ready_T = 4'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_27 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_3009 = _a_first_T & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [4:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [4:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 5'h1; // @[Monitor.scala 655:59]
+  wire [3:0] _GEN_95 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [4:0] _a_opcodes_set_T = {{1'd0}, _GEN_95}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = _a_first_T & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [34:0] _GEN_1 = {{31'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [34:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [4:0] _a_sizes_set_T = {io_in_a_bits_source, 3'h0}; // @[Monitor.scala 657:77]
+  wire [4:0] a_sizes_set_interm = _a_first_T & a_first_1 ? _a_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 652:72 655:28]
+  wire [35:0] _GEN_2 = {{31'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [35:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2:0] _T_3011 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_3013 = ~_T_3011[0]; // @[Monitor.scala 658:17]
+  wire [3:0] _GEN_28 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 4'h0; // @[Monitor.scala 652:72 653:28]
+  wire [34:0] _GEN_31 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 35'h0; // @[Monitor.scala 652:72 656:28]
+  wire [35:0] _GEN_32 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 36'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_3017 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_3019 = ~_T_1308; // @[Monitor.scala 671:74]
+  wire  _T_3020 = io_in_d_valid & d_first_1 & ~_T_1308; // @[Monitor.scala 671:71]
+  wire [3:0] _d_clr_wo_ready_T = 4'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_33 = io_in_d_valid & d_first_1 & ~_T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 671:90 672:22]
+  wire [46:0] _GEN_3 = {{31'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [46:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [46:0] _GEN_4 = {{31'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [46:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [3:0] _GEN_34 = _d_first_T & d_first_1 & _T_3019 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 675:91 676:21]
+  wire [46:0] _GEN_35 = _d_first_T & d_first_1 & _T_3019 ? _d_opcodes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 677:21]
+  wire [46:0] _GEN_36 = _d_first_T & d_first_1 & _T_3019 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_3006 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_3030 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_3032 = _T_3030[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_39 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_40 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_39; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_41 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_40; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_42 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_41; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_43 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_42; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_44 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_43; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_51 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_42; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_52 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_51; // @[Monitor.scala 686:{39,39}]
+  wire  _T_3037 = io_in_d_bits_opcode == _GEN_52; // @[Monitor.scala 686:39]
+  wire  _T_3038 = io_in_d_bits_opcode == _GEN_44 | _T_3037; // @[Monitor.scala 685:77]
+  wire  _T_3042 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_55 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_56 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_55; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_57 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_56; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_58 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_57; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_59 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_58; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_60 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_59; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_67 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_58; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_68 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_67; // @[Monitor.scala 690:{38,38}]
+  wire  _T_3049 = io_in_d_bits_opcode == _GEN_68; // @[Monitor.scala 690:38]
+  wire  _T_3050 = io_in_d_bits_opcode == _GEN_60 | _T_3049; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_97 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_3054 = _GEN_97 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_3064 = _T_3017 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_3019; // @[Monitor.scala 694:116]
+  wire  _T_3065 = ~io_in_d_ready; // @[Monitor.scala 695:15]
+  wire  _T_3066 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2:0] a_set_wo_ready = _GEN_27[2:0];
+  wire [2:0] d_clr_wo_ready = _GEN_33[2:0];
+  wire  _T_3073 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [2:0] a_set = _GEN_28[2:0];
+  wire [2:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2:0] d_clr = _GEN_34[2:0];
+  wire [2:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [11:0] a_opcodes_set = _GEN_31[11:0];
+  wire [11:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [11:0] d_opcodes_clr = _GEN_35[11:0];
+  wire [11:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [11:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [23:0] a_sizes_set = _GEN_32[23:0];
+  wire [23:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [23:0] d_sizes_clr = _GEN_36[23:0];
+  wire [23:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [23:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_3082 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [23:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [9:0] c_first_counter_1; // @[Edges.scala 228:27]
+  wire [9:0] c_first_counter1_1 = c_first_counter_1 - 10'h1; // @[Edges.scala 229:28]
+  wire  c_first_1 = c_first_counter_1 == 10'h0; // @[Edges.scala 230:25]
+  reg [9:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_2 = d_first_counter_2 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 10'h0; // @[Edges.scala 230:25]
+  wire [23:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [23:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_93; // @[Monitor.scala 747:93]
+  wire [23:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[23:1]}; // @[Monitor.scala 747:146]
+  wire  _T_3092 = io_in_c_bits_opcode[2] & io_in_c_bits_opcode[1]; // @[Edges.scala 67:40]
+  wire  _T_3093 = io_in_c_valid & c_first_1 & _T_3092; // @[Monitor.scala 756:37]
+  wire [3:0] _c_set_wo_ready_T = 4'h1 << io_in_c_bits_source; // @[OneHot.scala 57:35]
+  wire [3:0] _GEN_72 = io_in_c_valid & c_first_1 & _T_3092 ? _c_set_wo_ready_T : 4'h0; // @[Monitor.scala 756:71 757:22]
+  wire  _T_3099 = _c_first_T & c_first_1 & _T_3092; // @[Monitor.scala 760:38]
+  wire [4:0] _c_sizes_set_interm_T = {io_in_c_bits_size, 1'h0}; // @[Monitor.scala 763:51]
+  wire [4:0] _c_sizes_set_interm_T_1 = _c_sizes_set_interm_T | 5'h1; // @[Monitor.scala 763:59]
+  wire [4:0] _c_sizes_set_T = {io_in_c_bits_source, 3'h0}; // @[Monitor.scala 765:77]
+  wire [4:0] c_sizes_set_interm = _c_first_T & c_first_1 & _T_3092 ? _c_sizes_set_interm_T_1 : 5'h0; // @[Monitor.scala 760:72 763:28]
+  wire [35:0] _GEN_5 = {{31'd0}, c_sizes_set_interm}; // @[Monitor.scala 765:52]
+  wire [35:0] _c_sizes_set_T_1 = _GEN_5 << _c_sizes_set_T; // @[Monitor.scala 765:52]
+  wire [2:0] _T_3100 = inflight_1 >> io_in_c_bits_source; // @[Monitor.scala 766:26]
+  wire  _T_3102 = ~_T_3100[0]; // @[Monitor.scala 766:17]
+  wire [3:0] _GEN_73 = _c_first_T & c_first_1 & _T_3092 ? _c_set_wo_ready_T : 4'h0; // @[Monitor.scala 760:72 761:28]
+  wire [35:0] _GEN_77 = _c_first_T & c_first_1 & _T_3092 ? _c_sizes_set_T_1 : 36'h0; // @[Monitor.scala 760:72 765:28]
+  wire  _T_3106 = io_in_d_valid & d_first_2; // @[Monitor.scala 779:26]
+  wire  _T_3108 = io_in_d_valid & d_first_2 & _T_1308; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_78 = io_in_d_valid & d_first_2 & _T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 779:89 780:22]
+  wire [3:0] _GEN_79 = _d_first_T & d_first_2 & _T_1308 ? _d_clr_wo_ready_T : 4'h0; // @[Monitor.scala 783:90 784:21]
+  wire [46:0] _GEN_81 = _d_first_T & d_first_2 & _T_1308 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire  _same_cycle_resp_T_8 = io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:113]
+  wire  same_cycle_resp_1 = _T_3093 & io_in_c_bits_source == io_in_d_bits_source; // @[Monitor.scala 790:88]
+  wire [2:0] _T_3116 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire  _T_3118 = _T_3116[0] | same_cycle_resp_1; // @[Monitor.scala 791:49]
+  wire  _T_3122 = io_in_d_bits_size == io_in_c_bits_size; // @[Monitor.scala 793:36]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_3126 = _GEN_97 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire  _T_3135 = _T_3106 & c_first_1 & io_in_c_valid & _same_cycle_resp_T_8 & _T_1308; // @[Monitor.scala 799:116]
+  wire  _T_3137 = _T_3065 | io_in_c_ready; // @[Monitor.scala 800:32]
+  wire [2:0] c_set_wo_ready = _GEN_72[2:0];
+  wire  _T_3141 = |c_set_wo_ready; // @[Monitor.scala 804:28]
+  wire [2:0] d_clr_wo_ready_1 = _GEN_78[2:0];
+  wire  _T_3142 = c_set_wo_ready != d_clr_wo_ready_1; // @[Monitor.scala 805:31]
+  wire [2:0] c_set = _GEN_73[2:0];
+  wire [2:0] _inflight_T_3 = inflight_1 | c_set; // @[Monitor.scala 809:35]
+  wire [2:0] d_clr_1 = _GEN_79[2:0];
+  wire [2:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2:0] _inflight_T_5 = _inflight_T_3 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [23:0] c_sizes_set = _GEN_77[23:0];
+  wire [23:0] _inflight_sizes_T_3 = inflight_sizes_1 | c_sizes_set; // @[Monitor.scala 811:41]
+  wire [23:0] d_sizes_clr_1 = _GEN_81[23:0];
+  wire [23:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [23:0] _inflight_sizes_T_5 = _inflight_sizes_T_3 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_3151 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  reg [3:0] inflight_2; // @[Monitor.scala 823:27]
+  reg [9:0] d_first_counter_3; // @[Edges.scala 228:27]
+  wire [9:0] d_first_counter1_3 = d_first_counter_3 - 10'h1; // @[Edges.scala 229:28]
+  wire  d_first_3 = d_first_counter_3 == 10'h0; // @[Edges.scala 230:25]
+  wire  _T_3163 = io_in_d_bits_opcode[2] & ~io_in_d_bits_opcode[1]; // @[Edges.scala 70:40]
+  wire  _T_3164 = _d_first_T & d_first_3 & _T_3163; // @[Monitor.scala 829:38]
+  wire [3:0] _d_set_T = 4'h1 << io_in_d_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_3165 = inflight_2 >> io_in_d_bits_sink; // @[Monitor.scala 831:23]
+  wire  _T_3167 = ~_T_3165[0]; // @[Monitor.scala 831:14]
+  wire [3:0] d_set = _d_first_T & d_first_3 & _T_3163 ? _d_set_T : 4'h0; // @[Monitor.scala 829:72 830:13]
+  wire  _T_3171 = io_in_e_ready & io_in_e_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _e_clr_T = 4'h1 << io_in_e_bits_sink; // @[OneHot.scala 57:35]
+  wire [3:0] _T_3174 = d_set | inflight_2; // @[Monitor.scala 837:24]
+  wire [3:0] _T_3175 = _T_3174 >> io_in_e_bits_sink; // @[Monitor.scala 837:35]
+  wire [3:0] e_clr = _T_3171 ? _e_clr_T : 4'h0; // @[Monitor.scala 835:73 836:13]
+  wire [3:0] _inflight_T_6 = inflight_2 | d_set; // @[Monitor.scala 842:27]
+  wire [3:0] _inflight_T_7 = ~e_clr; // @[Monitor.scala 842:38]
+  wire [3:0] _inflight_T_8 = _inflight_T_6 & _inflight_T_7; // @[Monitor.scala 842:36]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter <= a_first_beats1_decode;
+        end else begin
+          a_first_counter <= 10'h0;
+        end
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (_a_first_T & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter <= d_first_beats1_decode;
+        end else begin
+          d_first_counter <= 10'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (_d_first_T & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      b_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (b_first_done) begin // @[Edges.scala 234:17]
+      if (b_first) begin // @[Edges.scala 235:21]
+        b_first_counter <= 10'h0;
+      end else begin
+        b_first_counter <= b_first_counter1;
+      end
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      opcode_2 <= io_in_b_bits_opcode; // @[Monitor.scala 420:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      param_2 <= io_in_b_bits_param; // @[Monitor.scala 421:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      size_2 <= io_in_b_bits_size; // @[Monitor.scala 422:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      source_2 <= io_in_b_bits_source; // @[Monitor.scala 423:15]
+    end
+    if (b_first_done & b_first) begin // @[Monitor.scala 419:32]
+      address_1 <= io_in_b_bits_address; // @[Monitor.scala 424:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter <= c_first_beats1_decode;
+        end else begin
+          c_first_counter <= 10'h0;
+        end
+      end else begin
+        c_first_counter <= c_first_counter1;
+      end
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      opcode_3 <= io_in_c_bits_opcode; // @[Monitor.scala 525:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      param_3 <= io_in_c_bits_param; // @[Monitor.scala 526:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      size_3 <= io_in_c_bits_size; // @[Monitor.scala 527:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      source_3 <= io_in_c_bits_source; // @[Monitor.scala 528:15]
+    end
+    if (_c_first_T & c_first) begin // @[Monitor.scala 524:32]
+      address_2 <= io_in_c_bits_address; // @[Monitor.scala 529:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 3'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 12'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 24'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_a_first_T) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        if (a_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          a_first_counter_1 <= a_first_beats1_decode;
+        end else begin
+          a_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_1 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (_a_first_T | _d_first_T) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 3'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 24'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      c_first_counter_1 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_c_first_T) begin // @[Edges.scala 234:17]
+      if (c_first_1) begin // @[Edges.scala 235:21]
+        if (c_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          c_first_counter_1 <= c_first_beats1_decode;
+        end else begin
+          c_first_counter_1 <= 10'h0;
+        end
+      end else begin
+        c_first_counter_1 <= c_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_2 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_2 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (_c_first_T | _d_first_T) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    if (reset) begin // @[Monitor.scala 823:27]
+      inflight_2 <= 4'h0; // @[Monitor.scala 823:27]
+    end else begin
+      inflight_2 <= _inflight_T_8; // @[Monitor.scala 842:14]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_3 <= 10'h0; // @[Edges.scala 228:27]
+    end else if (_d_first_T) begin // @[Edges.scala 234:17]
+      if (d_first_3) begin // @[Edges.scala 235:21]
+        if (d_first_beats1_opdata) begin // @[Edges.scala 220:14]
+          d_first_counter_3 <= d_first_beats1_decode;
+        end else begin
+          d_first_counter_3 <= 10'h0;
+        end
+      end else begin
+        d_first_counter_3 <= d_first_counter1_3;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_141 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_141) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_249 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_249) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_263 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_263) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_268 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_33 & ~reset & ~_T_268) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_141 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_141) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_249 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_249) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_263 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_263) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_510 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_510) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_268 & (io_in_a_valid & _T_276 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_276 & ~reset & ~_T_268) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_42 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_42) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_636 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_636) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_523 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_523 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_771 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_771) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_658 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_658 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_902 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_902) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_918 & (io_in_a_valid & _T_789 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_789 & ~reset & ~_T_918) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1030 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_1030) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1040 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_1040) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_922 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_922 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1030 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_1030) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1166 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_1166) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_1048 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1048 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1282 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_1282) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1292 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_1292) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_a_valid & _T_1174 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1174 & ~reset & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1304 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_1304) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1324 & (io_in_d_valid & _T_1308 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1308 & _T_2 & ~_T_1324) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1339 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1339) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1343 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1343) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1328 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1328 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1312 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1312) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1339 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1339) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1343 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1343) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1376 & (io_in_d_valid & _T_1356 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1356 & _T_2 & ~_T_1376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1385 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1385 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1376 & (io_in_d_valid & _T_1402 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1402 & _T_2 & ~_T_1376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_1 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1316 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~_T_1316) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1320 & (io_in_d_valid & _T_1420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1420 & _T_2 & ~_T_1320) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1437 & (io_in_b_valid & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & ~reset & ~_T_1437) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel has invalid opcode (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1575 & (io_in_b_valid & _T_1470 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1470 & _T_2 & ~_T_1575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Probe type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok & (io_in_b_valid & _T_1470 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1470 & _T_2 & ~address_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~legal_source & (io_in_b_valid & _T_1470 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1470 & _T_2 & ~legal_source) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries source that is not first source (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_1 & (io_in_b_valid & _T_1470 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1470 & _T_2 & ~is_aligned_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1588 & (io_in_b_valid & _T_1470 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1470 & _T_2 & ~_T_1588) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe carries invalid cap param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1592 & (io_in_b_valid & _T_1470 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1470 & _T_2 & ~_T_1592) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1596 & (io_in_b_valid & _T_1470 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1470 & _T_2 & ~_T_1596) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Probe is corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1600 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1600 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Get type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1581 & (io_in_b_valid & _T_1600 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1600 & ~reset & _T_1581) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1584 & (io_in_b_valid & _T_1600 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1600 & ~reset & _T_1584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get carries source that is not first source (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1587 & (io_in_b_valid & _T_1600 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1600 & ~reset & _T_1587) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1709 & (io_in_b_valid & _T_1600 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1600 & ~reset & ~_T_1709) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1595 & (io_in_b_valid & _T_1600 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1600 & ~reset & _T_1595) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1599 & (io_in_b_valid & _T_1600 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1600 & ~reset & _T_1599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Get is corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1721 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1721 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1581 & (io_in_b_valid & _T_1721 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1721 & ~reset & _T_1581) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1584 & (io_in_b_valid & _T_1721 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1721 & ~reset & _T_1584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull carries source that is not first source (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1587 & (io_in_b_valid & _T_1721 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1721 & ~reset & _T_1587) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1709 & (io_in_b_valid & _T_1721 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1721 & ~reset & ~_T_1709) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1595 & (io_in_b_valid & _T_1721 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1721 & ~reset & _T_1595) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutFull contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1838 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1838 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1581 & (io_in_b_valid & _T_1838 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1838 & ~reset & _T_1581) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1584 & (io_in_b_valid & _T_1838 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1838 & ~reset & _T_1584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial carries source that is not first source (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1587 & (io_in_b_valid & _T_1838 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1838 & ~reset & _T_1587) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1709 & (io_in_b_valid & _T_1838 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1838 & ~reset & ~_T_1709) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1953 & (io_in_b_valid & _T_1838 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1838 & ~reset & ~_T_1953) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1957 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1957 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Arithmetic type unsupported by master (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1581 & (io_in_b_valid & _T_1957 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1957 & ~reset & _T_1581) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Arithmetic carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1584 & (io_in_b_valid & _T_1957 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1957 & ~reset & _T_1584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Arithmetic carries source that is not first source (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1587 & (io_in_b_valid & _T_1957 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1957 & ~reset & _T_1587) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1595 & (io_in_b_valid & _T_1957 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_1957 & ~reset & _T_1595) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2074 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2074 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Logical type unsupported by client (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1581 & (io_in_b_valid & _T_2074 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2074 & ~reset & _T_1581) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Logical carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1584 & (io_in_b_valid & _T_2074 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2074 & ~reset & _T_1584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Logical carries source that is not first source (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1587 & (io_in_b_valid & _T_2074 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2074 & ~reset & _T_1587) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Logical address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1595 & (io_in_b_valid & _T_2074 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2074 & ~reset & _T_1595) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Logical contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2191 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2191 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel carries Hint type unsupported by client (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1581 & (io_in_b_valid & _T_2191 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2191 & ~reset & _T_1581) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1584 & (io_in_b_valid & _T_2191 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2191 & ~reset & _T_1584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint carries source that is not first source (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1587 & (io_in_b_valid & _T_2191 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2191 & ~reset & _T_1587) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1595 & (io_in_b_valid & _T_2191 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2191 & ~reset & _T_1595) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint contains invalid mask (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1599 & (io_in_b_valid & _T_2191 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_b_valid & _T_2191 & ~reset & _T_1599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel Hint is corrupt (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2341 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2341 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAck carries invalid report param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2363 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2363 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ProbeAckData carries invalid report param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2489 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2489) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release type unsupported by manager (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2597 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2381 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel Release carries invalid report param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2489 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2489) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries ReleaseData type unsupported by manager (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2597 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2597) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel carries Release from a client which does not support Probe (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2348 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2348) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData smaller than a beat (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2355 & (io_in_c_valid & _T_2619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2619 & ~reset & ~_T_2355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel ReleaseData carries invalid report param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2853 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2853 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAck carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2871 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2871 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel AccessAckData carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~address_ok_1 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~address_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries unmanaged address (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok_2 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~source_ok_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned_2 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~is_aligned_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck address not aligned to size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2863 & (io_in_c_valid & _T_2885 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_c_valid & _T_2885 & ~reset & ~_T_2863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel HintAck carries invalid param (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2908 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2908) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2912 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2912) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2916 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2916) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2920 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2920) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2924 & (_T_2907 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2907 & ~reset & ~_T_2924) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2932 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2932) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2936 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2936) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2940 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2940) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2944 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2944) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2948 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2948) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2952 & (_T_2931 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2931 & _T_2 & ~_T_2952) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2960 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2960) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2964 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2964) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel param changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2968 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2968) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel size changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2972 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2972) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel source changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2976 & (_T_2959 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2959 & ~reset & ~_T_2976) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'B' channel addresss changed with multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2984 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2984) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2988 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2988) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel param changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2992 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2992) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel size changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_2996 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_2996) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel source changed within multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3000 & (_T_2983 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2983 & ~reset & ~_T_3000) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel address changed with multibeat operation (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3013 & (_T_3009 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3009 & ~reset & ~_T_3013) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3032 & (_T_3020 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & _T_2 & ~_T_3032) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3038 & (_T_3020 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & same_cycle_resp & _T_2 & ~_T_3038) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3042 & (_T_3020 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & same_cycle_resp & _T_2 & ~_T_3042) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3050 & (_T_3020 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & ~same_cycle_resp & _T_2 & ~_T_3050) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3054 & (_T_3020 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3020 & ~same_cycle_resp & _T_2 & ~_T_3054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3066 & (_T_3064 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3064 & _T_2 & ~_T_3066) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3073 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_3073) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 3 (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3082 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_3082) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3102 & (_T_3099 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3099 & ~reset & ~_T_3102) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' channel re-used a source ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3118 & (_T_3108 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & _T_2 & ~_T_3118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3122 & (_T_3108 & same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & same_cycle_resp_1 & _T_2 & ~_T_3122) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3126 & (_T_3108 & ~same_cycle_resp_1 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3108 & ~same_cycle_resp_1 & _T_2 & ~_T_3126) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3137 & (_T_3135 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3135 & _T_2 & ~_T_3137) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3142 & (_T_3141 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3141 & _T_2 & ~_T_3142) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'C' and 'D' concurrent, despite minlatency 3 (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3151 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_3151) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3167 & (_T_3164 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3164 & _T_2 & ~_T_3167) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel re-used a sink ID (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_3175[0] & (_T_3171 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3171 & ~reset & ~_T_3175[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'E' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:61:80)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[9:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[9:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  param_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  size_1 = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  source_1 = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  sink = _RAND_11[1:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  b_first_counter = _RAND_13[9:0];
+  _RAND_14 = {1{`RANDOM}};
+  opcode_2 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  param_2 = _RAND_15[1:0];
+  _RAND_16 = {1{`RANDOM}};
+  size_2 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  source_2 = _RAND_17[1:0];
+  _RAND_18 = {1{`RANDOM}};
+  address_1 = _RAND_18[30:0];
+  _RAND_19 = {1{`RANDOM}};
+  c_first_counter = _RAND_19[9:0];
+  _RAND_20 = {1{`RANDOM}};
+  opcode_3 = _RAND_20[2:0];
+  _RAND_21 = {1{`RANDOM}};
+  param_3 = _RAND_21[2:0];
+  _RAND_22 = {1{`RANDOM}};
+  size_3 = _RAND_22[3:0];
+  _RAND_23 = {1{`RANDOM}};
+  source_3 = _RAND_23[1:0];
+  _RAND_24 = {1{`RANDOM}};
+  address_2 = _RAND_24[30:0];
+  _RAND_25 = {1{`RANDOM}};
+  inflight = _RAND_25[2:0];
+  _RAND_26 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_26[11:0];
+  _RAND_27 = {1{`RANDOM}};
+  inflight_sizes = _RAND_27[23:0];
+  _RAND_28 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_28[9:0];
+  _RAND_29 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_29[9:0];
+  _RAND_30 = {1{`RANDOM}};
+  watchdog = _RAND_30[31:0];
+  _RAND_31 = {1{`RANDOM}};
+  inflight_1 = _RAND_31[2:0];
+  _RAND_32 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_32[23:0];
+  _RAND_33 = {1{`RANDOM}};
+  c_first_counter_1 = _RAND_33[9:0];
+  _RAND_34 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_34[9:0];
+  _RAND_35 = {1{`RANDOM}};
+  watchdog_1 = _RAND_35[31:0];
+  _RAND_36 = {1{`RANDOM}};
+  inflight_2 = _RAND_36[3:0];
+  _RAND_37 = {1{`RANDOM}};
+  d_first_counter_3 = _RAND_37[9:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_15(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [3:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [30:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input  [31:0] io_enq_bits_data,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [3:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [30:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [30:0] ram_address [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [30:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [30:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_mask [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = 1'h0;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[30:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_7[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_8 = {1{`RANDOM}};
+  value = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  value_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  maybe_full = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_16(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [1:0]  io_enq_bits_param,
+  input  [3:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [1:0]  io_enq_bits_sink,
+  input         io_enq_bits_denied,
+  input  [31:0] io_enq_bits_data,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [1:0]  io_deq_bits_param,
+  output [3:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [1:0]  io_deq_bits_sink,
+  output        io_deq_bits_denied,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_sink [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_sink_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_sink_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_denied [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_denied_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_denied_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_sink_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_sink_io_deq_bits_MPORT_addr = value_1;
+  assign ram_sink_io_deq_bits_MPORT_data = ram_sink[ram_sink_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_sink_MPORT_data = io_enq_bits_sink;
+  assign ram_sink_MPORT_addr = value;
+  assign ram_sink_MPORT_mask = 1'h1;
+  assign ram_sink_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_denied_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_denied_io_deq_bits_MPORT_addr = value_1;
+  assign ram_denied_io_deq_bits_MPORT_data = ram_denied[ram_denied_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_denied_MPORT_data = io_enq_bits_denied;
+  assign ram_denied_MPORT_addr = value;
+  assign ram_denied_MPORT_mask = 1'h1;
+  assign ram_denied_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = io_enq_bits_corrupt;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_sink = ram_sink_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_denied = ram_denied_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_sink_MPORT_en & ram_sink_MPORT_mask) begin
+      ram_sink[ram_sink_MPORT_addr] <= ram_sink_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_denied_MPORT_en & ram_denied_MPORT_mask) begin
+      ram_denied[ram_denied_MPORT_addr] <= ram_denied_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_sink[initvar] = _RAND_4[1:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_denied[initvar] = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_7[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_8 = {1{`RANDOM}};
+  value = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  value_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  maybe_full = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_17(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [1:0]  io_enq_bits_param,
+  input  [30:0] io_enq_bits_address,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [1:0]  io_deq_bits_param,
+  output [3:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [30:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [30:0] ram_address [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [30:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [30:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_mask [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = 3'h6;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = 4'h6;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = 2'h0;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = 4'hf;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = 1'h0;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[30:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_6[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_7 = {1{`RANDOM}};
+  value = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  value_1 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  maybe_full = _RAND_9[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_18(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [3:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [30:0] io_enq_bits_address,
+  input  [31:0] io_enq_bits_data,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [3:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [30:0] io_deq_bits_address,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [30:0] ram_address [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [30:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [30:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = 1'h0;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[30:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_6[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_7 = {1{`RANDOM}};
+  value = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  value_1 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  maybe_full = _RAND_9[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_19(
+  input        clock,
+  input        reset,
+  output       io_enq_ready,
+  input        io_enq_valid,
+  input  [1:0] io_enq_bits_sink,
+  output       io_deq_valid,
+  output [1:0] io_deq_bits_sink
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  reg [1:0] ram_sink [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_sink_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_sink_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_sink_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_sink_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  assign ram_sink_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_sink_io_deq_bits_MPORT_addr = value_1;
+  assign ram_sink_io_deq_bits_MPORT_data = ram_sink[ram_sink_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_sink_MPORT_data = io_enq_bits_sink;
+  assign ram_sink_MPORT_addr = value;
+  assign ram_sink_MPORT_mask = 1'h1;
+  assign ram_sink_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_sink = ram_sink_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_sink_MPORT_en & ram_sink_MPORT_mask) begin
+      ram_sink[ram_sink_MPORT_addr] <= ram_sink_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (io_deq_valid) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != io_deq_valid) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_sink[initvar] = _RAND_0[1:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_1 = {1{`RANDOM}};
+  value = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  value_1 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  maybe_full = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer_10(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [3:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_b_ready,
+  output        auto_in_b_valid,
+  output [2:0]  auto_in_b_bits_opcode,
+  output [1:0]  auto_in_b_bits_param,
+  output [3:0]  auto_in_b_bits_size,
+  output [1:0]  auto_in_b_bits_source,
+  output [30:0] auto_in_b_bits_address,
+  output [3:0]  auto_in_b_bits_mask,
+  output        auto_in_b_bits_corrupt,
+  output        auto_in_c_ready,
+  input         auto_in_c_valid,
+  input  [2:0]  auto_in_c_bits_opcode,
+  input  [2:0]  auto_in_c_bits_param,
+  input  [3:0]  auto_in_c_bits_size,
+  input  [1:0]  auto_in_c_bits_source,
+  input  [30:0] auto_in_c_bits_address,
+  input  [31:0] auto_in_c_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [3:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [1:0]  auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  output        auto_in_e_ready,
+  input         auto_in_e_valid,
+  input  [1:0]  auto_in_e_bits_sink,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [3:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_b_ready,
+  input         auto_out_b_valid,
+  input  [1:0]  auto_out_b_bits_param,
+  input  [30:0] auto_out_b_bits_address,
+  input         auto_out_c_ready,
+  output        auto_out_c_valid,
+  output [2:0]  auto_out_c_bits_opcode,
+  output [2:0]  auto_out_c_bits_param,
+  output [3:0]  auto_out_c_bits_size,
+  output [1:0]  auto_out_c_bits_source,
+  output [30:0] auto_out_c_bits_address,
+  output [31:0] auto_out_c_bits_data,
+  output        auto_out_c_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [1:0]  auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt,
+  output        auto_out_e_valid,
+  output [1:0]  auto_out_e_bits_sink
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_b_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_b_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_b_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_b_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_b_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_b_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_b_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_c_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_c_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_c_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_c_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_c_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_e_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_e_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_e_bits_sink; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [30:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [30:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleIn_0_d_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleIn_0_d_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_b_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_b_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_b_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_b_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_b_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [30:0] bundleIn_0_b_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_b_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_b_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_b_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_b_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleIn_0_b_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_b_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [30:0] bundleIn_0_b_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleIn_0_b_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_b_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_c_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_c_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_c_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_c_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_c_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_c_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_c_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_c_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [30:0] bundleOut_0_c_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_c_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_c_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_c_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_c_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_c_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_c_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_c_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [30:0] bundleOut_0_c_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_c_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_c_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_e_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_e_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_e_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_e_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_e_q_io_enq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_e_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_e_q_io_deq_bits_sink; // @[Decoupled.scala 361:21]
+  TLMonitor_45 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_b_ready(monitor_io_in_b_ready),
+    .io_in_b_valid(monitor_io_in_b_valid),
+    .io_in_b_bits_opcode(monitor_io_in_b_bits_opcode),
+    .io_in_b_bits_param(monitor_io_in_b_bits_param),
+    .io_in_b_bits_size(monitor_io_in_b_bits_size),
+    .io_in_b_bits_source(monitor_io_in_b_bits_source),
+    .io_in_b_bits_address(monitor_io_in_b_bits_address),
+    .io_in_b_bits_mask(monitor_io_in_b_bits_mask),
+    .io_in_b_bits_corrupt(monitor_io_in_b_bits_corrupt),
+    .io_in_c_ready(monitor_io_in_c_ready),
+    .io_in_c_valid(monitor_io_in_c_valid),
+    .io_in_c_bits_opcode(monitor_io_in_c_bits_opcode),
+    .io_in_c_bits_param(monitor_io_in_c_bits_param),
+    .io_in_c_bits_size(monitor_io_in_c_bits_size),
+    .io_in_c_bits_source(monitor_io_in_c_bits_source),
+    .io_in_c_bits_address(monitor_io_in_c_bits_address),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt),
+    .io_in_e_ready(monitor_io_in_e_ready),
+    .io_in_e_valid(monitor_io_in_e_valid),
+    .io_in_e_bits_sink(monitor_io_in_e_bits_sink)
+  );
+  Queue_15 bundleOut_0_a_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_a_q_clock),
+    .reset(bundleOut_0_a_q_reset),
+    .io_enq_ready(bundleOut_0_a_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_q_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_q_io_enq_bits_mask),
+    .io_enq_bits_data(bundleOut_0_a_q_io_enq_bits_data),
+    .io_deq_ready(bundleOut_0_a_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_q_io_deq_bits_mask),
+    .io_deq_bits_data(bundleOut_0_a_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_a_q_io_deq_bits_corrupt)
+  );
+  Queue_16 bundleIn_0_d_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleIn_0_d_q_clock),
+    .reset(bundleIn_0_d_q_reset),
+    .io_enq_ready(bundleIn_0_d_q_io_enq_ready),
+    .io_enq_valid(bundleIn_0_d_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleIn_0_d_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleIn_0_d_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleIn_0_d_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_q_io_enq_bits_source),
+    .io_enq_bits_sink(bundleIn_0_d_q_io_enq_bits_sink),
+    .io_enq_bits_denied(bundleIn_0_d_q_io_enq_bits_denied),
+    .io_enq_bits_data(bundleIn_0_d_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleIn_0_d_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleIn_0_d_q_io_deq_ready),
+    .io_deq_valid(bundleIn_0_d_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_d_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_d_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_d_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_d_q_io_deq_bits_source),
+    .io_deq_bits_sink(bundleIn_0_d_q_io_deq_bits_sink),
+    .io_deq_bits_denied(bundleIn_0_d_q_io_deq_bits_denied),
+    .io_deq_bits_data(bundleIn_0_d_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleIn_0_d_q_io_deq_bits_corrupt)
+  );
+  Queue_17 bundleIn_0_b_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleIn_0_b_q_clock),
+    .reset(bundleIn_0_b_q_reset),
+    .io_enq_ready(bundleIn_0_b_q_io_enq_ready),
+    .io_enq_valid(bundleIn_0_b_q_io_enq_valid),
+    .io_enq_bits_param(bundleIn_0_b_q_io_enq_bits_param),
+    .io_enq_bits_address(bundleIn_0_b_q_io_enq_bits_address),
+    .io_deq_ready(bundleIn_0_b_q_io_deq_ready),
+    .io_deq_valid(bundleIn_0_b_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_b_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_b_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_b_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_b_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleIn_0_b_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleIn_0_b_q_io_deq_bits_mask),
+    .io_deq_bits_corrupt(bundleIn_0_b_q_io_deq_bits_corrupt)
+  );
+  Queue_18 bundleOut_0_c_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_c_q_clock),
+    .reset(bundleOut_0_c_q_reset),
+    .io_enq_ready(bundleOut_0_c_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_c_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_c_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_c_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_c_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_c_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_c_q_io_enq_bits_address),
+    .io_enq_bits_data(bundleOut_0_c_q_io_enq_bits_data),
+    .io_deq_ready(bundleOut_0_c_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_c_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_c_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_c_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_c_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_c_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_c_q_io_deq_bits_address),
+    .io_deq_bits_data(bundleOut_0_c_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_c_q_io_deq_bits_corrupt)
+  );
+  Queue_19 bundleOut_0_e_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_e_q_clock),
+    .reset(bundleOut_0_e_q_reset),
+    .io_enq_ready(bundleOut_0_e_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_e_q_io_enq_valid),
+    .io_enq_bits_sink(bundleOut_0_e_q_io_enq_bits_sink),
+    .io_deq_valid(bundleOut_0_e_q_io_deq_valid),
+    .io_deq_bits_sink(bundleOut_0_e_q_io_deq_bits_sink)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_b_valid = bundleIn_0_b_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign auto_in_b_bits_opcode = bundleIn_0_b_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign auto_in_b_bits_param = bundleIn_0_b_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign auto_in_b_bits_size = bundleIn_0_b_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign auto_in_b_bits_source = bundleIn_0_b_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign auto_in_b_bits_address = bundleIn_0_b_q_io_deq_bits_address; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign auto_in_b_bits_mask = bundleIn_0_b_q_io_deq_bits_mask; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign auto_in_b_bits_corrupt = bundleIn_0_b_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign auto_in_c_ready = bundleOut_0_c_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_data = bundleIn_0_d_q_io_deq_bits_data; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_e_ready = bundleOut_0_e_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_out_a_valid = bundleOut_0_a_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_q_io_deq_bits_mask; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_data = bundleOut_0_a_q_io_deq_bits_data; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_b_ready = bundleIn_0_b_q_io_enq_ready; // @[Nodes.scala 1207:84 Decoupled.scala 365:17]
+  assign auto_out_c_valid = bundleOut_0_c_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 42:15]
+  assign auto_out_c_bits_opcode = bundleOut_0_c_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 42:15]
+  assign auto_out_c_bits_param = bundleOut_0_c_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 42:15]
+  assign auto_out_c_bits_size = bundleOut_0_c_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 42:15]
+  assign auto_out_c_bits_source = bundleOut_0_c_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 42:15]
+  assign auto_out_c_bits_address = bundleOut_0_c_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 42:15]
+  assign auto_out_c_bits_data = bundleOut_0_c_q_io_deq_bits_data; // @[Nodes.scala 1207:84 Buffer.scala 42:15]
+  assign auto_out_c_bits_corrupt = bundleOut_0_c_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 42:15]
+  assign auto_out_d_ready = bundleIn_0_d_q_io_enq_ready; // @[Nodes.scala 1207:84 Decoupled.scala 365:17]
+  assign auto_out_e_valid = bundleOut_0_e_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 43:15]
+  assign auto_out_e_bits_sink = bundleOut_0_e_q_io_deq_bits_sink; // @[Nodes.scala 1207:84 Buffer.scala 43:15]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_b_valid = bundleIn_0_b_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign monitor_io_in_b_bits_opcode = bundleIn_0_b_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign monitor_io_in_b_bits_param = bundleIn_0_b_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign monitor_io_in_b_bits_size = bundleIn_0_b_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign monitor_io_in_b_bits_source = bundleIn_0_b_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign monitor_io_in_b_bits_address = bundleIn_0_b_q_io_deq_bits_address; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign monitor_io_in_b_bits_mask = bundleIn_0_b_q_io_deq_bits_mask; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign monitor_io_in_b_bits_corrupt = bundleIn_0_b_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 41:15]
+  assign monitor_io_in_c_ready = bundleOut_0_c_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_c_valid = auto_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_source = auto_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_c_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign monitor_io_in_e_ready = bundleOut_0_e_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign monitor_io_in_e_valid = auto_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_e_bits_sink = auto_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_clock = clock;
+  assign bundleOut_0_a_q_reset = reset;
+  assign bundleOut_0_a_q_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_clock = clock;
+  assign bundleIn_0_d_q_reset = reset;
+  assign bundleIn_0_d_q_io_enq_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_param = auto_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_sink = auto_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_denied = auto_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_deq_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_b_q_clock = clock;
+  assign bundleIn_0_b_q_reset = reset;
+  assign bundleIn_0_b_q_io_enq_valid = auto_out_b_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_b_q_io_enq_bits_param = auto_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_b_q_io_enq_bits_address = auto_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_b_q_io_deq_ready = auto_in_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_c_q_clock = clock;
+  assign bundleOut_0_c_q_reset = reset;
+  assign bundleOut_0_c_q_io_enq_valid = auto_in_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_c_q_io_enq_bits_opcode = auto_in_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_c_q_io_enq_bits_param = auto_in_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_c_q_io_enq_bits_size = auto_in_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_c_q_io_enq_bits_source = auto_in_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_c_q_io_enq_bits_address = auto_in_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_c_q_io_enq_bits_data = auto_in_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_c_q_io_deq_ready = auto_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleOut_0_e_q_clock = clock;
+  assign bundleOut_0_e_q_reset = reset;
+  assign bundleOut_0_e_q_io_enq_valid = auto_in_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_e_q_io_enq_bits_sink = auto_in_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLBuffer_11(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [27:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [27:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module Queue_20(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [2:0]  io_enq_bits_param,
+  input  [2:0]  io_enq_bits_size,
+  input  [1:0]  io_enq_bits_source,
+  input  [27:0] io_enq_bits_address,
+  input  [3:0]  io_enq_bits_mask,
+  input  [31:0] io_enq_bits_data,
+  input         io_enq_bits_corrupt,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [2:0]  io_deq_bits_size,
+  output [1:0]  io_deq_bits_source,
+  output [27:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] ram_opcode [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_opcode_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_param [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_param_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_param_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] ram_size [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_source [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [27:0] ram_address [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_address_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [27:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [27:0] ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_address_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_mask [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  ram_corrupt [0:1]; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_corrupt_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  value; // @[Counter.scala 62:40]
+  reg  value_1; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = value == value_1; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_opcode_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_opcode_io_deq_bits_MPORT_addr = value_1;
+  assign ram_opcode_io_deq_bits_MPORT_data = ram_opcode[ram_opcode_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_opcode_MPORT_data = io_enq_bits_opcode;
+  assign ram_opcode_MPORT_addr = value;
+  assign ram_opcode_MPORT_mask = 1'h1;
+  assign ram_opcode_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_param_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_param_io_deq_bits_MPORT_addr = value_1;
+  assign ram_param_io_deq_bits_MPORT_data = ram_param[ram_param_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_param_MPORT_data = io_enq_bits_param;
+  assign ram_param_MPORT_addr = value;
+  assign ram_param_MPORT_mask = 1'h1;
+  assign ram_param_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_size_io_deq_bits_MPORT_addr = value_1;
+  assign ram_size_io_deq_bits_MPORT_data = ram_size[ram_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_size_MPORT_data = io_enq_bits_size;
+  assign ram_size_MPORT_addr = value;
+  assign ram_size_MPORT_mask = 1'h1;
+  assign ram_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_source_io_deq_bits_MPORT_addr = value_1;
+  assign ram_source_io_deq_bits_MPORT_data = ram_source[ram_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_source_MPORT_data = io_enq_bits_source;
+  assign ram_source_MPORT_addr = value;
+  assign ram_source_MPORT_mask = 1'h1;
+  assign ram_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_address_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_address_io_deq_bits_MPORT_addr = value_1;
+  assign ram_address_io_deq_bits_MPORT_data = ram_address[ram_address_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_address_MPORT_data = io_enq_bits_address;
+  assign ram_address_MPORT_addr = value;
+  assign ram_address_MPORT_mask = 1'h1;
+  assign ram_address_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = value_1;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = value;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = value_1;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = value;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_corrupt_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_corrupt_io_deq_bits_MPORT_addr = value_1;
+  assign ram_corrupt_io_deq_bits_MPORT_data = ram_corrupt[ram_corrupt_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_corrupt_MPORT_data = io_enq_bits_corrupt;
+  assign ram_corrupt_MPORT_addr = value;
+  assign ram_corrupt_MPORT_mask = 1'h1;
+  assign ram_corrupt_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_opcode = ram_opcode_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_param = ram_param_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_size = ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_source = ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_address = ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_corrupt = ram_corrupt_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_opcode_MPORT_en & ram_opcode_MPORT_mask) begin
+      ram_opcode[ram_opcode_MPORT_addr] <= ram_opcode_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_param_MPORT_en & ram_param_MPORT_mask) begin
+      ram_param[ram_param_MPORT_addr] <= ram_param_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_size_MPORT_en & ram_size_MPORT_mask) begin
+      ram_size[ram_size_MPORT_addr] <= ram_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_source_MPORT_en & ram_source_MPORT_mask) begin
+      ram_source[ram_source_MPORT_addr] <= ram_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_address_MPORT_en & ram_address_MPORT_mask) begin
+      ram_address[ram_address_MPORT_addr] <= ram_address_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_corrupt_MPORT_en & ram_corrupt_MPORT_mask) begin
+      ram_corrupt[ram_corrupt_MPORT_addr] <= ram_corrupt_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      value <= value + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      value_1 <= 1'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      value_1 <= value_1 + 1'h1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_opcode[initvar] = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_param[initvar] = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_size[initvar] = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[27:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_corrupt[initvar] = _RAND_7[0:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_8 = {1{`RANDOM}};
+  value = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  value_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  maybe_full = _RAND_10[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer_12(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [2:0]  auto_in_a_bits_size,
+  input  [1:0]  auto_in_a_bits_source,
+  input  [27:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [2:0]  auto_in_d_bits_size,
+  output [1:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [2:0]  auto_out_a_bits_size,
+  output [1:0]  auto_out_a_bits_source,
+  output [27:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [1:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  wire  bundleOut_0_a_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [27:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [27:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [3:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleOut_0_a_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_clock; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_reset; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_enq_bits_corrupt; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_opcode; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_param; // @[Decoupled.scala 361:21]
+  wire [2:0] bundleIn_0_d_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [1:0] bundleIn_0_d_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_sink; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_denied; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleIn_0_d_q_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire  bundleIn_0_d_q_io_deq_bits_corrupt; // @[Decoupled.scala 361:21]
+  Queue_20 bundleOut_0_a_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleOut_0_a_q_clock),
+    .reset(bundleOut_0_a_q_reset),
+    .io_enq_ready(bundleOut_0_a_q_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleOut_0_a_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleOut_0_a_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleOut_0_a_q_io_enq_bits_source),
+    .io_enq_bits_address(bundleOut_0_a_q_io_enq_bits_address),
+    .io_enq_bits_mask(bundleOut_0_a_q_io_enq_bits_mask),
+    .io_enq_bits_data(bundleOut_0_a_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleOut_0_a_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleOut_0_a_q_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_q_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_q_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_q_io_deq_bits_mask),
+    .io_deq_bits_data(bundleOut_0_a_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_a_q_io_deq_bits_corrupt)
+  );
+  Queue_1 bundleIn_0_d_q ( // @[Decoupled.scala 361:21]
+    .clock(bundleIn_0_d_q_clock),
+    .reset(bundleIn_0_d_q_reset),
+    .io_enq_ready(bundleIn_0_d_q_io_enq_ready),
+    .io_enq_valid(bundleIn_0_d_q_io_enq_valid),
+    .io_enq_bits_opcode(bundleIn_0_d_q_io_enq_bits_opcode),
+    .io_enq_bits_param(bundleIn_0_d_q_io_enq_bits_param),
+    .io_enq_bits_size(bundleIn_0_d_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_q_io_enq_bits_source),
+    .io_enq_bits_sink(bundleIn_0_d_q_io_enq_bits_sink),
+    .io_enq_bits_denied(bundleIn_0_d_q_io_enq_bits_denied),
+    .io_enq_bits_data(bundleIn_0_d_q_io_enq_bits_data),
+    .io_enq_bits_corrupt(bundleIn_0_d_q_io_enq_bits_corrupt),
+    .io_deq_ready(bundleIn_0_d_q_io_deq_ready),
+    .io_deq_valid(bundleIn_0_d_q_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_d_q_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_d_q_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_d_q_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_d_q_io_deq_bits_source),
+    .io_deq_bits_sink(bundleIn_0_d_q_io_deq_bits_sink),
+    .io_deq_bits_denied(bundleIn_0_d_q_io_deq_bits_denied),
+    .io_deq_bits_data(bundleIn_0_d_q_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleIn_0_d_q_io_deq_bits_corrupt)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_q_io_enq_ready; // @[Nodes.scala 1210:84 Decoupled.scala 365:17]
+  assign auto_in_d_valid = bundleIn_0_d_q_io_deq_valid; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_opcode = bundleIn_0_d_q_io_deq_bits_opcode; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_param = bundleIn_0_d_q_io_deq_bits_param; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_size = bundleIn_0_d_q_io_deq_bits_size; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_source = bundleIn_0_d_q_io_deq_bits_source; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_sink = bundleIn_0_d_q_io_deq_bits_sink; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_denied = bundleIn_0_d_q_io_deq_bits_denied; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_data = bundleIn_0_d_q_io_deq_bits_data; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_in_d_bits_corrupt = bundleIn_0_d_q_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 Buffer.scala 38:13]
+  assign auto_out_a_valid = bundleOut_0_a_q_io_deq_valid; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_q_io_deq_bits_opcode; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_q_io_deq_bits_param; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_q_io_deq_bits_size; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_q_io_deq_bits_source; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_q_io_deq_bits_address; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_q_io_deq_bits_mask; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_data = bundleOut_0_a_q_io_deq_bits_data; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_q_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 Buffer.scala 37:13]
+  assign auto_out_d_ready = bundleIn_0_d_q_io_enq_ready; // @[Nodes.scala 1207:84 Decoupled.scala 365:17]
+  assign bundleOut_0_a_q_clock = clock;
+  assign bundleOut_0_a_q_reset = reset;
+  assign bundleOut_0_a_q_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_enq_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_q_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_clock = clock;
+  assign bundleIn_0_d_q_reset = reset;
+  assign bundleIn_0_d_q_io_enq_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_param = 2'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_sink = 1'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_denied = 1'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_enq_bits_corrupt = 1'h0; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_q_io_deq_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module NonSyncResetSynchronizerPrimitiveShiftReg_d3(
+  input   clock,
+  input   io_d,
+  output  io_q
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  reg  sync_0; // @[SynchronizerReg.scala 51:66]
+  reg  sync_1; // @[SynchronizerReg.scala 51:66]
+  reg  sync_2; // @[SynchronizerReg.scala 51:66]
+  assign io_q = sync_0; // @[SynchronizerReg.scala 59:8]
+  always @(posedge clock) begin
+    sync_0 <= sync_1; // @[SynchronizerReg.scala 57:10]
+    sync_1 <= sync_2; // @[SynchronizerReg.scala 57:10]
+    sync_2 <= io_d; // @[SynchronizerReg.scala 54:22]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  sync_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sync_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  sync_2 = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SynchronizerShiftReg_w1_d3(
+  input   clock,
+  input   io_d,
+  output  io_q
+);
+  wire  output_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_q; // @[ShiftReg.scala 45:23]
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_clock),
+    .io_d(output_chain_io_d),
+    .io_q(output_chain_io_q)
+  );
+  assign io_q = output_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign output_chain_clock = clock;
+  assign output_chain_io_d = io_d; // @[SynchronizerReg.scala 173:39]
+endmodule
+module IntSyncAsyncCrossingSink(
+  input   clock,
+  input   auto_in_sync_0,
+  output  auto_out_0
+);
+  wire  chain_clock; // @[ShiftReg.scala 45:23]
+  wire  chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  chain_io_q; // @[ShiftReg.scala 45:23]
+  SynchronizerShiftReg_w1_d3 chain ( // @[ShiftReg.scala 45:23]
+    .clock(chain_clock),
+    .io_d(chain_io_d),
+    .io_q(chain_io_q)
+  );
+  assign auto_out_0 = chain_io_q; // @[ShiftReg.scala 48:24]
+  assign chain_clock = clock;
+  assign chain_io_d = auto_in_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module IntSyncSyncCrossingSink(
+  input   auto_in_sync_0,
+  input   auto_in_sync_1,
+  output  auto_out_0,
+  output  auto_out_1
+);
+  assign auto_out_0 = auto_in_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1 = auto_in_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module IntSyncSyncCrossingSink_1(
+  input   auto_in_sync_0,
+  output  auto_out_0
+);
+  assign auto_out_0 = auto_in_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module AsyncResetRegVec_w1_i0(
+  input   clock,
+  input   reset,
+  input   io_d,
+  output  io_q,
+  input   io_en
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg  reg_; // @[AsyncResetReg.scala 64:50]
+  assign io_q = reg_; // @[AsyncResetReg.scala 68:8]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncResetReg.scala 65:16]
+      reg_ <= 1'h0; // @[AsyncResetReg.scala 66:9]
+    end else if (io_en) begin // @[AsyncResetReg.scala 64:50]
+      reg_ <= io_d;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  reg_ = _RAND_0[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    reg_ = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module IntSyncCrossingSource_1(
+  input   clock,
+  input   reset,
+  input   auto_in_0,
+  output  auto_out_sync_0
+);
+  wire  reg__clock; // @[AsyncResetReg.scala 89:21]
+  wire  reg__reset; // @[AsyncResetReg.scala 89:21]
+  wire  reg__io_d; // @[AsyncResetReg.scala 89:21]
+  wire  reg__io_q; // @[AsyncResetReg.scala 89:21]
+  wire  reg__io_en; // @[AsyncResetReg.scala 89:21]
+  AsyncResetRegVec_w1_i0 reg_ ( // @[AsyncResetReg.scala 89:21]
+    .clock(reg__clock),
+    .reset(reg__reset),
+    .io_d(reg__io_d),
+    .io_q(reg__io_q),
+    .io_en(reg__io_en)
+  );
+  assign auto_out_sync_0 = reg__io_q; // @[Crossing.scala 41:52]
+  assign reg__clock = clock;
+  assign reg__reset = reset;
+  assign reg__io_d = auto_in_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign reg__io_en = 1'h1; // @[AsyncResetReg.scala 92:15]
+endmodule
+module TilePRCIDomain(
+  input         auto_intsink_in_sync_0,
+  input         auto_tile_reset_domain_tile_hartid_in,
+  output        auto_int_out_clock_xing_out_2_sync_0,
+  output        auto_int_out_clock_xing_out_1_sync_0,
+  output        auto_int_out_clock_xing_out_0_sync_0,
+  input         auto_int_in_clock_xing_in_2_sync_0,
+  input         auto_int_in_clock_xing_in_1_sync_0,
+  input         auto_int_in_clock_xing_in_0_sync_0,
+  input         auto_int_in_clock_xing_in_0_sync_1,
+  output        auto_tl_slave_clock_xing_in_a_ready,
+  input         auto_tl_slave_clock_xing_in_a_valid,
+  input  [2:0]  auto_tl_slave_clock_xing_in_a_bits_opcode,
+  input  [2:0]  auto_tl_slave_clock_xing_in_a_bits_param,
+  input  [2:0]  auto_tl_slave_clock_xing_in_a_bits_size,
+  input  [1:0]  auto_tl_slave_clock_xing_in_a_bits_source,
+  input  [27:0] auto_tl_slave_clock_xing_in_a_bits_address,
+  input  [3:0]  auto_tl_slave_clock_xing_in_a_bits_mask,
+  input  [31:0] auto_tl_slave_clock_xing_in_a_bits_data,
+  input         auto_tl_slave_clock_xing_in_a_bits_corrupt,
+  input         auto_tl_slave_clock_xing_in_d_ready,
+  output        auto_tl_slave_clock_xing_in_d_valid,
+  output [2:0]  auto_tl_slave_clock_xing_in_d_bits_opcode,
+  output [1:0]  auto_tl_slave_clock_xing_in_d_bits_param,
+  output [2:0]  auto_tl_slave_clock_xing_in_d_bits_size,
+  output [1:0]  auto_tl_slave_clock_xing_in_d_bits_source,
+  output        auto_tl_slave_clock_xing_in_d_bits_sink,
+  output        auto_tl_slave_clock_xing_in_d_bits_denied,
+  output [31:0] auto_tl_slave_clock_xing_in_d_bits_data,
+  output        auto_tl_slave_clock_xing_in_d_bits_corrupt,
+  input         auto_tl_master_clock_xing_out_a_ready,
+  output        auto_tl_master_clock_xing_out_a_valid,
+  output [2:0]  auto_tl_master_clock_xing_out_a_bits_opcode,
+  output [2:0]  auto_tl_master_clock_xing_out_a_bits_param,
+  output [3:0]  auto_tl_master_clock_xing_out_a_bits_size,
+  output [1:0]  auto_tl_master_clock_xing_out_a_bits_source,
+  output [30:0] auto_tl_master_clock_xing_out_a_bits_address,
+  output [3:0]  auto_tl_master_clock_xing_out_a_bits_mask,
+  output [31:0] auto_tl_master_clock_xing_out_a_bits_data,
+  output        auto_tl_master_clock_xing_out_a_bits_corrupt,
+  output        auto_tl_master_clock_xing_out_b_ready,
+  input         auto_tl_master_clock_xing_out_b_valid,
+  input  [1:0]  auto_tl_master_clock_xing_out_b_bits_param,
+  input  [30:0] auto_tl_master_clock_xing_out_b_bits_address,
+  input         auto_tl_master_clock_xing_out_c_ready,
+  output        auto_tl_master_clock_xing_out_c_valid,
+  output [2:0]  auto_tl_master_clock_xing_out_c_bits_opcode,
+  output [2:0]  auto_tl_master_clock_xing_out_c_bits_param,
+  output [3:0]  auto_tl_master_clock_xing_out_c_bits_size,
+  output [1:0]  auto_tl_master_clock_xing_out_c_bits_source,
+  output [30:0] auto_tl_master_clock_xing_out_c_bits_address,
+  output [31:0] auto_tl_master_clock_xing_out_c_bits_data,
+  output        auto_tl_master_clock_xing_out_c_bits_corrupt,
+  output        auto_tl_master_clock_xing_out_d_ready,
+  input         auto_tl_master_clock_xing_out_d_valid,
+  input  [2:0]  auto_tl_master_clock_xing_out_d_bits_opcode,
+  input  [1:0]  auto_tl_master_clock_xing_out_d_bits_param,
+  input  [3:0]  auto_tl_master_clock_xing_out_d_bits_size,
+  input  [1:0]  auto_tl_master_clock_xing_out_d_bits_source,
+  input  [1:0]  auto_tl_master_clock_xing_out_d_bits_sink,
+  input         auto_tl_master_clock_xing_out_d_bits_denied,
+  input  [31:0] auto_tl_master_clock_xing_out_d_bits_data,
+  input         auto_tl_master_clock_xing_out_d_bits_corrupt,
+  output        auto_tl_master_clock_xing_out_e_valid,
+  output [1:0]  auto_tl_master_clock_xing_out_e_bits_sink,
+  input         auto_tap_clock_in_clock,
+  input         auto_tap_clock_in_reset, // <no_sram>
+  output [5:0]  tag_array_ext_RW0_addr, // <no_sram>
+  output        tag_array_ext_RW0_en, // <no_sram>
+  output        tag_array_ext_RW0_clk, // <no_sram>
+  output        tag_array_ext_RW0_wmode, // <no_sram>
+  output [20:0] tag_array_ext_RW0_wdata, // <no_sram>
+  input  [20:0] tag_array_ext_RW0_rdata, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+  wire  tile_reset_domain_auto_tile_slave_in_a_ready; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_slave_in_a_valid; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_slave_in_a_bits_opcode; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_slave_in_a_bits_param; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_slave_in_a_bits_size; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_slave_in_a_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [27:0] tile_reset_domain_auto_tile_slave_in_a_bits_address; // @[TilePRCIDomain.scala 45:37]
+  wire [3:0] tile_reset_domain_auto_tile_slave_in_a_bits_mask; // @[TilePRCIDomain.scala 45:37]
+  wire [31:0] tile_reset_domain_auto_tile_slave_in_a_bits_data; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_slave_in_a_bits_corrupt; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_slave_in_d_ready; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_slave_in_d_valid; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_slave_in_d_bits_opcode; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_slave_in_d_bits_size; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_slave_in_d_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [31:0] tile_reset_domain_auto_tile_slave_in_d_bits_data; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_wfi_out_0; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_int_local_in_3_0; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_int_local_in_2_0; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_int_local_in_1_0; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_int_local_in_1_1; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_int_local_in_0_0; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_hartid_in; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_a_ready; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_a_valid; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_opcode; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_param; // @[TilePRCIDomain.scala 45:37]
+  wire [3:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_size; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [30:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_address; // @[TilePRCIDomain.scala 45:37]
+  wire [3:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_mask; // @[TilePRCIDomain.scala 45:37]
+  wire [31:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_data; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_b_ready; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_b_valid; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_opcode; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_param; // @[TilePRCIDomain.scala 45:37]
+  wire [3:0] tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_size; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [30:0] tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_address; // @[TilePRCIDomain.scala 45:37]
+  wire [3:0] tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_mask; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_corrupt; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_c_ready; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_c_valid; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_opcode; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_param; // @[TilePRCIDomain.scala 45:37]
+  wire [3:0] tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_size; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [30:0] tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_address; // @[TilePRCIDomain.scala 45:37]
+  wire [31:0] tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_data; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_d_ready; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_d_valid; // @[TilePRCIDomain.scala 45:37]
+  wire [2:0] tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_opcode; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_param; // @[TilePRCIDomain.scala 45:37]
+  wire [3:0] tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_size; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_sink; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_denied; // @[TilePRCIDomain.scala 45:37]
+  wire [31:0] tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_data; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_corrupt; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_e_ready; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_tile_tl_other_masters_out_e_valid; // @[TilePRCIDomain.scala 45:37]
+  wire [1:0] tile_reset_domain_auto_tile_tl_other_masters_out_e_bits_sink; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_clock_in_clock; // @[TilePRCIDomain.scala 45:37]
+  wire  tile_reset_domain_auto_clock_in_reset; // @[TilePRCIDomain.scala 45:37]
+  wire  clockNode_auto_in_clock; // @[ClockGroup.scala 106:107]
+  wire  clockNode_auto_in_reset; // @[ClockGroup.scala 106:107]
+  wire  clockNode_auto_out_clock; // @[ClockGroup.scala 106:107]
+  wire  clockNode_auto_out_reset; // @[ClockGroup.scala 106:107]
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_b_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_b_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_b_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_b_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_b_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_b_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_in_b_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_b_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_b_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_c_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_c_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_c_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_c_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_c_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_c_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_in_c_bits_address; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_c_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_e_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_e_valid; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_e_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_b_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_b_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_b_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_b_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_b_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_b_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_out_b_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_b_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_b_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_c_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_c_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_c_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_c_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_c_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_c_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_auto_out_c_bits_address; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_c_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_e_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_e_valid; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_e_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_1_clock; // @[Buffer.scala 68:28]
+  wire  buffer_1_reset; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_b_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_b_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_b_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_b_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_b_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_b_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_1_auto_in_b_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_b_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_b_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_c_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_c_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_c_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_c_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_c_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_c_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_1_auto_in_c_bits_address; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_in_c_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_e_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_e_valid; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_in_e_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_b_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_b_valid; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_b_bits_param; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_1_auto_out_b_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_c_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_c_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_c_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_c_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_out_c_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_c_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_1_auto_out_c_bits_address; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_out_c_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_c_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_d_bits_param; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_1_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_e_valid; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_1_auto_out_e_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_2_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [27:0] buffer_2_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_2_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_2_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_2_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_2_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_2_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [27:0] buffer_2_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_2_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_2_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_2_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_2_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_2_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_2_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_3_clock; // @[Buffer.scala 68:28]
+  wire  buffer_3_reset; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_3_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [27:0] buffer_3_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_3_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_3_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_3_auto_in_d_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_3_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_3_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_in_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_3_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [27:0] buffer_3_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_3_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_3_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_3_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_3_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_3_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_3_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsink_clock; // @[Crossing.scala 74:29]
+  wire  intsink_auto_in_sync_0; // @[Crossing.scala 74:29]
+  wire  intsink_auto_out_0; // @[Crossing.scala 74:29]
+  wire  intsink_1_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_1_auto_in_sync_1; // @[Crossing.scala 94:29]
+  wire  intsink_1_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_1_auto_out_1; // @[Crossing.scala 94:29]
+  wire  intsink_2_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_2_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_3_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_3_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsource_1_clock; // @[Crossing.scala 26:31]
+  wire  intsource_1_reset; // @[Crossing.scala 26:31]
+  wire  intsource_1_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_1_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_2_clock; // @[Crossing.scala 26:31]
+  wire  intsource_2_reset; // @[Crossing.scala 26:31]
+  wire  intsource_2_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_2_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_3_clock; // @[Crossing.scala 26:31]
+  wire  intsource_3_reset; // @[Crossing.scala 26:31]
+  wire  intsource_3_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_3_auto_out_sync_0; // @[Crossing.scala 26:31]
+  TileResetDomain tile_reset_domain ( // @[TilePRCIDomain.scala 45:37]
+    .auto_tile_slave_in_a_ready(tile_reset_domain_auto_tile_slave_in_a_ready),
+    .auto_tile_slave_in_a_valid(tile_reset_domain_auto_tile_slave_in_a_valid),
+    .auto_tile_slave_in_a_bits_opcode(tile_reset_domain_auto_tile_slave_in_a_bits_opcode),
+    .auto_tile_slave_in_a_bits_param(tile_reset_domain_auto_tile_slave_in_a_bits_param),
+    .auto_tile_slave_in_a_bits_size(tile_reset_domain_auto_tile_slave_in_a_bits_size),
+    .auto_tile_slave_in_a_bits_source(tile_reset_domain_auto_tile_slave_in_a_bits_source),
+    .auto_tile_slave_in_a_bits_address(tile_reset_domain_auto_tile_slave_in_a_bits_address),
+    .auto_tile_slave_in_a_bits_mask(tile_reset_domain_auto_tile_slave_in_a_bits_mask),
+    .auto_tile_slave_in_a_bits_data(tile_reset_domain_auto_tile_slave_in_a_bits_data),
+    .auto_tile_slave_in_a_bits_corrupt(tile_reset_domain_auto_tile_slave_in_a_bits_corrupt),
+    .auto_tile_slave_in_d_ready(tile_reset_domain_auto_tile_slave_in_d_ready),
+    .auto_tile_slave_in_d_valid(tile_reset_domain_auto_tile_slave_in_d_valid),
+    .auto_tile_slave_in_d_bits_opcode(tile_reset_domain_auto_tile_slave_in_d_bits_opcode),
+    .auto_tile_slave_in_d_bits_size(tile_reset_domain_auto_tile_slave_in_d_bits_size),
+    .auto_tile_slave_in_d_bits_source(tile_reset_domain_auto_tile_slave_in_d_bits_source),
+    .auto_tile_slave_in_d_bits_data(tile_reset_domain_auto_tile_slave_in_d_bits_data),
+    .auto_tile_wfi_out_0(tile_reset_domain_auto_tile_wfi_out_0),
+    .auto_tile_int_local_in_3_0(tile_reset_domain_auto_tile_int_local_in_3_0),
+    .auto_tile_int_local_in_2_0(tile_reset_domain_auto_tile_int_local_in_2_0),
+    .auto_tile_int_local_in_1_0(tile_reset_domain_auto_tile_int_local_in_1_0),
+    .auto_tile_int_local_in_1_1(tile_reset_domain_auto_tile_int_local_in_1_1),
+    .auto_tile_int_local_in_0_0(tile_reset_domain_auto_tile_int_local_in_0_0),
+    .auto_tile_hartid_in(tile_reset_domain_auto_tile_hartid_in),
+    .auto_tile_tl_other_masters_out_a_ready(tile_reset_domain_auto_tile_tl_other_masters_out_a_ready),
+    .auto_tile_tl_other_masters_out_a_valid(tile_reset_domain_auto_tile_tl_other_masters_out_a_valid),
+    .auto_tile_tl_other_masters_out_a_bits_opcode(tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_opcode),
+    .auto_tile_tl_other_masters_out_a_bits_param(tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_param),
+    .auto_tile_tl_other_masters_out_a_bits_size(tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_size),
+    .auto_tile_tl_other_masters_out_a_bits_source(tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_source),
+    .auto_tile_tl_other_masters_out_a_bits_address(tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_address),
+    .auto_tile_tl_other_masters_out_a_bits_mask(tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_mask),
+    .auto_tile_tl_other_masters_out_a_bits_data(tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_data),
+    .auto_tile_tl_other_masters_out_b_ready(tile_reset_domain_auto_tile_tl_other_masters_out_b_ready),
+    .auto_tile_tl_other_masters_out_b_valid(tile_reset_domain_auto_tile_tl_other_masters_out_b_valid),
+    .auto_tile_tl_other_masters_out_b_bits_opcode(tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_opcode),
+    .auto_tile_tl_other_masters_out_b_bits_param(tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_param),
+    .auto_tile_tl_other_masters_out_b_bits_size(tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_size),
+    .auto_tile_tl_other_masters_out_b_bits_source(tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_source),
+    .auto_tile_tl_other_masters_out_b_bits_address(tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_address),
+    .auto_tile_tl_other_masters_out_b_bits_mask(tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_mask),
+    .auto_tile_tl_other_masters_out_b_bits_corrupt(tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_corrupt),
+    .auto_tile_tl_other_masters_out_c_ready(tile_reset_domain_auto_tile_tl_other_masters_out_c_ready),
+    .auto_tile_tl_other_masters_out_c_valid(tile_reset_domain_auto_tile_tl_other_masters_out_c_valid),
+    .auto_tile_tl_other_masters_out_c_bits_opcode(tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_opcode),
+    .auto_tile_tl_other_masters_out_c_bits_param(tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_param),
+    .auto_tile_tl_other_masters_out_c_bits_size(tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_size),
+    .auto_tile_tl_other_masters_out_c_bits_source(tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_source),
+    .auto_tile_tl_other_masters_out_c_bits_address(tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_address),
+    .auto_tile_tl_other_masters_out_c_bits_data(tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_data),
+    .auto_tile_tl_other_masters_out_d_ready(tile_reset_domain_auto_tile_tl_other_masters_out_d_ready),
+    .auto_tile_tl_other_masters_out_d_valid(tile_reset_domain_auto_tile_tl_other_masters_out_d_valid),
+    .auto_tile_tl_other_masters_out_d_bits_opcode(tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_opcode),
+    .auto_tile_tl_other_masters_out_d_bits_param(tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_param),
+    .auto_tile_tl_other_masters_out_d_bits_size(tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_size),
+    .auto_tile_tl_other_masters_out_d_bits_source(tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_source),
+    .auto_tile_tl_other_masters_out_d_bits_sink(tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_sink),
+    .auto_tile_tl_other_masters_out_d_bits_denied(tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_denied),
+    .auto_tile_tl_other_masters_out_d_bits_data(tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_data),
+    .auto_tile_tl_other_masters_out_d_bits_corrupt(tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_corrupt),
+    .auto_tile_tl_other_masters_out_e_ready(tile_reset_domain_auto_tile_tl_other_masters_out_e_ready),
+    .auto_tile_tl_other_masters_out_e_valid(tile_reset_domain_auto_tile_tl_other_masters_out_e_valid),
+    .auto_tile_tl_other_masters_out_e_bits_sink(tile_reset_domain_auto_tile_tl_other_masters_out_e_bits_sink),
+    .auto_clock_in_clock(tile_reset_domain_auto_clock_in_clock),
+    .auto_clock_in_reset(tile_reset_domain_auto_clock_in_reset), // <no_sram>
+    .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr), // <no_sram>
+    .tag_array_ext_RW0_en(tag_array_ext_RW0_en), // <no_sram>
+    .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk), // <no_sram>
+    .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode), // <no_sram>
+    .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata), // <no_sram>
+    .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask), // <no_sram>
+    .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+    .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+    .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+    .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+    .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+    .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+    .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask), // <no_sram>
+    .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+  );
+  FixedClockBroadcast_2 clockNode ( // @[ClockGroup.scala 106:107]
+    .auto_in_clock(clockNode_auto_in_clock),
+    .auto_in_reset(clockNode_auto_in_reset),
+    .auto_out_clock(clockNode_auto_out_clock),
+    .auto_out_reset(clockNode_auto_out_reset)
+  );
+  TLBuffer_9 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_b_ready(buffer_auto_in_b_ready),
+    .auto_in_b_valid(buffer_auto_in_b_valid),
+    .auto_in_b_bits_opcode(buffer_auto_in_b_bits_opcode),
+    .auto_in_b_bits_param(buffer_auto_in_b_bits_param),
+    .auto_in_b_bits_size(buffer_auto_in_b_bits_size),
+    .auto_in_b_bits_source(buffer_auto_in_b_bits_source),
+    .auto_in_b_bits_address(buffer_auto_in_b_bits_address),
+    .auto_in_b_bits_mask(buffer_auto_in_b_bits_mask),
+    .auto_in_b_bits_corrupt(buffer_auto_in_b_bits_corrupt),
+    .auto_in_c_ready(buffer_auto_in_c_ready),
+    .auto_in_c_valid(buffer_auto_in_c_valid),
+    .auto_in_c_bits_opcode(buffer_auto_in_c_bits_opcode),
+    .auto_in_c_bits_param(buffer_auto_in_c_bits_param),
+    .auto_in_c_bits_size(buffer_auto_in_c_bits_size),
+    .auto_in_c_bits_source(buffer_auto_in_c_bits_source),
+    .auto_in_c_bits_address(buffer_auto_in_c_bits_address),
+    .auto_in_c_bits_data(buffer_auto_in_c_bits_data),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(buffer_auto_in_d_bits_param),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(buffer_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(buffer_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(buffer_auto_in_d_bits_corrupt),
+    .auto_in_e_ready(buffer_auto_in_e_ready),
+    .auto_in_e_valid(buffer_auto_in_e_valid),
+    .auto_in_e_bits_sink(buffer_auto_in_e_bits_sink),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_b_ready(buffer_auto_out_b_ready),
+    .auto_out_b_valid(buffer_auto_out_b_valid),
+    .auto_out_b_bits_opcode(buffer_auto_out_b_bits_opcode),
+    .auto_out_b_bits_param(buffer_auto_out_b_bits_param),
+    .auto_out_b_bits_size(buffer_auto_out_b_bits_size),
+    .auto_out_b_bits_source(buffer_auto_out_b_bits_source),
+    .auto_out_b_bits_address(buffer_auto_out_b_bits_address),
+    .auto_out_b_bits_mask(buffer_auto_out_b_bits_mask),
+    .auto_out_b_bits_corrupt(buffer_auto_out_b_bits_corrupt),
+    .auto_out_c_ready(buffer_auto_out_c_ready),
+    .auto_out_c_valid(buffer_auto_out_c_valid),
+    .auto_out_c_bits_opcode(buffer_auto_out_c_bits_opcode),
+    .auto_out_c_bits_param(buffer_auto_out_c_bits_param),
+    .auto_out_c_bits_size(buffer_auto_out_c_bits_size),
+    .auto_out_c_bits_source(buffer_auto_out_c_bits_source),
+    .auto_out_c_bits_address(buffer_auto_out_c_bits_address),
+    .auto_out_c_bits_data(buffer_auto_out_c_bits_data),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(buffer_auto_out_d_bits_param),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(buffer_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(buffer_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(buffer_auto_out_d_bits_corrupt),
+    .auto_out_e_ready(buffer_auto_out_e_ready),
+    .auto_out_e_valid(buffer_auto_out_e_valid),
+    .auto_out_e_bits_sink(buffer_auto_out_e_bits_sink)
+  );
+  TLBuffer_10 buffer_1 ( // @[Buffer.scala 68:28]
+    .clock(buffer_1_clock),
+    .reset(buffer_1_reset),
+    .auto_in_a_ready(buffer_1_auto_in_a_ready),
+    .auto_in_a_valid(buffer_1_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_1_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_1_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_1_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_1_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_1_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_1_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_1_auto_in_a_bits_data),
+    .auto_in_b_ready(buffer_1_auto_in_b_ready),
+    .auto_in_b_valid(buffer_1_auto_in_b_valid),
+    .auto_in_b_bits_opcode(buffer_1_auto_in_b_bits_opcode),
+    .auto_in_b_bits_param(buffer_1_auto_in_b_bits_param),
+    .auto_in_b_bits_size(buffer_1_auto_in_b_bits_size),
+    .auto_in_b_bits_source(buffer_1_auto_in_b_bits_source),
+    .auto_in_b_bits_address(buffer_1_auto_in_b_bits_address),
+    .auto_in_b_bits_mask(buffer_1_auto_in_b_bits_mask),
+    .auto_in_b_bits_corrupt(buffer_1_auto_in_b_bits_corrupt),
+    .auto_in_c_ready(buffer_1_auto_in_c_ready),
+    .auto_in_c_valid(buffer_1_auto_in_c_valid),
+    .auto_in_c_bits_opcode(buffer_1_auto_in_c_bits_opcode),
+    .auto_in_c_bits_param(buffer_1_auto_in_c_bits_param),
+    .auto_in_c_bits_size(buffer_1_auto_in_c_bits_size),
+    .auto_in_c_bits_source(buffer_1_auto_in_c_bits_source),
+    .auto_in_c_bits_address(buffer_1_auto_in_c_bits_address),
+    .auto_in_c_bits_data(buffer_1_auto_in_c_bits_data),
+    .auto_in_d_ready(buffer_1_auto_in_d_ready),
+    .auto_in_d_valid(buffer_1_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_1_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(buffer_1_auto_in_d_bits_param),
+    .auto_in_d_bits_size(buffer_1_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_1_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(buffer_1_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(buffer_1_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(buffer_1_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(buffer_1_auto_in_d_bits_corrupt),
+    .auto_in_e_ready(buffer_1_auto_in_e_ready),
+    .auto_in_e_valid(buffer_1_auto_in_e_valid),
+    .auto_in_e_bits_sink(buffer_1_auto_in_e_bits_sink),
+    .auto_out_a_ready(buffer_1_auto_out_a_ready),
+    .auto_out_a_valid(buffer_1_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_1_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_1_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_1_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_1_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_1_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_1_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_1_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_1_auto_out_a_bits_corrupt),
+    .auto_out_b_ready(buffer_1_auto_out_b_ready),
+    .auto_out_b_valid(buffer_1_auto_out_b_valid),
+    .auto_out_b_bits_param(buffer_1_auto_out_b_bits_param),
+    .auto_out_b_bits_address(buffer_1_auto_out_b_bits_address),
+    .auto_out_c_ready(buffer_1_auto_out_c_ready),
+    .auto_out_c_valid(buffer_1_auto_out_c_valid),
+    .auto_out_c_bits_opcode(buffer_1_auto_out_c_bits_opcode),
+    .auto_out_c_bits_param(buffer_1_auto_out_c_bits_param),
+    .auto_out_c_bits_size(buffer_1_auto_out_c_bits_size),
+    .auto_out_c_bits_source(buffer_1_auto_out_c_bits_source),
+    .auto_out_c_bits_address(buffer_1_auto_out_c_bits_address),
+    .auto_out_c_bits_data(buffer_1_auto_out_c_bits_data),
+    .auto_out_c_bits_corrupt(buffer_1_auto_out_c_bits_corrupt),
+    .auto_out_d_ready(buffer_1_auto_out_d_ready),
+    .auto_out_d_valid(buffer_1_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_1_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(buffer_1_auto_out_d_bits_param),
+    .auto_out_d_bits_size(buffer_1_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_1_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(buffer_1_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(buffer_1_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(buffer_1_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(buffer_1_auto_out_d_bits_corrupt),
+    .auto_out_e_valid(buffer_1_auto_out_e_valid),
+    .auto_out_e_bits_sink(buffer_1_auto_out_e_bits_sink)
+  );
+  TLBuffer_11 buffer_2 ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_2_auto_in_a_ready),
+    .auto_in_a_valid(buffer_2_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_2_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_2_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_2_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_2_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_2_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_2_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_2_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_2_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_2_auto_in_d_ready),
+    .auto_in_d_valid(buffer_2_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_2_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_2_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_2_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_2_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_2_auto_out_a_ready),
+    .auto_out_a_valid(buffer_2_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_2_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_2_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_2_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_2_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_2_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_2_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_2_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_2_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_2_auto_out_d_ready),
+    .auto_out_d_valid(buffer_2_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_2_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_2_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_2_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_2_auto_out_d_bits_data)
+  );
+  TLBuffer_12 buffer_3 ( // @[Buffer.scala 68:28]
+    .clock(buffer_3_clock),
+    .reset(buffer_3_reset),
+    .auto_in_a_ready(buffer_3_auto_in_a_ready),
+    .auto_in_a_valid(buffer_3_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_3_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_3_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_3_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_3_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_3_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_3_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_3_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_3_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_3_auto_in_d_ready),
+    .auto_in_d_valid(buffer_3_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_3_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(buffer_3_auto_in_d_bits_param),
+    .auto_in_d_bits_size(buffer_3_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_3_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(buffer_3_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(buffer_3_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(buffer_3_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(buffer_3_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(buffer_3_auto_out_a_ready),
+    .auto_out_a_valid(buffer_3_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_3_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_3_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_3_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_3_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_3_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_3_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_3_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_3_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_3_auto_out_d_ready),
+    .auto_out_d_valid(buffer_3_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_3_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_3_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_3_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_3_auto_out_d_bits_data)
+  );
+  IntSyncAsyncCrossingSink intsink ( // @[Crossing.scala 74:29]
+    .clock(intsink_clock),
+    .auto_in_sync_0(intsink_auto_in_sync_0),
+    .auto_out_0(intsink_auto_out_0)
+  );
+  IntSyncSyncCrossingSink intsink_1 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_1_auto_in_sync_0),
+    .auto_in_sync_1(intsink_1_auto_in_sync_1),
+    .auto_out_0(intsink_1_auto_out_0),
+    .auto_out_1(intsink_1_auto_out_1)
+  );
+  IntSyncSyncCrossingSink_1 intsink_2 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_2_auto_in_sync_0),
+    .auto_out_0(intsink_2_auto_out_0)
+  );
+  IntSyncSyncCrossingSink_1 intsink_3 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_3_auto_in_sync_0),
+    .auto_out_0(intsink_3_auto_out_0)
+  );
+  IntSyncCrossingSource_1 intsource_1 ( // @[Crossing.scala 26:31]
+    .clock(intsource_1_clock),
+    .reset(intsource_1_reset),
+    .auto_in_0(intsource_1_auto_in_0),
+    .auto_out_sync_0(intsource_1_auto_out_sync_0)
+  );
+  IntSyncCrossingSource_1 intsource_2 ( // @[Crossing.scala 26:31]
+    .clock(intsource_2_clock),
+    .reset(intsource_2_reset),
+    .auto_in_0(intsource_2_auto_in_0),
+    .auto_out_sync_0(intsource_2_auto_out_sync_0)
+  );
+  IntSyncCrossingSource_1 intsource_3 ( // @[Crossing.scala 26:31]
+    .clock(intsource_3_clock),
+    .reset(intsource_3_reset),
+    .auto_in_0(intsource_3_auto_in_0),
+    .auto_out_sync_0(intsource_3_auto_out_sync_0)
+  );
+  assign auto_int_out_clock_xing_out_2_sync_0 = intsource_3_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_out_clock_xing_out_1_sync_0 = intsource_2_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_out_clock_xing_out_0_sync_0 = intsource_1_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_slave_clock_xing_in_a_ready = buffer_3_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_valid = buffer_3_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_bits_opcode = buffer_3_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_bits_param = buffer_3_auto_in_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_bits_size = buffer_3_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_bits_source = buffer_3_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_bits_sink = buffer_3_auto_in_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_bits_denied = buffer_3_auto_in_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_bits_data = buffer_3_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_slave_clock_xing_in_d_bits_corrupt = buffer_3_auto_in_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tl_master_clock_xing_out_a_valid = buffer_1_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_a_bits_param = buffer_1_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_a_bits_size = buffer_1_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_a_bits_source = buffer_1_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_a_bits_address = buffer_1_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_a_bits_mask = buffer_1_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_a_bits_data = buffer_1_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_a_bits_corrupt = buffer_1_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_b_ready = buffer_1_auto_out_b_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_c_valid = buffer_1_auto_out_c_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_c_bits_opcode = buffer_1_auto_out_c_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_c_bits_param = buffer_1_auto_out_c_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_c_bits_size = buffer_1_auto_out_c_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_c_bits_source = buffer_1_auto_out_c_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_c_bits_address = buffer_1_auto_out_c_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_c_bits_data = buffer_1_auto_out_c_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_c_bits_corrupt = buffer_1_auto_out_c_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_d_ready = buffer_1_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_e_valid = buffer_1_auto_out_e_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_master_clock_xing_out_e_bits_sink = buffer_1_auto_out_e_bits_sink; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_valid = buffer_2_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_bits_opcode = buffer_2_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_bits_param = buffer_2_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_bits_size = buffer_2_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_bits_source = buffer_2_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_bits_address = buffer_2_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_bits_mask = buffer_2_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_bits_data = buffer_2_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_a_bits_corrupt = buffer_2_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_slave_in_d_ready = buffer_2_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_int_local_in_3_0 = intsink_3_auto_out_0; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_int_local_in_2_0 = intsink_2_auto_out_0; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_int_local_in_1_0 = intsink_1_auto_out_0; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_int_local_in_1_1 = intsink_1_auto_out_1; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_int_local_in_0_0 = intsink_auto_out_0; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_tile_hartid_in = auto_tile_reset_domain_tile_hartid_in; // @[LazyModule.scala 309:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_b_valid = buffer_auto_in_b_valid; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_opcode = buffer_auto_in_b_bits_opcode; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_param = buffer_auto_in_b_bits_param; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_size = buffer_auto_in_b_bits_size; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_source = buffer_auto_in_b_bits_source; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_address = buffer_auto_in_b_bits_address; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_mask = buffer_auto_in_b_bits_mask; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_b_bits_corrupt = buffer_auto_in_b_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_c_ready = buffer_auto_in_c_ready; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_param = buffer_auto_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_source = buffer_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_sink = buffer_auto_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_denied = buffer_auto_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_corrupt = buffer_auto_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_tile_tl_other_masters_out_e_ready = buffer_auto_in_e_ready; // @[LazyModule.scala 298:16]
+  assign tile_reset_domain_auto_clock_in_clock = clockNode_auto_out_clock; // @[LazyModule.scala 296:16]
+  assign tile_reset_domain_auto_clock_in_reset = clockNode_auto_out_reset; // @[LazyModule.scala 296:16]
+  assign clockNode_auto_in_clock = auto_tap_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign clockNode_auto_in_reset = auto_tap_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_valid = tile_reset_domain_auto_tile_tl_other_masters_out_a_valid; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_opcode = tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_param = tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_size = tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_source = tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_address = tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_mask = tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_data = tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_b_ready = tile_reset_domain_auto_tile_tl_other_masters_out_b_ready; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_c_valid = tile_reset_domain_auto_tile_tl_other_masters_out_c_valid; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_c_bits_opcode = tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_opcode; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_c_bits_param = tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_param; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_c_bits_size = tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_size; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_c_bits_source = tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_source; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_c_bits_address = tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_address; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_c_bits_data = tile_reset_domain_auto_tile_tl_other_masters_out_c_bits_data; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_d_ready = tile_reset_domain_auto_tile_tl_other_masters_out_d_ready; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_e_valid = tile_reset_domain_auto_tile_tl_other_masters_out_e_valid; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_e_bits_sink = tile_reset_domain_auto_tile_tl_other_masters_out_e_bits_sink; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_a_ready = buffer_1_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_b_valid = buffer_1_auto_in_b_valid; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_b_bits_opcode = buffer_1_auto_in_b_bits_opcode; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_b_bits_param = buffer_1_auto_in_b_bits_param; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_b_bits_size = buffer_1_auto_in_b_bits_size; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_b_bits_source = buffer_1_auto_in_b_bits_source; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_b_bits_address = buffer_1_auto_in_b_bits_address; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_b_bits_mask = buffer_1_auto_in_b_bits_mask; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_b_bits_corrupt = buffer_1_auto_in_b_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_c_ready = buffer_1_auto_in_c_ready; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_valid = buffer_1_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_bits_opcode = buffer_1_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_bits_param = buffer_1_auto_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_bits_size = buffer_1_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_bits_source = buffer_1_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_bits_sink = buffer_1_auto_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_bits_denied = buffer_1_auto_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_bits_data = buffer_1_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_d_bits_corrupt = buffer_1_auto_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_e_ready = buffer_1_auto_in_e_ready; // @[LazyModule.scala 298:16]
+  assign buffer_1_clock = auto_tap_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_reset = auto_tap_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_a_bits_data = buffer_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_b_ready = buffer_auto_out_b_ready; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_c_valid = buffer_auto_out_c_valid; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_c_bits_opcode = buffer_auto_out_c_bits_opcode; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_c_bits_param = buffer_auto_out_c_bits_param; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_c_bits_size = buffer_auto_out_c_bits_size; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_c_bits_source = buffer_auto_out_c_bits_source; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_c_bits_address = buffer_auto_out_c_bits_address; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_c_bits_data = buffer_auto_out_c_bits_data; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_e_valid = buffer_auto_out_e_valid; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_in_e_bits_sink = buffer_auto_out_e_bits_sink; // @[LazyModule.scala 298:16]
+  assign buffer_1_auto_out_a_ready = auto_tl_master_clock_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_b_valid = auto_tl_master_clock_xing_out_b_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_b_bits_param = auto_tl_master_clock_xing_out_b_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_b_bits_address = auto_tl_master_clock_xing_out_b_bits_address; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_c_ready = auto_tl_master_clock_xing_out_c_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_valid = auto_tl_master_clock_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_bits_opcode = auto_tl_master_clock_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_bits_param = auto_tl_master_clock_xing_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_bits_size = auto_tl_master_clock_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_bits_source = auto_tl_master_clock_xing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_bits_sink = auto_tl_master_clock_xing_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_bits_denied = auto_tl_master_clock_xing_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_bits_data = auto_tl_master_clock_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_1_auto_out_d_bits_corrupt = auto_tl_master_clock_xing_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_2_auto_in_a_valid = buffer_3_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_a_bits_opcode = buffer_3_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_a_bits_param = buffer_3_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_a_bits_size = buffer_3_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_a_bits_source = buffer_3_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_a_bits_address = buffer_3_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_a_bits_mask = buffer_3_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_a_bits_data = buffer_3_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_a_bits_corrupt = buffer_3_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_in_d_ready = buffer_3_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_out_a_ready = tile_reset_domain_auto_tile_slave_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_out_d_valid = tile_reset_domain_auto_tile_slave_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_out_d_bits_opcode = tile_reset_domain_auto_tile_slave_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_out_d_bits_size = tile_reset_domain_auto_tile_slave_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_out_d_bits_source = tile_reset_domain_auto_tile_slave_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_2_auto_out_d_bits_data = tile_reset_domain_auto_tile_slave_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_3_clock = auto_tap_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_reset = auto_tap_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_valid = auto_tl_slave_clock_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_bits_opcode = auto_tl_slave_clock_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_bits_param = auto_tl_slave_clock_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_bits_size = auto_tl_slave_clock_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_bits_source = auto_tl_slave_clock_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_bits_address = auto_tl_slave_clock_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_bits_mask = auto_tl_slave_clock_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_bits_data = auto_tl_slave_clock_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_a_bits_corrupt = auto_tl_slave_clock_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_in_d_ready = auto_tl_slave_clock_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_3_auto_out_a_ready = buffer_2_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_3_auto_out_d_valid = buffer_2_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_3_auto_out_d_bits_opcode = buffer_2_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_3_auto_out_d_bits_size = buffer_2_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_3_auto_out_d_bits_source = buffer_2_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_3_auto_out_d_bits_data = buffer_2_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign intsink_clock = auto_tap_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsink_auto_in_sync_0 = auto_intsink_in_sync_0; // @[LazyModule.scala 309:16]
+  assign intsink_1_auto_in_sync_0 = auto_int_in_clock_xing_in_0_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsink_1_auto_in_sync_1 = auto_int_in_clock_xing_in_0_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsink_2_auto_in_sync_0 = auto_int_in_clock_xing_in_1_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsink_3_auto_in_sync_0 = auto_int_in_clock_xing_in_2_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsource_1_clock = auto_tap_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsource_1_reset = auto_tap_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsource_1_auto_in_0 = 1'h0; // @[LazyModule.scala 298:16]
+  assign intsource_2_clock = auto_tap_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsource_2_reset = auto_tap_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsource_2_auto_in_0 = tile_reset_domain_auto_tile_wfi_out_0; // @[LazyModule.scala 298:16]
+  assign intsource_3_clock = auto_tap_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsource_3_reset = auto_tap_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign intsource_3_auto_in_0 = 1'h0; // @[LazyModule.scala 298:16]
+endmodule
+module TLMonitor_46(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [27:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [27:0] _GEN_71 = {{26'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [27:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 28'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [27:0] _T_33 = io_in_a_bits_address ^ 28'hc000000; // @[Parameters.scala 137:31]
+  wire [28:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [28:0] _T_36 = $signed(_T_34) & -29'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 29'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [27:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [127:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [127:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 671:90 672:22]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set_wo_ready = _GEN_15[95:0];
+  wire [95:0] d_clr_wo_ready = _GEN_21[95:0];
+  wire  _T_661 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_670 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_696 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_704 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_714 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_739 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_670 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_670) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_704[0] & (_T_696 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_696 & _T_2 & ~_T_704[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_714 & (_T_696 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_696 & _T_2 & ~_T_714) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Plic.scala:363:15)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_739 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_739) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Plic.scala:363:15)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[27:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module LevelGateway(
+  input   clock,
+  input   reset,
+  input   io_interrupt,
+  output  io_plic_valid,
+  input   io_plic_ready,
+  input   io_plic_complete
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg  inFlight; // @[Plic.scala 34:21]
+  wire  _GEN_0 = io_interrupt & io_plic_ready | inFlight; // @[Plic.scala 34:21 35:{40,51}]
+  assign io_plic_valid = io_interrupt & ~inFlight; // @[Plic.scala 37:33]
+  always @(posedge clock) begin
+    if (reset) begin // @[Plic.scala 34:21]
+      inFlight <= 1'h0; // @[Plic.scala 34:21]
+    end else if (io_plic_complete) begin // @[Plic.scala 36:27]
+      inFlight <= 1'h0; // @[Plic.scala 36:38]
+    end else begin
+      inFlight <= _GEN_0;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  inFlight = _RAND_0[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module PLICFanIn(
+  input  [2:0]  io_prio_0,
+  input  [2:0]  io_prio_1,
+  input  [2:0]  io_prio_2,
+  input  [2:0]  io_prio_3,
+  input  [2:0]  io_prio_4,
+  input  [2:0]  io_prio_5,
+  input  [2:0]  io_prio_6,
+  input  [2:0]  io_prio_7,
+  input  [2:0]  io_prio_8,
+  input  [2:0]  io_prio_9,
+  input  [2:0]  io_prio_10,
+  input  [2:0]  io_prio_11,
+  input  [2:0]  io_prio_12,
+  input  [2:0]  io_prio_13,
+  input  [2:0]  io_prio_14,
+  input  [2:0]  io_prio_15,
+  input  [2:0]  io_prio_16,
+  input  [2:0]  io_prio_17,
+  input  [2:0]  io_prio_18,
+  input  [2:0]  io_prio_19,
+  input  [2:0]  io_prio_20,
+  input  [2:0]  io_prio_21,
+  input  [2:0]  io_prio_22,
+  input  [2:0]  io_prio_23,
+  input  [2:0]  io_prio_24,
+  input  [2:0]  io_prio_25,
+  input  [2:0]  io_prio_26,
+  input  [2:0]  io_prio_27,
+  input  [2:0]  io_prio_28,
+  input  [2:0]  io_prio_29,
+  input  [2:0]  io_prio_30,
+  input  [2:0]  io_prio_31,
+  input  [2:0]  io_prio_32,
+  input  [2:0]  io_prio_33,
+  input  [2:0]  io_prio_34,
+  input  [2:0]  io_prio_35,
+  input  [2:0]  io_prio_36,
+  input  [2:0]  io_prio_37,
+  input  [2:0]  io_prio_38,
+  input  [2:0]  io_prio_39,
+  input  [2:0]  io_prio_40,
+  input  [2:0]  io_prio_41,
+  input  [2:0]  io_prio_42,
+  input  [2:0]  io_prio_43,
+  input  [2:0]  io_prio_44,
+  input  [2:0]  io_prio_45,
+  input  [2:0]  io_prio_46,
+  input  [2:0]  io_prio_47,
+  input  [2:0]  io_prio_48,
+  input  [2:0]  io_prio_49,
+  input  [2:0]  io_prio_50,
+  input  [2:0]  io_prio_51,
+  input  [2:0]  io_prio_52,
+  input  [2:0]  io_prio_53,
+  input  [2:0]  io_prio_54,
+  input  [2:0]  io_prio_55,
+  input  [55:0] io_ip,
+  output [5:0]  io_dev,
+  output [2:0]  io_max
+);
+  wire [3:0] effectivePriority_1 = {io_ip[0],io_prio_0}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_2 = {io_ip[1],io_prio_1}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_3 = {io_ip[2],io_prio_2}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_4 = {io_ip[3],io_prio_3}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_5 = {io_ip[4],io_prio_4}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_6 = {io_ip[5],io_prio_5}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_7 = {io_ip[6],io_prio_6}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_8 = {io_ip[7],io_prio_7}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_9 = {io_ip[8],io_prio_8}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_10 = {io_ip[9],io_prio_9}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_11 = {io_ip[10],io_prio_10}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_12 = {io_ip[11],io_prio_11}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_13 = {io_ip[12],io_prio_12}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_14 = {io_ip[13],io_prio_13}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_15 = {io_ip[14],io_prio_14}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_16 = {io_ip[15],io_prio_15}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_17 = {io_ip[16],io_prio_16}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_18 = {io_ip[17],io_prio_17}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_19 = {io_ip[18],io_prio_18}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_20 = {io_ip[19],io_prio_19}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_21 = {io_ip[20],io_prio_20}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_22 = {io_ip[21],io_prio_21}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_23 = {io_ip[22],io_prio_22}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_24 = {io_ip[23],io_prio_23}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_25 = {io_ip[24],io_prio_24}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_26 = {io_ip[25],io_prio_25}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_27 = {io_ip[26],io_prio_26}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_28 = {io_ip[27],io_prio_27}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_29 = {io_ip[28],io_prio_28}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_30 = {io_ip[29],io_prio_29}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_31 = {io_ip[30],io_prio_30}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_32 = {io_ip[31],io_prio_31}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_33 = {io_ip[32],io_prio_32}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_34 = {io_ip[33],io_prio_33}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_35 = {io_ip[34],io_prio_34}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_36 = {io_ip[35],io_prio_35}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_37 = {io_ip[36],io_prio_36}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_38 = {io_ip[37],io_prio_37}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_39 = {io_ip[38],io_prio_38}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_40 = {io_ip[39],io_prio_39}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_41 = {io_ip[40],io_prio_40}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_42 = {io_ip[41],io_prio_41}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_43 = {io_ip[42],io_prio_42}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_44 = {io_ip[43],io_prio_43}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_45 = {io_ip[44],io_prio_44}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_46 = {io_ip[45],io_prio_45}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_47 = {io_ip[46],io_prio_46}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_48 = {io_ip[47],io_prio_47}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_49 = {io_ip[48],io_prio_48}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_50 = {io_ip[49],io_prio_49}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_51 = {io_ip[50],io_prio_50}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_52 = {io_ip[51],io_prio_51}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_53 = {io_ip[52],io_prio_52}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_54 = {io_ip[53],io_prio_53}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_55 = {io_ip[54],io_prio_54}; // @[Cat.scala 31:58]
+  wire [3:0] effectivePriority_56 = {io_ip[55],io_prio_55}; // @[Cat.scala 31:58]
+  wire  _T = 4'h8 >= effectivePriority_1; // @[Plic.scala 345:20]
+  wire [3:0] _T_2 = _T ? 4'h8 : effectivePriority_1; // @[Misc.scala 34:9]
+  wire  _T_3 = _T ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_4 = effectivePriority_2 >= effectivePriority_3; // @[Plic.scala 345:20]
+  wire [3:0] _T_6 = _T_4 ? effectivePriority_2 : effectivePriority_3; // @[Misc.scala 34:9]
+  wire  _T_7 = _T_4 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_8 = _T_2 >= _T_6; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_0 = {{1'd0}, _T_7}; // @[Plic.scala 345:61]
+  wire [1:0] _T_9 = 2'h2 | _GEN_0; // @[Plic.scala 345:61]
+  wire [3:0] _T_10 = _T_8 ? _T_2 : _T_6; // @[Misc.scala 34:9]
+  wire [1:0] _T_11 = _T_8 ? {{1'd0}, _T_3} : _T_9; // @[Misc.scala 34:36]
+  wire  _T_12 = effectivePriority_4 >= effectivePriority_5; // @[Plic.scala 345:20]
+  wire [3:0] _T_14 = _T_12 ? effectivePriority_4 : effectivePriority_5; // @[Misc.scala 34:9]
+  wire  _T_15 = _T_12 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_16 = effectivePriority_6 >= effectivePriority_7; // @[Plic.scala 345:20]
+  wire [3:0] _T_18 = _T_16 ? effectivePriority_6 : effectivePriority_7; // @[Misc.scala 34:9]
+  wire  _T_19 = _T_16 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_20 = _T_14 >= _T_18; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_1 = {{1'd0}, _T_19}; // @[Plic.scala 345:61]
+  wire [1:0] _T_21 = 2'h2 | _GEN_1; // @[Plic.scala 345:61]
+  wire [3:0] _T_22 = _T_20 ? _T_14 : _T_18; // @[Misc.scala 34:9]
+  wire [1:0] _T_23 = _T_20 ? {{1'd0}, _T_15} : _T_21; // @[Misc.scala 34:36]
+  wire  _T_24 = _T_10 >= _T_22; // @[Plic.scala 345:20]
+  wire [2:0] _GEN_2 = {{1'd0}, _T_23}; // @[Plic.scala 345:61]
+  wire [2:0] _T_25 = 3'h4 | _GEN_2; // @[Plic.scala 345:61]
+  wire [3:0] _T_26 = _T_24 ? _T_10 : _T_22; // @[Misc.scala 34:9]
+  wire [2:0] _T_27 = _T_24 ? {{1'd0}, _T_11} : _T_25; // @[Misc.scala 34:36]
+  wire  _T_28 = effectivePriority_8 >= effectivePriority_9; // @[Plic.scala 345:20]
+  wire [3:0] _T_30 = _T_28 ? effectivePriority_8 : effectivePriority_9; // @[Misc.scala 34:9]
+  wire  _T_31 = _T_28 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_32 = effectivePriority_10 >= effectivePriority_11; // @[Plic.scala 345:20]
+  wire [3:0] _T_34 = _T_32 ? effectivePriority_10 : effectivePriority_11; // @[Misc.scala 34:9]
+  wire  _T_35 = _T_32 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_36 = _T_30 >= _T_34; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_3 = {{1'd0}, _T_35}; // @[Plic.scala 345:61]
+  wire [1:0] _T_37 = 2'h2 | _GEN_3; // @[Plic.scala 345:61]
+  wire [3:0] _T_38 = _T_36 ? _T_30 : _T_34; // @[Misc.scala 34:9]
+  wire [1:0] _T_39 = _T_36 ? {{1'd0}, _T_31} : _T_37; // @[Misc.scala 34:36]
+  wire  _T_40 = effectivePriority_12 >= effectivePriority_13; // @[Plic.scala 345:20]
+  wire [3:0] _T_42 = _T_40 ? effectivePriority_12 : effectivePriority_13; // @[Misc.scala 34:9]
+  wire  _T_43 = _T_40 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_44 = effectivePriority_14 >= effectivePriority_15; // @[Plic.scala 345:20]
+  wire [3:0] _T_46 = _T_44 ? effectivePriority_14 : effectivePriority_15; // @[Misc.scala 34:9]
+  wire  _T_47 = _T_44 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_48 = _T_42 >= _T_46; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_4 = {{1'd0}, _T_47}; // @[Plic.scala 345:61]
+  wire [1:0] _T_49 = 2'h2 | _GEN_4; // @[Plic.scala 345:61]
+  wire [3:0] _T_50 = _T_48 ? _T_42 : _T_46; // @[Misc.scala 34:9]
+  wire [1:0] _T_51 = _T_48 ? {{1'd0}, _T_43} : _T_49; // @[Misc.scala 34:36]
+  wire  _T_52 = _T_38 >= _T_50; // @[Plic.scala 345:20]
+  wire [2:0] _GEN_5 = {{1'd0}, _T_51}; // @[Plic.scala 345:61]
+  wire [2:0] _T_53 = 3'h4 | _GEN_5; // @[Plic.scala 345:61]
+  wire [3:0] _T_54 = _T_52 ? _T_38 : _T_50; // @[Misc.scala 34:9]
+  wire [2:0] _T_55 = _T_52 ? {{1'd0}, _T_39} : _T_53; // @[Misc.scala 34:36]
+  wire  _T_56 = _T_26 >= _T_54; // @[Plic.scala 345:20]
+  wire [3:0] _GEN_6 = {{1'd0}, _T_55}; // @[Plic.scala 345:61]
+  wire [3:0] _T_57 = 4'h8 | _GEN_6; // @[Plic.scala 345:61]
+  wire [3:0] _T_58 = _T_56 ? _T_26 : _T_54; // @[Misc.scala 34:9]
+  wire [3:0] _T_59 = _T_56 ? {{1'd0}, _T_27} : _T_57; // @[Misc.scala 34:36]
+  wire  _T_60 = effectivePriority_16 >= effectivePriority_17; // @[Plic.scala 345:20]
+  wire [3:0] _T_62 = _T_60 ? effectivePriority_16 : effectivePriority_17; // @[Misc.scala 34:9]
+  wire  _T_63 = _T_60 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_64 = effectivePriority_18 >= effectivePriority_19; // @[Plic.scala 345:20]
+  wire [3:0] _T_66 = _T_64 ? effectivePriority_18 : effectivePriority_19; // @[Misc.scala 34:9]
+  wire  _T_67 = _T_64 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_68 = _T_62 >= _T_66; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_7 = {{1'd0}, _T_67}; // @[Plic.scala 345:61]
+  wire [1:0] _T_69 = 2'h2 | _GEN_7; // @[Plic.scala 345:61]
+  wire [3:0] _T_70 = _T_68 ? _T_62 : _T_66; // @[Misc.scala 34:9]
+  wire [1:0] _T_71 = _T_68 ? {{1'd0}, _T_63} : _T_69; // @[Misc.scala 34:36]
+  wire  _T_72 = effectivePriority_20 >= effectivePriority_21; // @[Plic.scala 345:20]
+  wire [3:0] _T_74 = _T_72 ? effectivePriority_20 : effectivePriority_21; // @[Misc.scala 34:9]
+  wire  _T_75 = _T_72 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_76 = effectivePriority_22 >= effectivePriority_23; // @[Plic.scala 345:20]
+  wire [3:0] _T_78 = _T_76 ? effectivePriority_22 : effectivePriority_23; // @[Misc.scala 34:9]
+  wire  _T_79 = _T_76 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_80 = _T_74 >= _T_78; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_8 = {{1'd0}, _T_79}; // @[Plic.scala 345:61]
+  wire [1:0] _T_81 = 2'h2 | _GEN_8; // @[Plic.scala 345:61]
+  wire [3:0] _T_82 = _T_80 ? _T_74 : _T_78; // @[Misc.scala 34:9]
+  wire [1:0] _T_83 = _T_80 ? {{1'd0}, _T_75} : _T_81; // @[Misc.scala 34:36]
+  wire  _T_84 = _T_70 >= _T_82; // @[Plic.scala 345:20]
+  wire [2:0] _GEN_9 = {{1'd0}, _T_83}; // @[Plic.scala 345:61]
+  wire [2:0] _T_85 = 3'h4 | _GEN_9; // @[Plic.scala 345:61]
+  wire [3:0] _T_86 = _T_84 ? _T_70 : _T_82; // @[Misc.scala 34:9]
+  wire [2:0] _T_87 = _T_84 ? {{1'd0}, _T_71} : _T_85; // @[Misc.scala 34:36]
+  wire  _T_88 = effectivePriority_24 >= effectivePriority_25; // @[Plic.scala 345:20]
+  wire [3:0] _T_90 = _T_88 ? effectivePriority_24 : effectivePriority_25; // @[Misc.scala 34:9]
+  wire  _T_91 = _T_88 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_92 = effectivePriority_26 >= effectivePriority_27; // @[Plic.scala 345:20]
+  wire [3:0] _T_94 = _T_92 ? effectivePriority_26 : effectivePriority_27; // @[Misc.scala 34:9]
+  wire  _T_95 = _T_92 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_96 = _T_90 >= _T_94; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_10 = {{1'd0}, _T_95}; // @[Plic.scala 345:61]
+  wire [1:0] _T_97 = 2'h2 | _GEN_10; // @[Plic.scala 345:61]
+  wire [3:0] _T_98 = _T_96 ? _T_90 : _T_94; // @[Misc.scala 34:9]
+  wire [1:0] _T_99 = _T_96 ? {{1'd0}, _T_91} : _T_97; // @[Misc.scala 34:36]
+  wire  _T_100 = effectivePriority_28 >= effectivePriority_29; // @[Plic.scala 345:20]
+  wire [3:0] _T_102 = _T_100 ? effectivePriority_28 : effectivePriority_29; // @[Misc.scala 34:9]
+  wire  _T_103 = _T_100 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_104 = effectivePriority_30 >= effectivePriority_31; // @[Plic.scala 345:20]
+  wire [3:0] _T_106 = _T_104 ? effectivePriority_30 : effectivePriority_31; // @[Misc.scala 34:9]
+  wire  _T_107 = _T_104 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_108 = _T_102 >= _T_106; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_11 = {{1'd0}, _T_107}; // @[Plic.scala 345:61]
+  wire [1:0] _T_109 = 2'h2 | _GEN_11; // @[Plic.scala 345:61]
+  wire [3:0] _T_110 = _T_108 ? _T_102 : _T_106; // @[Misc.scala 34:9]
+  wire [1:0] _T_111 = _T_108 ? {{1'd0}, _T_103} : _T_109; // @[Misc.scala 34:36]
+  wire  _T_112 = _T_98 >= _T_110; // @[Plic.scala 345:20]
+  wire [2:0] _GEN_12 = {{1'd0}, _T_111}; // @[Plic.scala 345:61]
+  wire [2:0] _T_113 = 3'h4 | _GEN_12; // @[Plic.scala 345:61]
+  wire [3:0] _T_114 = _T_112 ? _T_98 : _T_110; // @[Misc.scala 34:9]
+  wire [2:0] _T_115 = _T_112 ? {{1'd0}, _T_99} : _T_113; // @[Misc.scala 34:36]
+  wire  _T_116 = _T_86 >= _T_114; // @[Plic.scala 345:20]
+  wire [3:0] _GEN_13 = {{1'd0}, _T_115}; // @[Plic.scala 345:61]
+  wire [3:0] _T_117 = 4'h8 | _GEN_13; // @[Plic.scala 345:61]
+  wire [3:0] _T_118 = _T_116 ? _T_86 : _T_114; // @[Misc.scala 34:9]
+  wire [3:0] _T_119 = _T_116 ? {{1'd0}, _T_87} : _T_117; // @[Misc.scala 34:36]
+  wire  _T_120 = _T_58 >= _T_118; // @[Plic.scala 345:20]
+  wire [4:0] _GEN_14 = {{1'd0}, _T_119}; // @[Plic.scala 345:61]
+  wire [4:0] _T_121 = 5'h10 | _GEN_14; // @[Plic.scala 345:61]
+  wire [3:0] _T_122 = _T_120 ? _T_58 : _T_118; // @[Misc.scala 34:9]
+  wire [4:0] _T_123 = _T_120 ? {{1'd0}, _T_59} : _T_121; // @[Misc.scala 34:36]
+  wire  _T_124 = effectivePriority_32 >= effectivePriority_33; // @[Plic.scala 345:20]
+  wire [3:0] _T_126 = _T_124 ? effectivePriority_32 : effectivePriority_33; // @[Misc.scala 34:9]
+  wire  _T_127 = _T_124 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_128 = effectivePriority_34 >= effectivePriority_35; // @[Plic.scala 345:20]
+  wire [3:0] _T_130 = _T_128 ? effectivePriority_34 : effectivePriority_35; // @[Misc.scala 34:9]
+  wire  _T_131 = _T_128 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_132 = _T_126 >= _T_130; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_15 = {{1'd0}, _T_131}; // @[Plic.scala 345:61]
+  wire [1:0] _T_133 = 2'h2 | _GEN_15; // @[Plic.scala 345:61]
+  wire [3:0] _T_134 = _T_132 ? _T_126 : _T_130; // @[Misc.scala 34:9]
+  wire [1:0] _T_135 = _T_132 ? {{1'd0}, _T_127} : _T_133; // @[Misc.scala 34:36]
+  wire  _T_136 = effectivePriority_36 >= effectivePriority_37; // @[Plic.scala 345:20]
+  wire [3:0] _T_138 = _T_136 ? effectivePriority_36 : effectivePriority_37; // @[Misc.scala 34:9]
+  wire  _T_139 = _T_136 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_140 = effectivePriority_38 >= effectivePriority_39; // @[Plic.scala 345:20]
+  wire [3:0] _T_142 = _T_140 ? effectivePriority_38 : effectivePriority_39; // @[Misc.scala 34:9]
+  wire  _T_143 = _T_140 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_144 = _T_138 >= _T_142; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_16 = {{1'd0}, _T_143}; // @[Plic.scala 345:61]
+  wire [1:0] _T_145 = 2'h2 | _GEN_16; // @[Plic.scala 345:61]
+  wire [3:0] _T_146 = _T_144 ? _T_138 : _T_142; // @[Misc.scala 34:9]
+  wire [1:0] _T_147 = _T_144 ? {{1'd0}, _T_139} : _T_145; // @[Misc.scala 34:36]
+  wire  _T_148 = _T_134 >= _T_146; // @[Plic.scala 345:20]
+  wire [2:0] _GEN_17 = {{1'd0}, _T_147}; // @[Plic.scala 345:61]
+  wire [2:0] _T_149 = 3'h4 | _GEN_17; // @[Plic.scala 345:61]
+  wire [3:0] _T_150 = _T_148 ? _T_134 : _T_146; // @[Misc.scala 34:9]
+  wire [2:0] _T_151 = _T_148 ? {{1'd0}, _T_135} : _T_149; // @[Misc.scala 34:36]
+  wire  _T_152 = effectivePriority_40 >= effectivePriority_41; // @[Plic.scala 345:20]
+  wire [3:0] _T_154 = _T_152 ? effectivePriority_40 : effectivePriority_41; // @[Misc.scala 34:9]
+  wire  _T_155 = _T_152 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_156 = effectivePriority_42 >= effectivePriority_43; // @[Plic.scala 345:20]
+  wire [3:0] _T_158 = _T_156 ? effectivePriority_42 : effectivePriority_43; // @[Misc.scala 34:9]
+  wire  _T_159 = _T_156 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_160 = _T_154 >= _T_158; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_18 = {{1'd0}, _T_159}; // @[Plic.scala 345:61]
+  wire [1:0] _T_161 = 2'h2 | _GEN_18; // @[Plic.scala 345:61]
+  wire [3:0] _T_162 = _T_160 ? _T_154 : _T_158; // @[Misc.scala 34:9]
+  wire [1:0] _T_163 = _T_160 ? {{1'd0}, _T_155} : _T_161; // @[Misc.scala 34:36]
+  wire  _T_164 = effectivePriority_44 >= effectivePriority_45; // @[Plic.scala 345:20]
+  wire [3:0] _T_166 = _T_164 ? effectivePriority_44 : effectivePriority_45; // @[Misc.scala 34:9]
+  wire  _T_167 = _T_164 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_168 = effectivePriority_46 >= effectivePriority_47; // @[Plic.scala 345:20]
+  wire [3:0] _T_170 = _T_168 ? effectivePriority_46 : effectivePriority_47; // @[Misc.scala 34:9]
+  wire  _T_171 = _T_168 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_172 = _T_166 >= _T_170; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_19 = {{1'd0}, _T_171}; // @[Plic.scala 345:61]
+  wire [1:0] _T_173 = 2'h2 | _GEN_19; // @[Plic.scala 345:61]
+  wire [3:0] _T_174 = _T_172 ? _T_166 : _T_170; // @[Misc.scala 34:9]
+  wire [1:0] _T_175 = _T_172 ? {{1'd0}, _T_167} : _T_173; // @[Misc.scala 34:36]
+  wire  _T_176 = _T_162 >= _T_174; // @[Plic.scala 345:20]
+  wire [2:0] _GEN_20 = {{1'd0}, _T_175}; // @[Plic.scala 345:61]
+  wire [2:0] _T_177 = 3'h4 | _GEN_20; // @[Plic.scala 345:61]
+  wire [3:0] _T_178 = _T_176 ? _T_162 : _T_174; // @[Misc.scala 34:9]
+  wire [2:0] _T_179 = _T_176 ? {{1'd0}, _T_163} : _T_177; // @[Misc.scala 34:36]
+  wire  _T_180 = _T_150 >= _T_178; // @[Plic.scala 345:20]
+  wire [3:0] _GEN_21 = {{1'd0}, _T_179}; // @[Plic.scala 345:61]
+  wire [3:0] _T_181 = 4'h8 | _GEN_21; // @[Plic.scala 345:61]
+  wire [3:0] _T_182 = _T_180 ? _T_150 : _T_178; // @[Misc.scala 34:9]
+  wire [3:0] _T_183 = _T_180 ? {{1'd0}, _T_151} : _T_181; // @[Misc.scala 34:36]
+  wire  _T_184 = effectivePriority_48 >= effectivePriority_49; // @[Plic.scala 345:20]
+  wire [3:0] _T_186 = _T_184 ? effectivePriority_48 : effectivePriority_49; // @[Misc.scala 34:9]
+  wire  _T_187 = _T_184 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_188 = effectivePriority_50 >= effectivePriority_51; // @[Plic.scala 345:20]
+  wire [3:0] _T_190 = _T_188 ? effectivePriority_50 : effectivePriority_51; // @[Misc.scala 34:9]
+  wire  _T_191 = _T_188 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_192 = _T_186 >= _T_190; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_22 = {{1'd0}, _T_191}; // @[Plic.scala 345:61]
+  wire [1:0] _T_193 = 2'h2 | _GEN_22; // @[Plic.scala 345:61]
+  wire [3:0] _T_194 = _T_192 ? _T_186 : _T_190; // @[Misc.scala 34:9]
+  wire [1:0] _T_195 = _T_192 ? {{1'd0}, _T_187} : _T_193; // @[Misc.scala 34:36]
+  wire  _T_196 = effectivePriority_52 >= effectivePriority_53; // @[Plic.scala 345:20]
+  wire [3:0] _T_198 = _T_196 ? effectivePriority_52 : effectivePriority_53; // @[Misc.scala 34:9]
+  wire  _T_199 = _T_196 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_200 = effectivePriority_54 >= effectivePriority_55; // @[Plic.scala 345:20]
+  wire [3:0] _T_202 = _T_200 ? effectivePriority_54 : effectivePriority_55; // @[Misc.scala 34:9]
+  wire  _T_203 = _T_200 ? 1'h0 : 1'h1; // @[Misc.scala 34:36]
+  wire  _T_204 = _T_198 >= _T_202; // @[Plic.scala 345:20]
+  wire [1:0] _GEN_23 = {{1'd0}, _T_203}; // @[Plic.scala 345:61]
+  wire [1:0] _T_205 = 2'h2 | _GEN_23; // @[Plic.scala 345:61]
+  wire [3:0] _T_206 = _T_204 ? _T_198 : _T_202; // @[Misc.scala 34:9]
+  wire [1:0] _T_207 = _T_204 ? {{1'd0}, _T_199} : _T_205; // @[Misc.scala 34:36]
+  wire  _T_208 = _T_194 >= _T_206; // @[Plic.scala 345:20]
+  wire [2:0] _GEN_24 = {{1'd0}, _T_207}; // @[Plic.scala 345:61]
+  wire [2:0] _T_209 = 3'h4 | _GEN_24; // @[Plic.scala 345:61]
+  wire [3:0] _T_210 = _T_208 ? _T_194 : _T_206; // @[Misc.scala 34:9]
+  wire [2:0] _T_211 = _T_208 ? {{1'd0}, _T_195} : _T_209; // @[Misc.scala 34:36]
+  wire  _T_212 = _T_210 >= effectivePriority_56; // @[Plic.scala 345:20]
+  wire [3:0] _T_214 = _T_212 ? _T_210 : effectivePriority_56; // @[Misc.scala 34:9]
+  wire [3:0] _T_215 = _T_212 ? {{1'd0}, _T_211} : 4'h8; // @[Misc.scala 34:36]
+  wire  _T_216 = _T_182 >= _T_214; // @[Plic.scala 345:20]
+  wire [4:0] _GEN_25 = {{1'd0}, _T_215}; // @[Plic.scala 345:61]
+  wire [4:0] _T_217 = 5'h10 | _GEN_25; // @[Plic.scala 345:61]
+  wire [3:0] _T_218 = _T_216 ? _T_182 : _T_214; // @[Misc.scala 34:9]
+  wire [4:0] _T_219 = _T_216 ? {{1'd0}, _T_183} : _T_217; // @[Misc.scala 34:36]
+  wire  _T_220 = _T_122 >= _T_218; // @[Plic.scala 345:20]
+  wire [5:0] _GEN_26 = {{1'd0}, _T_219}; // @[Plic.scala 345:61]
+  wire [5:0] _T_221 = 6'h20 | _GEN_26; // @[Plic.scala 345:61]
+  wire [3:0] maxPri = _T_220 ? _T_122 : _T_218; // @[Misc.scala 34:9]
+  assign io_dev = _T_220 ? {{1'd0}, _T_123} : _T_221; // @[Misc.scala 34:36]
+  assign io_max = maxPri[2:0]; // @[Plic.scala 351:10]
+endmodule
+module Queue_22(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input         io_enq_bits_read,
+  input  [23:0] io_enq_bits_index,
+  input  [31:0] io_enq_bits_data,
+  input  [3:0]  io_enq_bits_mask,
+  input  [6:0]  io_enq_bits_extra_tlrr_extra_source,
+  input  [1:0]  io_enq_bits_extra_tlrr_extra_size,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output        io_deq_bits_read,
+  output [23:0] io_deq_bits_index,
+  output [31:0] io_deq_bits_data,
+  output [3:0]  io_deq_bits_mask,
+  output [6:0]  io_deq_bits_extra_tlrr_extra_source,
+  output [1:0]  io_deq_bits_extra_tlrr_extra_size
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_REG_INIT
+  reg  ram_read [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_read_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_read_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_read_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_read_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_read_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_read_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_read_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [23:0] ram_index [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_index_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_index_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [23:0] ram_index_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [23:0] ram_index_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_index_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_index_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_index_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_mask [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [6:0] ram_extra_tlrr_extra_source [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [6:0] ram_extra_tlrr_extra_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [6:0] ram_extra_tlrr_extra_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_extra_tlrr_extra_size [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_extra_tlrr_extra_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_extra_tlrr_extra_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  empty = ~maybe_full; // @[Decoupled.scala 264:28]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_read_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_read_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_read_io_deq_bits_MPORT_data = ram_read[ram_read_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_read_MPORT_data = io_enq_bits_read;
+  assign ram_read_MPORT_addr = 1'h0;
+  assign ram_read_MPORT_mask = 1'h1;
+  assign ram_read_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_index_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_index_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_index_io_deq_bits_MPORT_data = ram_index[ram_index_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_index_MPORT_data = io_enq_bits_index;
+  assign ram_index_MPORT_addr = 1'h0;
+  assign ram_index_MPORT_mask = 1'h1;
+  assign ram_index_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = 1'h0;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = 1'h0;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_extra_tlrr_extra_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_extra_tlrr_extra_source_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_extra_tlrr_extra_source_io_deq_bits_MPORT_data =
+    ram_extra_tlrr_extra_source[ram_extra_tlrr_extra_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_extra_tlrr_extra_source_MPORT_data = io_enq_bits_extra_tlrr_extra_source;
+  assign ram_extra_tlrr_extra_source_MPORT_addr = 1'h0;
+  assign ram_extra_tlrr_extra_source_MPORT_mask = 1'h1;
+  assign ram_extra_tlrr_extra_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_extra_tlrr_extra_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_extra_tlrr_extra_size_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_extra_tlrr_extra_size_io_deq_bits_MPORT_data =
+    ram_extra_tlrr_extra_size[ram_extra_tlrr_extra_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_extra_tlrr_extra_size_MPORT_data = io_enq_bits_extra_tlrr_extra_size;
+  assign ram_extra_tlrr_extra_size_MPORT_addr = 1'h0;
+  assign ram_extra_tlrr_extra_size_MPORT_mask = 1'h1;
+  assign ram_extra_tlrr_extra_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~maybe_full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_read = ram_read_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_index = ram_index_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_extra_tlrr_extra_source = ram_extra_tlrr_extra_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_extra_tlrr_extra_size = ram_extra_tlrr_extra_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_read_MPORT_en & ram_read_MPORT_mask) begin
+      ram_read[ram_read_MPORT_addr] <= ram_read_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_index_MPORT_en & ram_index_MPORT_mask) begin
+      ram_index[ram_index_MPORT_addr] <= ram_index_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_extra_tlrr_extra_source_MPORT_en & ram_extra_tlrr_extra_source_MPORT_mask) begin
+      ram_extra_tlrr_extra_source[ram_extra_tlrr_extra_source_MPORT_addr] <= ram_extra_tlrr_extra_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_extra_tlrr_extra_size_MPORT_en & ram_extra_tlrr_extra_size_MPORT_mask) begin
+      ram_extra_tlrr_extra_size[ram_extra_tlrr_extra_size_MPORT_addr] <= ram_extra_tlrr_extra_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_read[initvar] = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_index[initvar] = _RAND_1[23:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_data[initvar] = _RAND_2[31:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_extra_tlrr_extra_source[initvar] = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_extra_tlrr_extra_size[initvar] = _RAND_5[1:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_6 = {1{`RANDOM}};
+  maybe_full = _RAND_6[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLPLIC(
+  input         clock,
+  input         reset,
+  input         auto_int_in_0,
+  input         auto_int_in_1,
+  input         auto_int_in_2,
+  input         auto_int_in_3,
+  input         auto_int_in_4,
+  input         auto_int_in_5,
+  input         auto_int_in_6,
+  input         auto_int_in_7,
+  input         auto_int_in_8,
+  input         auto_int_in_9,
+  input         auto_int_in_10,
+  input         auto_int_in_11,
+  input         auto_int_in_12,
+  input         auto_int_in_13,
+  input         auto_int_in_14,
+  input         auto_int_in_15,
+  input         auto_int_in_16,
+  input         auto_int_in_17,
+  input         auto_int_in_18,
+  input         auto_int_in_19,
+  input         auto_int_in_20,
+  input         auto_int_in_21,
+  input         auto_int_in_22,
+  input         auto_int_in_23,
+  input         auto_int_in_24,
+  input         auto_int_in_25,
+  input         auto_int_in_26,
+  input         auto_int_in_27,
+  input         auto_int_in_28,
+  input         auto_int_in_29,
+  input         auto_int_in_30,
+  input         auto_int_in_31,
+  input         auto_int_in_32,
+  input         auto_int_in_33,
+  input         auto_int_in_34,
+  input         auto_int_in_35,
+  input         auto_int_in_36,
+  input         auto_int_in_37,
+  input         auto_int_in_38,
+  input         auto_int_in_39,
+  input         auto_int_in_40,
+  input         auto_int_in_41,
+  input         auto_int_in_42,
+  input         auto_int_in_43,
+  input         auto_int_in_44,
+  input         auto_int_in_45,
+  input         auto_int_in_46,
+  input         auto_int_in_47,
+  input         auto_int_in_48,
+  input         auto_int_in_49,
+  input         auto_int_in_50,
+  input         auto_int_in_51,
+  input         auto_int_in_52,
+  input         auto_int_in_53,
+  input         auto_int_in_54,
+  input         auto_int_in_55,
+  output        auto_int_out_1_0,
+  output        auto_int_out_0_0,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [1:0]  auto_in_a_bits_size,
+  input  [6:0]  auto_in_a_bits_source,
+  input  [27:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_size,
+  output [6:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+  reg [31:0] _RAND_47;
+  reg [31:0] _RAND_48;
+  reg [31:0] _RAND_49;
+  reg [31:0] _RAND_50;
+  reg [31:0] _RAND_51;
+  reg [31:0] _RAND_52;
+  reg [31:0] _RAND_53;
+  reg [31:0] _RAND_54;
+  reg [31:0] _RAND_55;
+  reg [31:0] _RAND_56;
+  reg [31:0] _RAND_57;
+  reg [31:0] _RAND_58;
+  reg [31:0] _RAND_59;
+  reg [31:0] _RAND_60;
+  reg [31:0] _RAND_61;
+  reg [31:0] _RAND_62;
+  reg [31:0] _RAND_63;
+  reg [31:0] _RAND_64;
+  reg [31:0] _RAND_65;
+  reg [31:0] _RAND_66;
+  reg [31:0] _RAND_67;
+  reg [31:0] _RAND_68;
+  reg [31:0] _RAND_69;
+  reg [31:0] _RAND_70;
+  reg [31:0] _RAND_71;
+  reg [31:0] _RAND_72;
+  reg [31:0] _RAND_73;
+  reg [31:0] _RAND_74;
+  reg [31:0] _RAND_75;
+  reg [31:0] _RAND_76;
+  reg [31:0] _RAND_77;
+  reg [31:0] _RAND_78;
+  reg [31:0] _RAND_79;
+  reg [31:0] _RAND_80;
+  reg [31:0] _RAND_81;
+  reg [31:0] _RAND_82;
+  reg [31:0] _RAND_83;
+  reg [31:0] _RAND_84;
+  reg [31:0] _RAND_85;
+  reg [31:0] _RAND_86;
+  reg [31:0] _RAND_87;
+  reg [31:0] _RAND_88;
+  reg [31:0] _RAND_89;
+  reg [31:0] _RAND_90;
+  reg [31:0] _RAND_91;
+  reg [31:0] _RAND_92;
+  reg [31:0] _RAND_93;
+  reg [31:0] _RAND_94;
+  reg [31:0] _RAND_95;
+  reg [31:0] _RAND_96;
+  reg [31:0] _RAND_97;
+  reg [31:0] _RAND_98;
+  reg [31:0] _RAND_99;
+  reg [31:0] _RAND_100;
+  reg [31:0] _RAND_101;
+  reg [31:0] _RAND_102;
+  reg [31:0] _RAND_103;
+  reg [31:0] _RAND_104;
+  reg [31:0] _RAND_105;
+  reg [31:0] _RAND_106;
+  reg [31:0] _RAND_107;
+  reg [31:0] _RAND_108;
+  reg [31:0] _RAND_109;
+  reg [31:0] _RAND_110;
+  reg [31:0] _RAND_111;
+  reg [31:0] _RAND_112;
+  reg [31:0] _RAND_113;
+  reg [31:0] _RAND_114;
+  reg [31:0] _RAND_115;
+  reg [31:0] _RAND_116;
+  reg [31:0] _RAND_117;
+  reg [31:0] _RAND_118;
+  reg [31:0] _RAND_119;
+  reg [31:0] _RAND_120;
+  reg [31:0] _RAND_121;
+  reg [31:0] _RAND_122;
+  reg [31:0] _RAND_123;
+  reg [31:0] _RAND_124;
+  reg [31:0] _RAND_125;
+  reg [31:0] _RAND_126;
+  reg [31:0] _RAND_127;
+  reg [31:0] _RAND_128;
+  reg [31:0] _RAND_129;
+  reg [31:0] _RAND_130;
+  reg [31:0] _RAND_131;
+  reg [31:0] _RAND_132;
+  reg [31:0] _RAND_133;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [27:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  gateways_gateway_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_1_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_1_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_1_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_1_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_1_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_1_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_2_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_2_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_2_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_2_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_2_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_2_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_3_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_3_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_3_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_3_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_3_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_3_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_4_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_4_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_4_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_4_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_4_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_4_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_5_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_5_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_5_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_5_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_5_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_5_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_6_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_6_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_6_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_6_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_6_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_6_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_7_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_7_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_7_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_7_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_7_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_7_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_8_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_8_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_8_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_8_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_8_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_8_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_9_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_9_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_9_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_9_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_9_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_9_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_10_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_10_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_10_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_10_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_10_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_10_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_11_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_11_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_11_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_11_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_11_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_11_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_12_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_12_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_12_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_12_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_12_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_12_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_13_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_13_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_13_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_13_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_13_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_13_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_14_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_14_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_14_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_14_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_14_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_14_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_15_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_15_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_15_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_15_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_15_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_15_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_16_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_16_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_16_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_16_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_16_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_16_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_17_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_17_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_17_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_17_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_17_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_17_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_18_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_18_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_18_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_18_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_18_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_18_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_19_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_19_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_19_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_19_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_19_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_19_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_20_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_20_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_20_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_20_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_20_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_20_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_21_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_21_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_21_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_21_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_21_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_21_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_22_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_22_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_22_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_22_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_22_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_22_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_23_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_23_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_23_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_23_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_23_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_23_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_24_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_24_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_24_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_24_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_24_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_24_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_25_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_25_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_25_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_25_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_25_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_25_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_26_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_26_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_26_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_26_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_26_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_26_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_27_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_27_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_27_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_27_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_27_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_27_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_28_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_28_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_28_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_28_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_28_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_28_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_29_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_29_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_29_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_29_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_29_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_29_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_30_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_30_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_30_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_30_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_30_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_30_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_31_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_31_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_31_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_31_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_31_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_31_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_32_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_32_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_32_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_32_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_32_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_32_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_33_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_33_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_33_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_33_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_33_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_33_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_34_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_34_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_34_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_34_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_34_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_34_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_35_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_35_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_35_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_35_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_35_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_35_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_36_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_36_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_36_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_36_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_36_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_36_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_37_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_37_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_37_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_37_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_37_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_37_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_38_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_38_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_38_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_38_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_38_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_38_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_39_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_39_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_39_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_39_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_39_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_39_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_40_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_40_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_40_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_40_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_40_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_40_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_41_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_41_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_41_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_41_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_41_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_41_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_42_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_42_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_42_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_42_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_42_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_42_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_43_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_43_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_43_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_43_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_43_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_43_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_44_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_44_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_44_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_44_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_44_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_44_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_45_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_45_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_45_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_45_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_45_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_45_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_46_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_46_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_46_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_46_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_46_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_46_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_47_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_47_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_47_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_47_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_47_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_47_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_48_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_48_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_48_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_48_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_48_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_48_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_49_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_49_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_49_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_49_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_49_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_49_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_50_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_50_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_50_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_50_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_50_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_50_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_51_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_51_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_51_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_51_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_51_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_51_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_52_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_52_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_52_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_52_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_52_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_52_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_53_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_53_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_53_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_53_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_53_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_53_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_54_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_54_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_54_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_54_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_54_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_54_io_plic_complete; // @[Plic.scala 156:27]
+  wire  gateways_gateway_55_clock; // @[Plic.scala 156:27]
+  wire  gateways_gateway_55_reset; // @[Plic.scala 156:27]
+  wire  gateways_gateway_55_io_interrupt; // @[Plic.scala 156:27]
+  wire  gateways_gateway_55_io_plic_valid; // @[Plic.scala 156:27]
+  wire  gateways_gateway_55_io_plic_ready; // @[Plic.scala 156:27]
+  wire  gateways_gateway_55_io_plic_complete; // @[Plic.scala 156:27]
+  wire [2:0] fanin_io_prio_0; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_1; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_2; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_3; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_4; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_5; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_6; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_7; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_8; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_9; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_10; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_11; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_12; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_13; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_14; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_15; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_16; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_17; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_18; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_19; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_20; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_21; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_22; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_23; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_24; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_25; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_26; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_27; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_28; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_29; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_30; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_31; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_32; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_33; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_34; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_35; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_36; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_37; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_38; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_39; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_40; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_41; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_42; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_43; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_44; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_45; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_46; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_47; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_48; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_49; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_50; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_51; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_52; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_53; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_54; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_prio_55; // @[Plic.scala 184:25]
+  wire [55:0] fanin_io_ip; // @[Plic.scala 184:25]
+  wire [5:0] fanin_io_dev; // @[Plic.scala 184:25]
+  wire [2:0] fanin_io_max; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_0; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_1; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_2; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_3; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_4; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_5; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_6; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_7; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_8; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_9; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_10; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_11; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_12; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_13; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_14; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_15; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_16; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_17; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_18; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_19; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_20; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_21; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_22; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_23; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_24; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_25; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_26; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_27; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_28; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_29; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_30; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_31; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_32; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_33; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_34; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_35; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_36; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_37; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_38; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_39; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_40; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_41; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_42; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_43; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_44; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_45; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_46; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_47; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_48; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_49; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_50; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_51; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_52; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_53; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_54; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_prio_55; // @[Plic.scala 184:25]
+  wire [55:0] fanin_1_io_ip; // @[Plic.scala 184:25]
+  wire [5:0] fanin_1_io_dev; // @[Plic.scala 184:25]
+  wire [2:0] fanin_1_io_max; // @[Plic.scala 184:25]
+  wire  out_back_clock; // @[Decoupled.scala 361:21]
+  wire  out_back_reset; // @[Decoupled.scala 361:21]
+  wire  out_back_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  out_back_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire  out_back_io_enq_bits_read; // @[Decoupled.scala 361:21]
+  wire [23:0] out_back_io_enq_bits_index; // @[Decoupled.scala 361:21]
+  wire [31:0] out_back_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire [3:0] out_back_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [6:0] out_back_io_enq_bits_extra_tlrr_extra_source; // @[Decoupled.scala 361:21]
+  wire [1:0] out_back_io_enq_bits_extra_tlrr_extra_size; // @[Decoupled.scala 361:21]
+  wire  out_back_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  out_back_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire  out_back_io_deq_bits_read; // @[Decoupled.scala 361:21]
+  wire [23:0] out_back_io_deq_bits_index; // @[Decoupled.scala 361:21]
+  wire [31:0] out_back_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire [3:0] out_back_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [6:0] out_back_io_deq_bits_extra_tlrr_extra_source; // @[Decoupled.scala 361:21]
+  wire [1:0] out_back_io_deq_bits_extra_tlrr_extra_size; // @[Decoupled.scala 361:21]
+  reg [2:0] priority_0; // @[Plic.scala 163:31]
+  reg [2:0] priority_1; // @[Plic.scala 163:31]
+  reg [2:0] priority_2; // @[Plic.scala 163:31]
+  reg [2:0] priority_3; // @[Plic.scala 163:31]
+  reg [2:0] priority_4; // @[Plic.scala 163:31]
+  reg [2:0] priority_5; // @[Plic.scala 163:31]
+  reg [2:0] priority_6; // @[Plic.scala 163:31]
+  reg [2:0] priority_7; // @[Plic.scala 163:31]
+  reg [2:0] priority_8; // @[Plic.scala 163:31]
+  reg [2:0] priority_9; // @[Plic.scala 163:31]
+  reg [2:0] priority_10; // @[Plic.scala 163:31]
+  reg [2:0] priority_11; // @[Plic.scala 163:31]
+  reg [2:0] priority_12; // @[Plic.scala 163:31]
+  reg [2:0] priority_13; // @[Plic.scala 163:31]
+  reg [2:0] priority_14; // @[Plic.scala 163:31]
+  reg [2:0] priority_15; // @[Plic.scala 163:31]
+  reg [2:0] priority_16; // @[Plic.scala 163:31]
+  reg [2:0] priority_17; // @[Plic.scala 163:31]
+  reg [2:0] priority_18; // @[Plic.scala 163:31]
+  reg [2:0] priority_19; // @[Plic.scala 163:31]
+  reg [2:0] priority_20; // @[Plic.scala 163:31]
+  reg [2:0] priority_21; // @[Plic.scala 163:31]
+  reg [2:0] priority_22; // @[Plic.scala 163:31]
+  reg [2:0] priority_23; // @[Plic.scala 163:31]
+  reg [2:0] priority_24; // @[Plic.scala 163:31]
+  reg [2:0] priority_25; // @[Plic.scala 163:31]
+  reg [2:0] priority_26; // @[Plic.scala 163:31]
+  reg [2:0] priority_27; // @[Plic.scala 163:31]
+  reg [2:0] priority_28; // @[Plic.scala 163:31]
+  reg [2:0] priority_29; // @[Plic.scala 163:31]
+  reg [2:0] priority_30; // @[Plic.scala 163:31]
+  reg [2:0] priority_31; // @[Plic.scala 163:31]
+  reg [2:0] priority_32; // @[Plic.scala 163:31]
+  reg [2:0] priority_33; // @[Plic.scala 163:31]
+  reg [2:0] priority_34; // @[Plic.scala 163:31]
+  reg [2:0] priority_35; // @[Plic.scala 163:31]
+  reg [2:0] priority_36; // @[Plic.scala 163:31]
+  reg [2:0] priority_37; // @[Plic.scala 163:31]
+  reg [2:0] priority_38; // @[Plic.scala 163:31]
+  reg [2:0] priority_39; // @[Plic.scala 163:31]
+  reg [2:0] priority_40; // @[Plic.scala 163:31]
+  reg [2:0] priority_41; // @[Plic.scala 163:31]
+  reg [2:0] priority_42; // @[Plic.scala 163:31]
+  reg [2:0] priority_43; // @[Plic.scala 163:31]
+  reg [2:0] priority_44; // @[Plic.scala 163:31]
+  reg [2:0] priority_45; // @[Plic.scala 163:31]
+  reg [2:0] priority_46; // @[Plic.scala 163:31]
+  reg [2:0] priority_47; // @[Plic.scala 163:31]
+  reg [2:0] priority_48; // @[Plic.scala 163:31]
+  reg [2:0] priority_49; // @[Plic.scala 163:31]
+  reg [2:0] priority_50; // @[Plic.scala 163:31]
+  reg [2:0] priority_51; // @[Plic.scala 163:31]
+  reg [2:0] priority_52; // @[Plic.scala 163:31]
+  reg [2:0] priority_53; // @[Plic.scala 163:31]
+  reg [2:0] priority_54; // @[Plic.scala 163:31]
+  reg [2:0] priority_55; // @[Plic.scala 163:31]
+  reg [2:0] threshold_0; // @[Plic.scala 166:31]
+  reg [2:0] threshold_1; // @[Plic.scala 166:31]
+  reg  pending_0; // @[Plic.scala 168:22]
+  reg  pending_1; // @[Plic.scala 168:22]
+  reg  pending_2; // @[Plic.scala 168:22]
+  reg  pending_3; // @[Plic.scala 168:22]
+  reg  pending_4; // @[Plic.scala 168:22]
+  reg  pending_5; // @[Plic.scala 168:22]
+  reg  pending_6; // @[Plic.scala 168:22]
+  reg  pending_7; // @[Plic.scala 168:22]
+  reg  pending_8; // @[Plic.scala 168:22]
+  reg  pending_9; // @[Plic.scala 168:22]
+  reg  pending_10; // @[Plic.scala 168:22]
+  reg  pending_11; // @[Plic.scala 168:22]
+  reg  pending_12; // @[Plic.scala 168:22]
+  reg  pending_13; // @[Plic.scala 168:22]
+  reg  pending_14; // @[Plic.scala 168:22]
+  reg  pending_15; // @[Plic.scala 168:22]
+  reg  pending_16; // @[Plic.scala 168:22]
+  reg  pending_17; // @[Plic.scala 168:22]
+  reg  pending_18; // @[Plic.scala 168:22]
+  reg  pending_19; // @[Plic.scala 168:22]
+  reg  pending_20; // @[Plic.scala 168:22]
+  reg  pending_21; // @[Plic.scala 168:22]
+  reg  pending_22; // @[Plic.scala 168:22]
+  reg  pending_23; // @[Plic.scala 168:22]
+  reg  pending_24; // @[Plic.scala 168:22]
+  reg  pending_25; // @[Plic.scala 168:22]
+  reg  pending_26; // @[Plic.scala 168:22]
+  reg  pending_27; // @[Plic.scala 168:22]
+  reg  pending_28; // @[Plic.scala 168:22]
+  reg  pending_29; // @[Plic.scala 168:22]
+  reg  pending_30; // @[Plic.scala 168:22]
+  reg  pending_31; // @[Plic.scala 168:22]
+  reg  pending_32; // @[Plic.scala 168:22]
+  reg  pending_33; // @[Plic.scala 168:22]
+  reg  pending_34; // @[Plic.scala 168:22]
+  reg  pending_35; // @[Plic.scala 168:22]
+  reg  pending_36; // @[Plic.scala 168:22]
+  reg  pending_37; // @[Plic.scala 168:22]
+  reg  pending_38; // @[Plic.scala 168:22]
+  reg  pending_39; // @[Plic.scala 168:22]
+  reg  pending_40; // @[Plic.scala 168:22]
+  reg  pending_41; // @[Plic.scala 168:22]
+  reg  pending_42; // @[Plic.scala 168:22]
+  reg  pending_43; // @[Plic.scala 168:22]
+  reg  pending_44; // @[Plic.scala 168:22]
+  reg  pending_45; // @[Plic.scala 168:22]
+  reg  pending_46; // @[Plic.scala 168:22]
+  reg  pending_47; // @[Plic.scala 168:22]
+  reg  pending_48; // @[Plic.scala 168:22]
+  reg  pending_49; // @[Plic.scala 168:22]
+  reg  pending_50; // @[Plic.scala 168:22]
+  reg  pending_51; // @[Plic.scala 168:22]
+  reg  pending_52; // @[Plic.scala 168:22]
+  reg  pending_53; // @[Plic.scala 168:22]
+  reg  pending_54; // @[Plic.scala 168:22]
+  reg  pending_55; // @[Plic.scala 168:22]
+  reg [6:0] enables_0_0; // @[Plic.scala 174:26]
+  reg [7:0] enables_0_1; // @[Plic.scala 175:50]
+  reg [7:0] enables_0_2; // @[Plic.scala 175:50]
+  reg [7:0] enables_0_3; // @[Plic.scala 175:50]
+  reg [7:0] enables_0_4; // @[Plic.scala 175:50]
+  reg [7:0] enables_0_5; // @[Plic.scala 175:50]
+  reg [7:0] enables_0_6; // @[Plic.scala 175:50]
+  reg  enables_0_7; // @[Plic.scala 176:51]
+  reg [6:0] enables_1_0; // @[Plic.scala 174:26]
+  reg [7:0] enables_1_1; // @[Plic.scala 175:50]
+  reg [7:0] enables_1_2; // @[Plic.scala 175:50]
+  reg [7:0] enables_1_3; // @[Plic.scala 175:50]
+  reg [7:0] enables_1_4; // @[Plic.scala 175:50]
+  reg [7:0] enables_1_5; // @[Plic.scala 175:50]
+  reg [7:0] enables_1_6; // @[Plic.scala 175:50]
+  reg  enables_1_7; // @[Plic.scala 176:51]
+  wire [55:0] enableVec_0 = {enables_0_7,enables_0_6,enables_0_5,enables_0_4,enables_0_3,enables_0_2,enables_0_1,
+    enables_0_0}; // @[Cat.scala 31:58]
+  wire [55:0] enableVec_1 = {enables_1_7,enables_1_6,enables_1_5,enables_1_4,enables_1_3,enables_1_2,enables_1_1,
+    enables_1_0}; // @[Cat.scala 31:58]
+  wire [56:0] enableVec0_0 = {enables_0_7,enables_0_6,enables_0_5,enables_0_4,enables_0_3,enables_0_2,enables_0_1,
+    enables_0_0,1'h0}; // @[Cat.scala 31:58]
+  wire [56:0] enableVec0_1 = {enables_1_7,enables_1_6,enables_1_5,enables_1_4,enables_1_3,enables_1_2,enables_1_1,
+    enables_1_0,1'h0}; // @[Cat.scala 31:58]
+  reg [5:0] maxDevs_0; // @[Plic.scala 181:22]
+  reg [5:0] maxDevs_1; // @[Plic.scala 181:22]
+  wire [6:0] pendingUInt_lo_lo_lo = {pending_6,pending_5,pending_4,pending_3,pending_2,pending_1,pending_0}; // @[Cat.scala 31:58]
+  wire [13:0] pendingUInt_lo_lo = {pending_13,pending_12,pending_11,pending_10,pending_9,pending_8,pending_7,
+    pendingUInt_lo_lo_lo}; // @[Cat.scala 31:58]
+  wire [6:0] pendingUInt_lo_hi_lo = {pending_20,pending_19,pending_18,pending_17,pending_16,pending_15,pending_14}; // @[Cat.scala 31:58]
+  wire [27:0] pendingUInt_lo = {pending_27,pending_26,pending_25,pending_24,pending_23,pending_22,pending_21,
+    pendingUInt_lo_hi_lo,pendingUInt_lo_lo}; // @[Cat.scala 31:58]
+  wire [6:0] pendingUInt_hi_lo_lo = {pending_34,pending_33,pending_32,pending_31,pending_30,pending_29,pending_28}; // @[Cat.scala 31:58]
+  wire [13:0] pendingUInt_hi_lo = {pending_41,pending_40,pending_39,pending_38,pending_37,pending_36,pending_35,
+    pendingUInt_hi_lo_lo}; // @[Cat.scala 31:58]
+  wire [6:0] pendingUInt_hi_hi_lo = {pending_48,pending_47,pending_46,pending_45,pending_44,pending_43,pending_42}; // @[Cat.scala 31:58]
+  wire [55:0] pendingUInt = {pending_55,pending_54,pending_53,pending_52,pending_51,pending_50,pending_49,
+    pendingUInt_hi_hi_lo,pendingUInt_hi_lo,pendingUInt_lo}; // @[Cat.scala 31:58]
+  reg [2:0] bundleOut_0_0_REG; // @[Plic.scala 188:41]
+  reg [2:0] bundleOut_1_0_REG; // @[Plic.scala 188:41]
+  wire [8:0] out_oindex = {out_back_io_deq_bits_index[19],out_back_io_deq_bits_index[11],out_back_io_deq_bits_index[10],
+    out_back_io_deq_bits_index[5],out_back_io_deq_bits_index[4],out_back_io_deq_bits_index[3],out_back_io_deq_bits_index
+    [2],out_back_io_deq_bits_index[1],out_back_io_deq_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [511:0] _out_backSel_T = 512'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_321 = _out_backSel_T[321]; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_bindex = out_back_io_deq_bits_index & 24'hf7f3c0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_101 = out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_roready_118 = out_back_io_deq_valid & auto_in_d_ready & out_back_io_deq_bits_read & out_backSel_321 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backMask_T_11 = out_back_io_deq_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = out_back_io_deq_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_7 = out_back_io_deq_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_5 = out_back_io_deq_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_backMask = {_out_backMask_T_11,_out_backMask_T_9,_out_backMask_T_7,_out_backMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_romask_118 = |out_backMask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_118 = out_roready_118 & out_romask_118; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_257 = _out_backSel_T[257]; // @[RegisterRouter.scala 83:24]
+  wire  out_roready_48 = out_back_io_deq_valid & auto_in_d_ready & out_back_io_deq_bits_read & out_backSel_257 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_48 = out_roready_48 & out_romask_118; // @[RegisterRouter.scala 83:24]
+  wire [1:0] _T = {out_f_roready_118,out_f_roready_48}; // @[Plic.scala 245:21]
+  wire [1:0] _T_3 = _T - 2'h1; // @[Plic.scala 245:46]
+  wire [1:0] _T_4 = _T & _T_3; // @[Plic.scala 245:28]
+  wire  _T_7 = ~reset; // @[Plic.scala 245:11]
+  wire [5:0] _claiming_T = out_f_roready_48 ? maxDevs_0 : 6'h0; // @[Plic.scala 246:49]
+  wire [5:0] _claiming_T_1 = out_f_roready_118 ? maxDevs_1 : 6'h0; // @[Plic.scala 246:49]
+  wire [5:0] claiming = _claiming_T | _claiming_T_1; // @[Plic.scala 246:96]
+  wire [63:0] _claimedDevs_T = 64'h1 << claiming; // @[OneHot.scala 64:12]
+  wire  claimedDevs_1 = _claimedDevs_T[1]; // @[Plic.scala 247:58]
+  wire  claimedDevs_2 = _claimedDevs_T[2]; // @[Plic.scala 247:58]
+  wire  claimedDevs_3 = _claimedDevs_T[3]; // @[Plic.scala 247:58]
+  wire  claimedDevs_4 = _claimedDevs_T[4]; // @[Plic.scala 247:58]
+  wire  claimedDevs_5 = _claimedDevs_T[5]; // @[Plic.scala 247:58]
+  wire  claimedDevs_6 = _claimedDevs_T[6]; // @[Plic.scala 247:58]
+  wire  claimedDevs_7 = _claimedDevs_T[7]; // @[Plic.scala 247:58]
+  wire  claimedDevs_8 = _claimedDevs_T[8]; // @[Plic.scala 247:58]
+  wire  claimedDevs_9 = _claimedDevs_T[9]; // @[Plic.scala 247:58]
+  wire  claimedDevs_10 = _claimedDevs_T[10]; // @[Plic.scala 247:58]
+  wire  claimedDevs_11 = _claimedDevs_T[11]; // @[Plic.scala 247:58]
+  wire  claimedDevs_12 = _claimedDevs_T[12]; // @[Plic.scala 247:58]
+  wire  claimedDevs_13 = _claimedDevs_T[13]; // @[Plic.scala 247:58]
+  wire  claimedDevs_14 = _claimedDevs_T[14]; // @[Plic.scala 247:58]
+  wire  claimedDevs_15 = _claimedDevs_T[15]; // @[Plic.scala 247:58]
+  wire  claimedDevs_16 = _claimedDevs_T[16]; // @[Plic.scala 247:58]
+  wire  claimedDevs_17 = _claimedDevs_T[17]; // @[Plic.scala 247:58]
+  wire  claimedDevs_18 = _claimedDevs_T[18]; // @[Plic.scala 247:58]
+  wire  claimedDevs_19 = _claimedDevs_T[19]; // @[Plic.scala 247:58]
+  wire  claimedDevs_20 = _claimedDevs_T[20]; // @[Plic.scala 247:58]
+  wire  claimedDevs_21 = _claimedDevs_T[21]; // @[Plic.scala 247:58]
+  wire  claimedDevs_22 = _claimedDevs_T[22]; // @[Plic.scala 247:58]
+  wire  claimedDevs_23 = _claimedDevs_T[23]; // @[Plic.scala 247:58]
+  wire  claimedDevs_24 = _claimedDevs_T[24]; // @[Plic.scala 247:58]
+  wire  claimedDevs_25 = _claimedDevs_T[25]; // @[Plic.scala 247:58]
+  wire  claimedDevs_26 = _claimedDevs_T[26]; // @[Plic.scala 247:58]
+  wire  claimedDevs_27 = _claimedDevs_T[27]; // @[Plic.scala 247:58]
+  wire  claimedDevs_28 = _claimedDevs_T[28]; // @[Plic.scala 247:58]
+  wire  claimedDevs_29 = _claimedDevs_T[29]; // @[Plic.scala 247:58]
+  wire  claimedDevs_30 = _claimedDevs_T[30]; // @[Plic.scala 247:58]
+  wire  claimedDevs_31 = _claimedDevs_T[31]; // @[Plic.scala 247:58]
+  wire  claimedDevs_32 = _claimedDevs_T[32]; // @[Plic.scala 247:58]
+  wire  claimedDevs_33 = _claimedDevs_T[33]; // @[Plic.scala 247:58]
+  wire  claimedDevs_34 = _claimedDevs_T[34]; // @[Plic.scala 247:58]
+  wire  claimedDevs_35 = _claimedDevs_T[35]; // @[Plic.scala 247:58]
+  wire  claimedDevs_36 = _claimedDevs_T[36]; // @[Plic.scala 247:58]
+  wire  claimedDevs_37 = _claimedDevs_T[37]; // @[Plic.scala 247:58]
+  wire  claimedDevs_38 = _claimedDevs_T[38]; // @[Plic.scala 247:58]
+  wire  claimedDevs_39 = _claimedDevs_T[39]; // @[Plic.scala 247:58]
+  wire  claimedDevs_40 = _claimedDevs_T[40]; // @[Plic.scala 247:58]
+  wire  claimedDevs_41 = _claimedDevs_T[41]; // @[Plic.scala 247:58]
+  wire  claimedDevs_42 = _claimedDevs_T[42]; // @[Plic.scala 247:58]
+  wire  claimedDevs_43 = _claimedDevs_T[43]; // @[Plic.scala 247:58]
+  wire  claimedDevs_44 = _claimedDevs_T[44]; // @[Plic.scala 247:58]
+  wire  claimedDevs_45 = _claimedDevs_T[45]; // @[Plic.scala 247:58]
+  wire  claimedDevs_46 = _claimedDevs_T[46]; // @[Plic.scala 247:58]
+  wire  claimedDevs_47 = _claimedDevs_T[47]; // @[Plic.scala 247:58]
+  wire  claimedDevs_48 = _claimedDevs_T[48]; // @[Plic.scala 247:58]
+  wire  claimedDevs_49 = _claimedDevs_T[49]; // @[Plic.scala 247:58]
+  wire  claimedDevs_50 = _claimedDevs_T[50]; // @[Plic.scala 247:58]
+  wire  claimedDevs_51 = _claimedDevs_T[51]; // @[Plic.scala 247:58]
+  wire  claimedDevs_52 = _claimedDevs_T[52]; // @[Plic.scala 247:58]
+  wire  claimedDevs_53 = _claimedDevs_T[53]; // @[Plic.scala 247:58]
+  wire  claimedDevs_54 = _claimedDevs_T[54]; // @[Plic.scala 247:58]
+  wire  claimedDevs_55 = _claimedDevs_T[55]; // @[Plic.scala 247:58]
+  wire  claimedDevs_56 = _claimedDevs_T[56]; // @[Plic.scala 247:58]
+  wire  out_woready_118 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_321 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_118 = &out_backMask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_118 = out_woready_118 & out_womask_118; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_1313 = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  wire [5:0] completerDev = _out_T_1313[5:0]; // @[package.scala 154:13]
+  wire [56:0] _out_completer_1_T = enableVec0_1 >> completerDev; // @[Plic.scala 295:51]
+  wire  completer_1 = out_f_woready_118 & _out_completer_1_T[0]; // @[Plic.scala 295:35]
+  wire  out_woready_48 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_257 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_48 = out_woready_48 & out_womask_118; // @[RegisterRouter.scala 83:24]
+  wire [56:0] _out_completer_0_T = enableVec0_0 >> completerDev; // @[Plic.scala 295:51]
+  wire  completer_0 = out_f_woready_48 & _out_completer_0_T[0]; // @[Plic.scala 295:35]
+  wire [1:0] _T_65 = {completer_1,completer_0}; // @[Plic.scala 262:23]
+  wire [1:0] _T_68 = _T_65 - 2'h1; // @[Plic.scala 262:50]
+  wire [1:0] _T_69 = _T_65 & _T_68; // @[Plic.scala 262:30]
+  wire [63:0] _completedDevs_T_1 = 64'h1 << completerDev; // @[OneHot.scala 64:12]
+  wire [56:0] completedDevs = completer_0 | completer_1 ? _completedDevs_T_1[56:0] : 57'h0; // @[Plic.scala 264:28]
+  wire [9:0] out_prepend_8 = {pending_8,pending_7,pending_6,pending_5,pending_4,pending_3,pending_2,pending_1,pending_0,1'h0
+    }; // @[Cat.scala 31:58]
+  wire [18:0] out_prepend_17 = {pending_17,pending_16,pending_15,pending_14,pending_13,pending_12,pending_11,pending_10,
+    pending_9,out_prepend_8}; // @[Cat.scala 31:58]
+  wire  out_womask_24 = &out_backMask[24]; // @[RegisterRouter.scala 83:24]
+  wire [27:0] out_prepend_26 = {pending_26,pending_25,pending_24,pending_23,pending_22,pending_21,pending_20,pending_19,
+    pending_18,out_prepend_17}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_30 = {pending_30,pending_29,pending_28,pending_27,out_prepend_26}; // @[Cat.scala 31:58]
+  wire  out_womask_32 = &out_backMask[2:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_5 = _out_backSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_32 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_5 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_32 = out_woready_32 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_10 = _out_backSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_33 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_10 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_33 = out_woready_33 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_56 = _out_backSel_T[56]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_34 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_56 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_34 = out_woready_34 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_42 = _out_backSel_T[42]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_35 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_42 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_35 = out_woready_35 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_24 = _out_backSel_T[24]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_36 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_24 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_36 = out_woready_36 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_37 = _out_backSel_T[37]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_37 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_37 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_37 = out_woready_37 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_25 = _out_backSel_T[25]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_38 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_25 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_38 = out_woready_38 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_52 = _out_backSel_T[52]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_39 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_52 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_39 = out_woready_39 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_14 = _out_backSel_T[14]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_40 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_14 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_40 = out_woready_40 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_20 = _out_backSel_T[20]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_41 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_20 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_41 = out_woready_41 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_42 = &out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_129 = _out_backSel_T[129]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_42 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_129 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_42 = out_woready_42 & out_womask_42; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_43 = &out_backMask[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_43 = out_woready_42 & out_womask_43; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_44 = &out_backMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_44 = out_woready_42 & out_womask_44; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_45 = out_woready_42 & out_womask_24; // @[RegisterRouter.scala 83:24]
+  wire [24:0] out_prepend_33 = {enables_0_7,enables_0_6,enables_0_5,enables_0_4}; // @[Cat.scala 31:58]
+  wire  out_backSel_46 = _out_backSel_T[46]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_46 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_46 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_46 = out_woready_46 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_29 = _out_backSel_T[29]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_47 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_29 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_47 = out_woready_47 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_610 = {{26'd0}, maxDevs_0}; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_1 = _out_backSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_49 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_1 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_49 = out_woready_49 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_6 = _out_backSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_50 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_6 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_50 = out_woready_50 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_28 = _out_backSel_T[28]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_51 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_28 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_51 = out_woready_51 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_38 = _out_backSel_T[38]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_52 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_38 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_52 = out_woready_52 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_21 = _out_backSel_T[21]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_53 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_21 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_53 = out_woready_53 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_33 = _out_backSel_T[33]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_54 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_33 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_54 = out_woready_54 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_9 = _out_backSel_T[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_55 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_9 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_55 = out_woready_55 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_53 = _out_backSel_T[53]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_56 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_53 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_56 = out_woready_56 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_160 = _out_backSel_T[160]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_57 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_160 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_58 = &out_backMask[7:1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_58 = out_woready_57 & out_womask_58; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_59 = out_woready_57 & out_womask_43; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_60 = out_woready_57 & out_womask_44; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_61 = &out_backMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_61 = out_woready_57 & out_womask_61; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_37 = {enables_1_3,enables_1_2,enables_1_1,enables_1_0,1'h0}; // @[Cat.scala 31:58]
+  wire  out_backSel_13 = _out_backSel_T[13]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_62 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_13 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_62 = out_woready_62 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_41 = _out_backSel_T[41]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_63 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_41 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_63 = out_woready_63 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_2 = _out_backSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_64 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_2 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_64 = out_woready_64 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_32 = _out_backSel_T[32]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_65 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_32 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_65 = out_woready_65 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_34 = _out_backSel_T[34]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_66 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_34 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_66 = out_woready_66 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_45 = _out_backSel_T[45]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_67 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_45 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_67 = out_woready_67 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_17 = _out_backSel_T[17]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_68 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_17 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_68 = out_woready_68 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_320 = _out_backSel_T[320]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_69 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_320 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_69 = out_woready_69 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire [3:0] out_prepend_38 = {1'h0,threshold_1}; // @[Cat.scala 31:58]
+  wire [31:0] _out_T_848 = {{28'd0}, out_prepend_38}; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_256 = _out_backSel_T[256]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_71 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_256 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_71 = out_woready_71 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire [3:0] out_prepend_39 = {1'h0,threshold_0}; // @[Cat.scala 31:58]
+  wire [31:0] _out_T_868 = {{28'd0}, out_prepend_39}; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_128 = _out_backSel_T[128]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_73 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_128 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_74 = out_woready_73 & out_womask_58; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_75 = out_woready_73 & out_womask_43; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_76 = out_woready_73 & out_womask_44; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_77 = out_woready_73 & out_womask_61; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_43 = {enables_0_3,enables_0_2,enables_0_1,enables_0_0,1'h0}; // @[Cat.scala 31:58]
+  wire  out_backSel_22 = _out_backSel_T[22]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_78 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_22 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_78 = out_woready_78 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_44 = _out_backSel_T[44]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_79 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_44 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_79 = out_woready_79 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_27 = _out_backSel_T[27]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_80 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_27 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_80 = out_woready_80 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_12 = _out_backSel_T[12]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_81 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_12 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_81 = out_woready_81 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_54 = _out_backSel_T[54]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_82 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_54 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_82 = out_woready_82 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_49 = _out_backSel_T[49]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_83 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_49 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_83 = out_woready_83 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_7 = _out_backSel_T[7]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_84 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_7 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_84 = out_woready_84 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_39 = _out_backSel_T[39]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_85 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_39 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_85 = out_woready_85 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_3 = _out_backSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_86 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_3 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_86 = out_woready_86 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_35 = _out_backSel_T[35]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_87 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_35 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_87 = out_woready_87 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_48 = _out_backSel_T[48]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_88 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_48 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_88 = out_woready_88 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire [9:0] out_prepend_52 = {pending_40,pending_39,pending_38,pending_37,pending_36,pending_35,pending_34,pending_33,
+    pending_32,pending_31}; // @[Cat.scala 31:58]
+  wire [18:0] out_prepend_61 = {pending_49,pending_48,pending_47,pending_46,pending_45,pending_44,pending_43,pending_42,
+    pending_41,out_prepend_52}; // @[Cat.scala 31:58]
+  wire [24:0] out_prepend_67 = {pending_55,pending_54,pending_53,pending_52,pending_51,pending_50,out_prepend_61}; // @[Cat.scala 31:58]
+  wire  out_backSel_18 = _out_backSel_T[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_114 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_18 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_114 = out_woready_114 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_50 = _out_backSel_T[50]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_115 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_50 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_115 = out_woready_115 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_16 = _out_backSel_T[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_116 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_16 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_116 = out_woready_116 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_31 = _out_backSel_T[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_117 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_31 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_117 = out_woready_117 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_1327 = {{26'd0}, maxDevs_1}; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_11 = _out_backSel_T[11]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_119 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_11 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_119 = out_woready_119 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_43 = _out_backSel_T[43]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_120 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_43 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_120 = out_woready_120 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_40 = _out_backSel_T[40]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_121 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_40 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_121 = out_woready_121 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_26 = _out_backSel_T[26]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_122 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_26 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_122 = out_woready_122 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_55 = _out_backSel_T[55]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_123 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_55 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_123 = out_woready_123 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_23 = _out_backSel_T[23]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_124 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_23 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_124 = out_woready_124 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_8 = _out_backSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_125 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_8 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_125 = out_woready_125 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_161 = _out_backSel_T[161]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_126 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_161 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_126 = out_woready_126 & out_womask_42; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_127 = out_woready_126 & out_womask_43; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_128 = out_woready_126 & out_womask_44; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_129 = out_woready_126 & out_womask_24; // @[RegisterRouter.scala 83:24]
+  wire [24:0] out_prepend_70 = {enables_1_7,enables_1_6,enables_1_5,enables_1_4}; // @[Cat.scala 31:58]
+  wire  out_backSel_36 = _out_backSel_T[36]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_130 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_36 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_130 = out_woready_130 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_30 = _out_backSel_T[30]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_131 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_30 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_131 = out_woready_131 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_51 = _out_backSel_T[51]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_132 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_51 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_132 = out_woready_132 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_19 = _out_backSel_T[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_133 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_19 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_133 = out_woready_133 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_4 = _out_backSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_134 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_4 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_134 = out_woready_134 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_47 = _out_backSel_T[47]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_135 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_47 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_135 = out_woready_135 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_15 = _out_backSel_T[15]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_136 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_15 &
+    out_bindex == 24'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_136 = out_woready_136 & out_womask_32; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_2178 = 9'h141 == out_oindex ? _out_T_101 : 1'h1; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2179 = 9'h140 == out_oindex ? _out_T_101 : _GEN_2178; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2180 = 9'h101 == out_oindex ? _out_T_101 : _GEN_2179; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2181 = 9'h100 == out_oindex ? _out_T_101 : _GEN_2180; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2182 = 9'ha1 == out_oindex ? _out_T_101 : _GEN_2181; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2183 = 9'ha0 == out_oindex ? _out_T_101 : _GEN_2182; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2184 = 9'h81 == out_oindex ? _out_T_101 : _GEN_2183; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2185 = 9'h80 == out_oindex ? _out_T_101 : _GEN_2184; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2186 = 9'h41 == out_oindex ? _out_T_101 : _GEN_2185; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2187 = 9'h40 == out_oindex ? _out_T_101 : _GEN_2186; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2188 = 9'h38 == out_oindex ? _out_T_101 : _GEN_2187; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2189 = 9'h37 == out_oindex ? _out_T_101 : _GEN_2188; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2190 = 9'h36 == out_oindex ? _out_T_101 : _GEN_2189; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2191 = 9'h35 == out_oindex ? _out_T_101 : _GEN_2190; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2192 = 9'h34 == out_oindex ? _out_T_101 : _GEN_2191; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2193 = 9'h33 == out_oindex ? _out_T_101 : _GEN_2192; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2194 = 9'h32 == out_oindex ? _out_T_101 : _GEN_2193; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2195 = 9'h31 == out_oindex ? _out_T_101 : _GEN_2194; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2196 = 9'h30 == out_oindex ? _out_T_101 : _GEN_2195; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2197 = 9'h2f == out_oindex ? _out_T_101 : _GEN_2196; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2198 = 9'h2e == out_oindex ? _out_T_101 : _GEN_2197; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2199 = 9'h2d == out_oindex ? _out_T_101 : _GEN_2198; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2200 = 9'h2c == out_oindex ? _out_T_101 : _GEN_2199; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2201 = 9'h2b == out_oindex ? _out_T_101 : _GEN_2200; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2202 = 9'h2a == out_oindex ? _out_T_101 : _GEN_2201; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2203 = 9'h29 == out_oindex ? _out_T_101 : _GEN_2202; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2204 = 9'h28 == out_oindex ? _out_T_101 : _GEN_2203; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2205 = 9'h27 == out_oindex ? _out_T_101 : _GEN_2204; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2206 = 9'h26 == out_oindex ? _out_T_101 : _GEN_2205; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2207 = 9'h25 == out_oindex ? _out_T_101 : _GEN_2206; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2208 = 9'h24 == out_oindex ? _out_T_101 : _GEN_2207; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2209 = 9'h23 == out_oindex ? _out_T_101 : _GEN_2208; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2210 = 9'h22 == out_oindex ? _out_T_101 : _GEN_2209; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2211 = 9'h21 == out_oindex ? _out_T_101 : _GEN_2210; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2212 = 9'h20 == out_oindex ? _out_T_101 : _GEN_2211; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2213 = 9'h1f == out_oindex ? _out_T_101 : _GEN_2212; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2214 = 9'h1e == out_oindex ? _out_T_101 : _GEN_2213; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2215 = 9'h1d == out_oindex ? _out_T_101 : _GEN_2214; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2216 = 9'h1c == out_oindex ? _out_T_101 : _GEN_2215; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2217 = 9'h1b == out_oindex ? _out_T_101 : _GEN_2216; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2218 = 9'h1a == out_oindex ? _out_T_101 : _GEN_2217; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2219 = 9'h19 == out_oindex ? _out_T_101 : _GEN_2218; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2220 = 9'h18 == out_oindex ? _out_T_101 : _GEN_2219; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2221 = 9'h17 == out_oindex ? _out_T_101 : _GEN_2220; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2222 = 9'h16 == out_oindex ? _out_T_101 : _GEN_2221; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2223 = 9'h15 == out_oindex ? _out_T_101 : _GEN_2222; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2224 = 9'h14 == out_oindex ? _out_T_101 : _GEN_2223; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2225 = 9'h13 == out_oindex ? _out_T_101 : _GEN_2224; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2226 = 9'h12 == out_oindex ? _out_T_101 : _GEN_2225; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2227 = 9'h11 == out_oindex ? _out_T_101 : _GEN_2226; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2228 = 9'h10 == out_oindex ? _out_T_101 : _GEN_2227; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2229 = 9'hf == out_oindex ? _out_T_101 : _GEN_2228; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2230 = 9'he == out_oindex ? _out_T_101 : _GEN_2229; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2231 = 9'hd == out_oindex ? _out_T_101 : _GEN_2230; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2232 = 9'hc == out_oindex ? _out_T_101 : _GEN_2231; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2233 = 9'hb == out_oindex ? _out_T_101 : _GEN_2232; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2234 = 9'ha == out_oindex ? _out_T_101 : _GEN_2233; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2235 = 9'h9 == out_oindex ? _out_T_101 : _GEN_2234; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2236 = 9'h8 == out_oindex ? _out_T_101 : _GEN_2235; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2237 = 9'h7 == out_oindex ? _out_T_101 : _GEN_2236; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2238 = 9'h6 == out_oindex ? _out_T_101 : _GEN_2237; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2239 = 9'h5 == out_oindex ? _out_T_101 : _GEN_2238; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2240 = 9'h4 == out_oindex ? _out_T_101 : _GEN_2239; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2241 = 9'h3 == out_oindex ? _out_T_101 : _GEN_2240; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_2242 = 9'h2 == out_oindex ? _out_T_101 : _GEN_2241; // @[MuxLiteral.scala 53:{26,32}]
+  wire  out_out_bits_data_out = 9'h1 == out_oindex ? _out_T_101 : _GEN_2242; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2244 = 9'h141 == out_oindex ? _out_T_1327 : 32'h0; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2245 = 9'h140 == out_oindex ? _out_T_848 : _GEN_2244; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2246 = 9'h101 == out_oindex ? _out_T_610 : _GEN_2245; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2247 = 9'h100 == out_oindex ? _out_T_868 : _GEN_2246; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2248 = 9'ha1 == out_oindex ? {{7'd0}, out_prepend_70} : _GEN_2247; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2249 = 9'ha0 == out_oindex ? out_prepend_37 : _GEN_2248; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2250 = 9'h81 == out_oindex ? {{7'd0}, out_prepend_33} : _GEN_2249; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2251 = 9'h80 == out_oindex ? out_prepend_43 : _GEN_2250; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2252 = 9'h41 == out_oindex ? {{7'd0}, out_prepend_67} : _GEN_2251; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2253 = 9'h40 == out_oindex ? out_prepend_30 : _GEN_2252; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2254 = 9'h38 == out_oindex ? {{29'd0}, priority_55} : _GEN_2253; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2255 = 9'h37 == out_oindex ? {{29'd0}, priority_54} : _GEN_2254; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2256 = 9'h36 == out_oindex ? {{29'd0}, priority_53} : _GEN_2255; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2257 = 9'h35 == out_oindex ? {{29'd0}, priority_52} : _GEN_2256; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2258 = 9'h34 == out_oindex ? {{29'd0}, priority_51} : _GEN_2257; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2259 = 9'h33 == out_oindex ? {{29'd0}, priority_50} : _GEN_2258; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2260 = 9'h32 == out_oindex ? {{29'd0}, priority_49} : _GEN_2259; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2261 = 9'h31 == out_oindex ? {{29'd0}, priority_48} : _GEN_2260; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2262 = 9'h30 == out_oindex ? {{29'd0}, priority_47} : _GEN_2261; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2263 = 9'h2f == out_oindex ? {{29'd0}, priority_46} : _GEN_2262; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2264 = 9'h2e == out_oindex ? {{29'd0}, priority_45} : _GEN_2263; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2265 = 9'h2d == out_oindex ? {{29'd0}, priority_44} : _GEN_2264; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2266 = 9'h2c == out_oindex ? {{29'd0}, priority_43} : _GEN_2265; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2267 = 9'h2b == out_oindex ? {{29'd0}, priority_42} : _GEN_2266; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2268 = 9'h2a == out_oindex ? {{29'd0}, priority_41} : _GEN_2267; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2269 = 9'h29 == out_oindex ? {{29'd0}, priority_40} : _GEN_2268; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2270 = 9'h28 == out_oindex ? {{29'd0}, priority_39} : _GEN_2269; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2271 = 9'h27 == out_oindex ? {{29'd0}, priority_38} : _GEN_2270; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2272 = 9'h26 == out_oindex ? {{29'd0}, priority_37} : _GEN_2271; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2273 = 9'h25 == out_oindex ? {{29'd0}, priority_36} : _GEN_2272; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2274 = 9'h24 == out_oindex ? {{29'd0}, priority_35} : _GEN_2273; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2275 = 9'h23 == out_oindex ? {{29'd0}, priority_34} : _GEN_2274; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2276 = 9'h22 == out_oindex ? {{29'd0}, priority_33} : _GEN_2275; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2277 = 9'h21 == out_oindex ? {{29'd0}, priority_32} : _GEN_2276; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2278 = 9'h20 == out_oindex ? {{29'd0}, priority_31} : _GEN_2277; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2279 = 9'h1f == out_oindex ? {{29'd0}, priority_30} : _GEN_2278; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2280 = 9'h1e == out_oindex ? {{29'd0}, priority_29} : _GEN_2279; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2281 = 9'h1d == out_oindex ? {{29'd0}, priority_28} : _GEN_2280; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2282 = 9'h1c == out_oindex ? {{29'd0}, priority_27} : _GEN_2281; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2283 = 9'h1b == out_oindex ? {{29'd0}, priority_26} : _GEN_2282; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2284 = 9'h1a == out_oindex ? {{29'd0}, priority_25} : _GEN_2283; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2285 = 9'h19 == out_oindex ? {{29'd0}, priority_24} : _GEN_2284; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2286 = 9'h18 == out_oindex ? {{29'd0}, priority_23} : _GEN_2285; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2287 = 9'h17 == out_oindex ? {{29'd0}, priority_22} : _GEN_2286; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2288 = 9'h16 == out_oindex ? {{29'd0}, priority_21} : _GEN_2287; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2289 = 9'h15 == out_oindex ? {{29'd0}, priority_20} : _GEN_2288; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2290 = 9'h14 == out_oindex ? {{29'd0}, priority_19} : _GEN_2289; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2291 = 9'h13 == out_oindex ? {{29'd0}, priority_18} : _GEN_2290; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2292 = 9'h12 == out_oindex ? {{29'd0}, priority_17} : _GEN_2291; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2293 = 9'h11 == out_oindex ? {{29'd0}, priority_16} : _GEN_2292; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2294 = 9'h10 == out_oindex ? {{29'd0}, priority_15} : _GEN_2293; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2295 = 9'hf == out_oindex ? {{29'd0}, priority_14} : _GEN_2294; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2296 = 9'he == out_oindex ? {{29'd0}, priority_13} : _GEN_2295; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2297 = 9'hd == out_oindex ? {{29'd0}, priority_12} : _GEN_2296; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2298 = 9'hc == out_oindex ? {{29'd0}, priority_11} : _GEN_2297; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2299 = 9'hb == out_oindex ? {{29'd0}, priority_10} : _GEN_2298; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2300 = 9'ha == out_oindex ? {{29'd0}, priority_9} : _GEN_2299; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2301 = 9'h9 == out_oindex ? {{29'd0}, priority_8} : _GEN_2300; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2302 = 9'h8 == out_oindex ? {{29'd0}, priority_7} : _GEN_2301; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2303 = 9'h7 == out_oindex ? {{29'd0}, priority_6} : _GEN_2302; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2304 = 9'h6 == out_oindex ? {{29'd0}, priority_5} : _GEN_2303; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2305 = 9'h5 == out_oindex ? {{29'd0}, priority_4} : _GEN_2304; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2306 = 9'h4 == out_oindex ? {{29'd0}, priority_3} : _GEN_2305; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2307 = 9'h3 == out_oindex ? {{29'd0}, priority_2} : _GEN_2306; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_2308 = 9'h2 == out_oindex ? {{29'd0}, priority_1} : _GEN_2307; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] out_out_bits_data_out_1 = 9'h1 == out_oindex ? {{29'd0}, priority_0} : _GEN_2308; // @[MuxLiteral.scala 53:{26,32}]
+  wire  out_bits_read = out_back_io_deq_bits_read; // @[RegisterRouter.scala 83:{24,24}]
+  TLMonitor_46 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  LevelGateway gateways_gateway ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_clock),
+    .reset(gateways_gateway_reset),
+    .io_interrupt(gateways_gateway_io_interrupt),
+    .io_plic_valid(gateways_gateway_io_plic_valid),
+    .io_plic_ready(gateways_gateway_io_plic_ready),
+    .io_plic_complete(gateways_gateway_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_1 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_1_clock),
+    .reset(gateways_gateway_1_reset),
+    .io_interrupt(gateways_gateway_1_io_interrupt),
+    .io_plic_valid(gateways_gateway_1_io_plic_valid),
+    .io_plic_ready(gateways_gateway_1_io_plic_ready),
+    .io_plic_complete(gateways_gateway_1_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_2 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_2_clock),
+    .reset(gateways_gateway_2_reset),
+    .io_interrupt(gateways_gateway_2_io_interrupt),
+    .io_plic_valid(gateways_gateway_2_io_plic_valid),
+    .io_plic_ready(gateways_gateway_2_io_plic_ready),
+    .io_plic_complete(gateways_gateway_2_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_3 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_3_clock),
+    .reset(gateways_gateway_3_reset),
+    .io_interrupt(gateways_gateway_3_io_interrupt),
+    .io_plic_valid(gateways_gateway_3_io_plic_valid),
+    .io_plic_ready(gateways_gateway_3_io_plic_ready),
+    .io_plic_complete(gateways_gateway_3_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_4 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_4_clock),
+    .reset(gateways_gateway_4_reset),
+    .io_interrupt(gateways_gateway_4_io_interrupt),
+    .io_plic_valid(gateways_gateway_4_io_plic_valid),
+    .io_plic_ready(gateways_gateway_4_io_plic_ready),
+    .io_plic_complete(gateways_gateway_4_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_5 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_5_clock),
+    .reset(gateways_gateway_5_reset),
+    .io_interrupt(gateways_gateway_5_io_interrupt),
+    .io_plic_valid(gateways_gateway_5_io_plic_valid),
+    .io_plic_ready(gateways_gateway_5_io_plic_ready),
+    .io_plic_complete(gateways_gateway_5_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_6 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_6_clock),
+    .reset(gateways_gateway_6_reset),
+    .io_interrupt(gateways_gateway_6_io_interrupt),
+    .io_plic_valid(gateways_gateway_6_io_plic_valid),
+    .io_plic_ready(gateways_gateway_6_io_plic_ready),
+    .io_plic_complete(gateways_gateway_6_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_7 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_7_clock),
+    .reset(gateways_gateway_7_reset),
+    .io_interrupt(gateways_gateway_7_io_interrupt),
+    .io_plic_valid(gateways_gateway_7_io_plic_valid),
+    .io_plic_ready(gateways_gateway_7_io_plic_ready),
+    .io_plic_complete(gateways_gateway_7_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_8 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_8_clock),
+    .reset(gateways_gateway_8_reset),
+    .io_interrupt(gateways_gateway_8_io_interrupt),
+    .io_plic_valid(gateways_gateway_8_io_plic_valid),
+    .io_plic_ready(gateways_gateway_8_io_plic_ready),
+    .io_plic_complete(gateways_gateway_8_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_9 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_9_clock),
+    .reset(gateways_gateway_9_reset),
+    .io_interrupt(gateways_gateway_9_io_interrupt),
+    .io_plic_valid(gateways_gateway_9_io_plic_valid),
+    .io_plic_ready(gateways_gateway_9_io_plic_ready),
+    .io_plic_complete(gateways_gateway_9_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_10 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_10_clock),
+    .reset(gateways_gateway_10_reset),
+    .io_interrupt(gateways_gateway_10_io_interrupt),
+    .io_plic_valid(gateways_gateway_10_io_plic_valid),
+    .io_plic_ready(gateways_gateway_10_io_plic_ready),
+    .io_plic_complete(gateways_gateway_10_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_11 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_11_clock),
+    .reset(gateways_gateway_11_reset),
+    .io_interrupt(gateways_gateway_11_io_interrupt),
+    .io_plic_valid(gateways_gateway_11_io_plic_valid),
+    .io_plic_ready(gateways_gateway_11_io_plic_ready),
+    .io_plic_complete(gateways_gateway_11_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_12 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_12_clock),
+    .reset(gateways_gateway_12_reset),
+    .io_interrupt(gateways_gateway_12_io_interrupt),
+    .io_plic_valid(gateways_gateway_12_io_plic_valid),
+    .io_plic_ready(gateways_gateway_12_io_plic_ready),
+    .io_plic_complete(gateways_gateway_12_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_13 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_13_clock),
+    .reset(gateways_gateway_13_reset),
+    .io_interrupt(gateways_gateway_13_io_interrupt),
+    .io_plic_valid(gateways_gateway_13_io_plic_valid),
+    .io_plic_ready(gateways_gateway_13_io_plic_ready),
+    .io_plic_complete(gateways_gateway_13_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_14 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_14_clock),
+    .reset(gateways_gateway_14_reset),
+    .io_interrupt(gateways_gateway_14_io_interrupt),
+    .io_plic_valid(gateways_gateway_14_io_plic_valid),
+    .io_plic_ready(gateways_gateway_14_io_plic_ready),
+    .io_plic_complete(gateways_gateway_14_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_15 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_15_clock),
+    .reset(gateways_gateway_15_reset),
+    .io_interrupt(gateways_gateway_15_io_interrupt),
+    .io_plic_valid(gateways_gateway_15_io_plic_valid),
+    .io_plic_ready(gateways_gateway_15_io_plic_ready),
+    .io_plic_complete(gateways_gateway_15_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_16 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_16_clock),
+    .reset(gateways_gateway_16_reset),
+    .io_interrupt(gateways_gateway_16_io_interrupt),
+    .io_plic_valid(gateways_gateway_16_io_plic_valid),
+    .io_plic_ready(gateways_gateway_16_io_plic_ready),
+    .io_plic_complete(gateways_gateway_16_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_17 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_17_clock),
+    .reset(gateways_gateway_17_reset),
+    .io_interrupt(gateways_gateway_17_io_interrupt),
+    .io_plic_valid(gateways_gateway_17_io_plic_valid),
+    .io_plic_ready(gateways_gateway_17_io_plic_ready),
+    .io_plic_complete(gateways_gateway_17_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_18 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_18_clock),
+    .reset(gateways_gateway_18_reset),
+    .io_interrupt(gateways_gateway_18_io_interrupt),
+    .io_plic_valid(gateways_gateway_18_io_plic_valid),
+    .io_plic_ready(gateways_gateway_18_io_plic_ready),
+    .io_plic_complete(gateways_gateway_18_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_19 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_19_clock),
+    .reset(gateways_gateway_19_reset),
+    .io_interrupt(gateways_gateway_19_io_interrupt),
+    .io_plic_valid(gateways_gateway_19_io_plic_valid),
+    .io_plic_ready(gateways_gateway_19_io_plic_ready),
+    .io_plic_complete(gateways_gateway_19_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_20 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_20_clock),
+    .reset(gateways_gateway_20_reset),
+    .io_interrupt(gateways_gateway_20_io_interrupt),
+    .io_plic_valid(gateways_gateway_20_io_plic_valid),
+    .io_plic_ready(gateways_gateway_20_io_plic_ready),
+    .io_plic_complete(gateways_gateway_20_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_21 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_21_clock),
+    .reset(gateways_gateway_21_reset),
+    .io_interrupt(gateways_gateway_21_io_interrupt),
+    .io_plic_valid(gateways_gateway_21_io_plic_valid),
+    .io_plic_ready(gateways_gateway_21_io_plic_ready),
+    .io_plic_complete(gateways_gateway_21_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_22 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_22_clock),
+    .reset(gateways_gateway_22_reset),
+    .io_interrupt(gateways_gateway_22_io_interrupt),
+    .io_plic_valid(gateways_gateway_22_io_plic_valid),
+    .io_plic_ready(gateways_gateway_22_io_plic_ready),
+    .io_plic_complete(gateways_gateway_22_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_23 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_23_clock),
+    .reset(gateways_gateway_23_reset),
+    .io_interrupt(gateways_gateway_23_io_interrupt),
+    .io_plic_valid(gateways_gateway_23_io_plic_valid),
+    .io_plic_ready(gateways_gateway_23_io_plic_ready),
+    .io_plic_complete(gateways_gateway_23_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_24 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_24_clock),
+    .reset(gateways_gateway_24_reset),
+    .io_interrupt(gateways_gateway_24_io_interrupt),
+    .io_plic_valid(gateways_gateway_24_io_plic_valid),
+    .io_plic_ready(gateways_gateway_24_io_plic_ready),
+    .io_plic_complete(gateways_gateway_24_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_25 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_25_clock),
+    .reset(gateways_gateway_25_reset),
+    .io_interrupt(gateways_gateway_25_io_interrupt),
+    .io_plic_valid(gateways_gateway_25_io_plic_valid),
+    .io_plic_ready(gateways_gateway_25_io_plic_ready),
+    .io_plic_complete(gateways_gateway_25_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_26 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_26_clock),
+    .reset(gateways_gateway_26_reset),
+    .io_interrupt(gateways_gateway_26_io_interrupt),
+    .io_plic_valid(gateways_gateway_26_io_plic_valid),
+    .io_plic_ready(gateways_gateway_26_io_plic_ready),
+    .io_plic_complete(gateways_gateway_26_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_27 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_27_clock),
+    .reset(gateways_gateway_27_reset),
+    .io_interrupt(gateways_gateway_27_io_interrupt),
+    .io_plic_valid(gateways_gateway_27_io_plic_valid),
+    .io_plic_ready(gateways_gateway_27_io_plic_ready),
+    .io_plic_complete(gateways_gateway_27_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_28 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_28_clock),
+    .reset(gateways_gateway_28_reset),
+    .io_interrupt(gateways_gateway_28_io_interrupt),
+    .io_plic_valid(gateways_gateway_28_io_plic_valid),
+    .io_plic_ready(gateways_gateway_28_io_plic_ready),
+    .io_plic_complete(gateways_gateway_28_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_29 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_29_clock),
+    .reset(gateways_gateway_29_reset),
+    .io_interrupt(gateways_gateway_29_io_interrupt),
+    .io_plic_valid(gateways_gateway_29_io_plic_valid),
+    .io_plic_ready(gateways_gateway_29_io_plic_ready),
+    .io_plic_complete(gateways_gateway_29_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_30 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_30_clock),
+    .reset(gateways_gateway_30_reset),
+    .io_interrupt(gateways_gateway_30_io_interrupt),
+    .io_plic_valid(gateways_gateway_30_io_plic_valid),
+    .io_plic_ready(gateways_gateway_30_io_plic_ready),
+    .io_plic_complete(gateways_gateway_30_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_31 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_31_clock),
+    .reset(gateways_gateway_31_reset),
+    .io_interrupt(gateways_gateway_31_io_interrupt),
+    .io_plic_valid(gateways_gateway_31_io_plic_valid),
+    .io_plic_ready(gateways_gateway_31_io_plic_ready),
+    .io_plic_complete(gateways_gateway_31_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_32 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_32_clock),
+    .reset(gateways_gateway_32_reset),
+    .io_interrupt(gateways_gateway_32_io_interrupt),
+    .io_plic_valid(gateways_gateway_32_io_plic_valid),
+    .io_plic_ready(gateways_gateway_32_io_plic_ready),
+    .io_plic_complete(gateways_gateway_32_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_33 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_33_clock),
+    .reset(gateways_gateway_33_reset),
+    .io_interrupt(gateways_gateway_33_io_interrupt),
+    .io_plic_valid(gateways_gateway_33_io_plic_valid),
+    .io_plic_ready(gateways_gateway_33_io_plic_ready),
+    .io_plic_complete(gateways_gateway_33_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_34 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_34_clock),
+    .reset(gateways_gateway_34_reset),
+    .io_interrupt(gateways_gateway_34_io_interrupt),
+    .io_plic_valid(gateways_gateway_34_io_plic_valid),
+    .io_plic_ready(gateways_gateway_34_io_plic_ready),
+    .io_plic_complete(gateways_gateway_34_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_35 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_35_clock),
+    .reset(gateways_gateway_35_reset),
+    .io_interrupt(gateways_gateway_35_io_interrupt),
+    .io_plic_valid(gateways_gateway_35_io_plic_valid),
+    .io_plic_ready(gateways_gateway_35_io_plic_ready),
+    .io_plic_complete(gateways_gateway_35_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_36 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_36_clock),
+    .reset(gateways_gateway_36_reset),
+    .io_interrupt(gateways_gateway_36_io_interrupt),
+    .io_plic_valid(gateways_gateway_36_io_plic_valid),
+    .io_plic_ready(gateways_gateway_36_io_plic_ready),
+    .io_plic_complete(gateways_gateway_36_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_37 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_37_clock),
+    .reset(gateways_gateway_37_reset),
+    .io_interrupt(gateways_gateway_37_io_interrupt),
+    .io_plic_valid(gateways_gateway_37_io_plic_valid),
+    .io_plic_ready(gateways_gateway_37_io_plic_ready),
+    .io_plic_complete(gateways_gateway_37_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_38 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_38_clock),
+    .reset(gateways_gateway_38_reset),
+    .io_interrupt(gateways_gateway_38_io_interrupt),
+    .io_plic_valid(gateways_gateway_38_io_plic_valid),
+    .io_plic_ready(gateways_gateway_38_io_plic_ready),
+    .io_plic_complete(gateways_gateway_38_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_39 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_39_clock),
+    .reset(gateways_gateway_39_reset),
+    .io_interrupt(gateways_gateway_39_io_interrupt),
+    .io_plic_valid(gateways_gateway_39_io_plic_valid),
+    .io_plic_ready(gateways_gateway_39_io_plic_ready),
+    .io_plic_complete(gateways_gateway_39_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_40 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_40_clock),
+    .reset(gateways_gateway_40_reset),
+    .io_interrupt(gateways_gateway_40_io_interrupt),
+    .io_plic_valid(gateways_gateway_40_io_plic_valid),
+    .io_plic_ready(gateways_gateway_40_io_plic_ready),
+    .io_plic_complete(gateways_gateway_40_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_41 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_41_clock),
+    .reset(gateways_gateway_41_reset),
+    .io_interrupt(gateways_gateway_41_io_interrupt),
+    .io_plic_valid(gateways_gateway_41_io_plic_valid),
+    .io_plic_ready(gateways_gateway_41_io_plic_ready),
+    .io_plic_complete(gateways_gateway_41_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_42 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_42_clock),
+    .reset(gateways_gateway_42_reset),
+    .io_interrupt(gateways_gateway_42_io_interrupt),
+    .io_plic_valid(gateways_gateway_42_io_plic_valid),
+    .io_plic_ready(gateways_gateway_42_io_plic_ready),
+    .io_plic_complete(gateways_gateway_42_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_43 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_43_clock),
+    .reset(gateways_gateway_43_reset),
+    .io_interrupt(gateways_gateway_43_io_interrupt),
+    .io_plic_valid(gateways_gateway_43_io_plic_valid),
+    .io_plic_ready(gateways_gateway_43_io_plic_ready),
+    .io_plic_complete(gateways_gateway_43_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_44 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_44_clock),
+    .reset(gateways_gateway_44_reset),
+    .io_interrupt(gateways_gateway_44_io_interrupt),
+    .io_plic_valid(gateways_gateway_44_io_plic_valid),
+    .io_plic_ready(gateways_gateway_44_io_plic_ready),
+    .io_plic_complete(gateways_gateway_44_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_45 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_45_clock),
+    .reset(gateways_gateway_45_reset),
+    .io_interrupt(gateways_gateway_45_io_interrupt),
+    .io_plic_valid(gateways_gateway_45_io_plic_valid),
+    .io_plic_ready(gateways_gateway_45_io_plic_ready),
+    .io_plic_complete(gateways_gateway_45_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_46 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_46_clock),
+    .reset(gateways_gateway_46_reset),
+    .io_interrupt(gateways_gateway_46_io_interrupt),
+    .io_plic_valid(gateways_gateway_46_io_plic_valid),
+    .io_plic_ready(gateways_gateway_46_io_plic_ready),
+    .io_plic_complete(gateways_gateway_46_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_47 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_47_clock),
+    .reset(gateways_gateway_47_reset),
+    .io_interrupt(gateways_gateway_47_io_interrupt),
+    .io_plic_valid(gateways_gateway_47_io_plic_valid),
+    .io_plic_ready(gateways_gateway_47_io_plic_ready),
+    .io_plic_complete(gateways_gateway_47_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_48 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_48_clock),
+    .reset(gateways_gateway_48_reset),
+    .io_interrupt(gateways_gateway_48_io_interrupt),
+    .io_plic_valid(gateways_gateway_48_io_plic_valid),
+    .io_plic_ready(gateways_gateway_48_io_plic_ready),
+    .io_plic_complete(gateways_gateway_48_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_49 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_49_clock),
+    .reset(gateways_gateway_49_reset),
+    .io_interrupt(gateways_gateway_49_io_interrupt),
+    .io_plic_valid(gateways_gateway_49_io_plic_valid),
+    .io_plic_ready(gateways_gateway_49_io_plic_ready),
+    .io_plic_complete(gateways_gateway_49_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_50 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_50_clock),
+    .reset(gateways_gateway_50_reset),
+    .io_interrupt(gateways_gateway_50_io_interrupt),
+    .io_plic_valid(gateways_gateway_50_io_plic_valid),
+    .io_plic_ready(gateways_gateway_50_io_plic_ready),
+    .io_plic_complete(gateways_gateway_50_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_51 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_51_clock),
+    .reset(gateways_gateway_51_reset),
+    .io_interrupt(gateways_gateway_51_io_interrupt),
+    .io_plic_valid(gateways_gateway_51_io_plic_valid),
+    .io_plic_ready(gateways_gateway_51_io_plic_ready),
+    .io_plic_complete(gateways_gateway_51_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_52 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_52_clock),
+    .reset(gateways_gateway_52_reset),
+    .io_interrupt(gateways_gateway_52_io_interrupt),
+    .io_plic_valid(gateways_gateway_52_io_plic_valid),
+    .io_plic_ready(gateways_gateway_52_io_plic_ready),
+    .io_plic_complete(gateways_gateway_52_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_53 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_53_clock),
+    .reset(gateways_gateway_53_reset),
+    .io_interrupt(gateways_gateway_53_io_interrupt),
+    .io_plic_valid(gateways_gateway_53_io_plic_valid),
+    .io_plic_ready(gateways_gateway_53_io_plic_ready),
+    .io_plic_complete(gateways_gateway_53_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_54 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_54_clock),
+    .reset(gateways_gateway_54_reset),
+    .io_interrupt(gateways_gateway_54_io_interrupt),
+    .io_plic_valid(gateways_gateway_54_io_plic_valid),
+    .io_plic_ready(gateways_gateway_54_io_plic_ready),
+    .io_plic_complete(gateways_gateway_54_io_plic_complete)
+  );
+  LevelGateway gateways_gateway_55 ( // @[Plic.scala 156:27]
+    .clock(gateways_gateway_55_clock),
+    .reset(gateways_gateway_55_reset),
+    .io_interrupt(gateways_gateway_55_io_interrupt),
+    .io_plic_valid(gateways_gateway_55_io_plic_valid),
+    .io_plic_ready(gateways_gateway_55_io_plic_ready),
+    .io_plic_complete(gateways_gateway_55_io_plic_complete)
+  );
+  PLICFanIn fanin ( // @[Plic.scala 184:25]
+    .io_prio_0(fanin_io_prio_0),
+    .io_prio_1(fanin_io_prio_1),
+    .io_prio_2(fanin_io_prio_2),
+    .io_prio_3(fanin_io_prio_3),
+    .io_prio_4(fanin_io_prio_4),
+    .io_prio_5(fanin_io_prio_5),
+    .io_prio_6(fanin_io_prio_6),
+    .io_prio_7(fanin_io_prio_7),
+    .io_prio_8(fanin_io_prio_8),
+    .io_prio_9(fanin_io_prio_9),
+    .io_prio_10(fanin_io_prio_10),
+    .io_prio_11(fanin_io_prio_11),
+    .io_prio_12(fanin_io_prio_12),
+    .io_prio_13(fanin_io_prio_13),
+    .io_prio_14(fanin_io_prio_14),
+    .io_prio_15(fanin_io_prio_15),
+    .io_prio_16(fanin_io_prio_16),
+    .io_prio_17(fanin_io_prio_17),
+    .io_prio_18(fanin_io_prio_18),
+    .io_prio_19(fanin_io_prio_19),
+    .io_prio_20(fanin_io_prio_20),
+    .io_prio_21(fanin_io_prio_21),
+    .io_prio_22(fanin_io_prio_22),
+    .io_prio_23(fanin_io_prio_23),
+    .io_prio_24(fanin_io_prio_24),
+    .io_prio_25(fanin_io_prio_25),
+    .io_prio_26(fanin_io_prio_26),
+    .io_prio_27(fanin_io_prio_27),
+    .io_prio_28(fanin_io_prio_28),
+    .io_prio_29(fanin_io_prio_29),
+    .io_prio_30(fanin_io_prio_30),
+    .io_prio_31(fanin_io_prio_31),
+    .io_prio_32(fanin_io_prio_32),
+    .io_prio_33(fanin_io_prio_33),
+    .io_prio_34(fanin_io_prio_34),
+    .io_prio_35(fanin_io_prio_35),
+    .io_prio_36(fanin_io_prio_36),
+    .io_prio_37(fanin_io_prio_37),
+    .io_prio_38(fanin_io_prio_38),
+    .io_prio_39(fanin_io_prio_39),
+    .io_prio_40(fanin_io_prio_40),
+    .io_prio_41(fanin_io_prio_41),
+    .io_prio_42(fanin_io_prio_42),
+    .io_prio_43(fanin_io_prio_43),
+    .io_prio_44(fanin_io_prio_44),
+    .io_prio_45(fanin_io_prio_45),
+    .io_prio_46(fanin_io_prio_46),
+    .io_prio_47(fanin_io_prio_47),
+    .io_prio_48(fanin_io_prio_48),
+    .io_prio_49(fanin_io_prio_49),
+    .io_prio_50(fanin_io_prio_50),
+    .io_prio_51(fanin_io_prio_51),
+    .io_prio_52(fanin_io_prio_52),
+    .io_prio_53(fanin_io_prio_53),
+    .io_prio_54(fanin_io_prio_54),
+    .io_prio_55(fanin_io_prio_55),
+    .io_ip(fanin_io_ip),
+    .io_dev(fanin_io_dev),
+    .io_max(fanin_io_max)
+  );
+  PLICFanIn fanin_1 ( // @[Plic.scala 184:25]
+    .io_prio_0(fanin_1_io_prio_0),
+    .io_prio_1(fanin_1_io_prio_1),
+    .io_prio_2(fanin_1_io_prio_2),
+    .io_prio_3(fanin_1_io_prio_3),
+    .io_prio_4(fanin_1_io_prio_4),
+    .io_prio_5(fanin_1_io_prio_5),
+    .io_prio_6(fanin_1_io_prio_6),
+    .io_prio_7(fanin_1_io_prio_7),
+    .io_prio_8(fanin_1_io_prio_8),
+    .io_prio_9(fanin_1_io_prio_9),
+    .io_prio_10(fanin_1_io_prio_10),
+    .io_prio_11(fanin_1_io_prio_11),
+    .io_prio_12(fanin_1_io_prio_12),
+    .io_prio_13(fanin_1_io_prio_13),
+    .io_prio_14(fanin_1_io_prio_14),
+    .io_prio_15(fanin_1_io_prio_15),
+    .io_prio_16(fanin_1_io_prio_16),
+    .io_prio_17(fanin_1_io_prio_17),
+    .io_prio_18(fanin_1_io_prio_18),
+    .io_prio_19(fanin_1_io_prio_19),
+    .io_prio_20(fanin_1_io_prio_20),
+    .io_prio_21(fanin_1_io_prio_21),
+    .io_prio_22(fanin_1_io_prio_22),
+    .io_prio_23(fanin_1_io_prio_23),
+    .io_prio_24(fanin_1_io_prio_24),
+    .io_prio_25(fanin_1_io_prio_25),
+    .io_prio_26(fanin_1_io_prio_26),
+    .io_prio_27(fanin_1_io_prio_27),
+    .io_prio_28(fanin_1_io_prio_28),
+    .io_prio_29(fanin_1_io_prio_29),
+    .io_prio_30(fanin_1_io_prio_30),
+    .io_prio_31(fanin_1_io_prio_31),
+    .io_prio_32(fanin_1_io_prio_32),
+    .io_prio_33(fanin_1_io_prio_33),
+    .io_prio_34(fanin_1_io_prio_34),
+    .io_prio_35(fanin_1_io_prio_35),
+    .io_prio_36(fanin_1_io_prio_36),
+    .io_prio_37(fanin_1_io_prio_37),
+    .io_prio_38(fanin_1_io_prio_38),
+    .io_prio_39(fanin_1_io_prio_39),
+    .io_prio_40(fanin_1_io_prio_40),
+    .io_prio_41(fanin_1_io_prio_41),
+    .io_prio_42(fanin_1_io_prio_42),
+    .io_prio_43(fanin_1_io_prio_43),
+    .io_prio_44(fanin_1_io_prio_44),
+    .io_prio_45(fanin_1_io_prio_45),
+    .io_prio_46(fanin_1_io_prio_46),
+    .io_prio_47(fanin_1_io_prio_47),
+    .io_prio_48(fanin_1_io_prio_48),
+    .io_prio_49(fanin_1_io_prio_49),
+    .io_prio_50(fanin_1_io_prio_50),
+    .io_prio_51(fanin_1_io_prio_51),
+    .io_prio_52(fanin_1_io_prio_52),
+    .io_prio_53(fanin_1_io_prio_53),
+    .io_prio_54(fanin_1_io_prio_54),
+    .io_prio_55(fanin_1_io_prio_55),
+    .io_ip(fanin_1_io_ip),
+    .io_dev(fanin_1_io_dev),
+    .io_max(fanin_1_io_max)
+  );
+  Queue_22 out_back ( // @[Decoupled.scala 361:21]
+    .clock(out_back_clock),
+    .reset(out_back_reset),
+    .io_enq_ready(out_back_io_enq_ready),
+    .io_enq_valid(out_back_io_enq_valid),
+    .io_enq_bits_read(out_back_io_enq_bits_read),
+    .io_enq_bits_index(out_back_io_enq_bits_index),
+    .io_enq_bits_data(out_back_io_enq_bits_data),
+    .io_enq_bits_mask(out_back_io_enq_bits_mask),
+    .io_enq_bits_extra_tlrr_extra_source(out_back_io_enq_bits_extra_tlrr_extra_source),
+    .io_enq_bits_extra_tlrr_extra_size(out_back_io_enq_bits_extra_tlrr_extra_size),
+    .io_deq_ready(out_back_io_deq_ready),
+    .io_deq_valid(out_back_io_deq_valid),
+    .io_deq_bits_read(out_back_io_deq_bits_read),
+    .io_deq_bits_index(out_back_io_deq_bits_index),
+    .io_deq_bits_data(out_back_io_deq_bits_data),
+    .io_deq_bits_mask(out_back_io_deq_bits_mask),
+    .io_deq_bits_extra_tlrr_extra_source(out_back_io_deq_bits_extra_tlrr_extra_source),
+    .io_deq_bits_extra_tlrr_extra_size(out_back_io_deq_bits_extra_tlrr_extra_size)
+  );
+  assign auto_int_out_1_0 = bundleOut_1_0_REG > threshold_1; // @[Plic.scala 188:63]
+  assign auto_int_out_0_0 = bundleOut_0_0_REG > threshold_0; // @[Plic.scala 188:63]
+  assign auto_in_a_ready = out_back_io_enq_ready; // @[Decoupled.scala 365:17 RegisterRouter.scala 83:24]
+  assign auto_in_d_valid = out_back_io_deq_valid; // @[RegisterRouter.scala 83:24]
+  assign auto_in_d_bits_opcode = {{2'd0}, out_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign auto_in_d_bits_size = out_back_io_deq_bits_extra_tlrr_extra_size; // @[RegisterRouter.scala 83:{24,24}]
+  assign auto_in_d_bits_source = out_back_io_deq_bits_extra_tlrr_extra_source; // @[RegisterRouter.scala 83:{24,24}]
+  assign auto_in_d_bits_data = out_out_bits_data_out ? out_out_bits_data_out_1 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = out_back_io_enq_ready; // @[Decoupled.scala 365:17 RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = out_back_io_deq_valid; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, out_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = out_back_io_deq_bits_extra_tlrr_extra_size; // @[RegisterRouter.scala 83:{24,24}]
+  assign monitor_io_in_d_bits_source = out_back_io_deq_bits_extra_tlrr_extra_source; // @[RegisterRouter.scala 83:{24,24}]
+  assign gateways_gateway_clock = clock;
+  assign gateways_gateway_reset = reset;
+  assign gateways_gateway_io_interrupt = auto_int_in_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_io_plic_ready = ~pending_0; // @[Plic.scala 250:18]
+  assign gateways_gateway_io_plic_complete = completedDevs[1]; // @[Plic.scala 265:33]
+  assign gateways_gateway_1_clock = clock;
+  assign gateways_gateway_1_reset = reset;
+  assign gateways_gateway_1_io_interrupt = auto_int_in_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_1_io_plic_ready = ~pending_1; // @[Plic.scala 250:18]
+  assign gateways_gateway_1_io_plic_complete = completedDevs[2]; // @[Plic.scala 265:33]
+  assign gateways_gateway_2_clock = clock;
+  assign gateways_gateway_2_reset = reset;
+  assign gateways_gateway_2_io_interrupt = auto_int_in_2; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_2_io_plic_ready = ~pending_2; // @[Plic.scala 250:18]
+  assign gateways_gateway_2_io_plic_complete = completedDevs[3]; // @[Plic.scala 265:33]
+  assign gateways_gateway_3_clock = clock;
+  assign gateways_gateway_3_reset = reset;
+  assign gateways_gateway_3_io_interrupt = auto_int_in_3; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_3_io_plic_ready = ~pending_3; // @[Plic.scala 250:18]
+  assign gateways_gateway_3_io_plic_complete = completedDevs[4]; // @[Plic.scala 265:33]
+  assign gateways_gateway_4_clock = clock;
+  assign gateways_gateway_4_reset = reset;
+  assign gateways_gateway_4_io_interrupt = auto_int_in_4; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_4_io_plic_ready = ~pending_4; // @[Plic.scala 250:18]
+  assign gateways_gateway_4_io_plic_complete = completedDevs[5]; // @[Plic.scala 265:33]
+  assign gateways_gateway_5_clock = clock;
+  assign gateways_gateway_5_reset = reset;
+  assign gateways_gateway_5_io_interrupt = auto_int_in_5; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_5_io_plic_ready = ~pending_5; // @[Plic.scala 250:18]
+  assign gateways_gateway_5_io_plic_complete = completedDevs[6]; // @[Plic.scala 265:33]
+  assign gateways_gateway_6_clock = clock;
+  assign gateways_gateway_6_reset = reset;
+  assign gateways_gateway_6_io_interrupt = auto_int_in_6; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_6_io_plic_ready = ~pending_6; // @[Plic.scala 250:18]
+  assign gateways_gateway_6_io_plic_complete = completedDevs[7]; // @[Plic.scala 265:33]
+  assign gateways_gateway_7_clock = clock;
+  assign gateways_gateway_7_reset = reset;
+  assign gateways_gateway_7_io_interrupt = auto_int_in_7; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_7_io_plic_ready = ~pending_7; // @[Plic.scala 250:18]
+  assign gateways_gateway_7_io_plic_complete = completedDevs[8]; // @[Plic.scala 265:33]
+  assign gateways_gateway_8_clock = clock;
+  assign gateways_gateway_8_reset = reset;
+  assign gateways_gateway_8_io_interrupt = auto_int_in_8; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_8_io_plic_ready = ~pending_8; // @[Plic.scala 250:18]
+  assign gateways_gateway_8_io_plic_complete = completedDevs[9]; // @[Plic.scala 265:33]
+  assign gateways_gateway_9_clock = clock;
+  assign gateways_gateway_9_reset = reset;
+  assign gateways_gateway_9_io_interrupt = auto_int_in_9; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_9_io_plic_ready = ~pending_9; // @[Plic.scala 250:18]
+  assign gateways_gateway_9_io_plic_complete = completedDevs[10]; // @[Plic.scala 265:33]
+  assign gateways_gateway_10_clock = clock;
+  assign gateways_gateway_10_reset = reset;
+  assign gateways_gateway_10_io_interrupt = auto_int_in_10; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_10_io_plic_ready = ~pending_10; // @[Plic.scala 250:18]
+  assign gateways_gateway_10_io_plic_complete = completedDevs[11]; // @[Plic.scala 265:33]
+  assign gateways_gateway_11_clock = clock;
+  assign gateways_gateway_11_reset = reset;
+  assign gateways_gateway_11_io_interrupt = auto_int_in_11; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_11_io_plic_ready = ~pending_11; // @[Plic.scala 250:18]
+  assign gateways_gateway_11_io_plic_complete = completedDevs[12]; // @[Plic.scala 265:33]
+  assign gateways_gateway_12_clock = clock;
+  assign gateways_gateway_12_reset = reset;
+  assign gateways_gateway_12_io_interrupt = auto_int_in_12; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_12_io_plic_ready = ~pending_12; // @[Plic.scala 250:18]
+  assign gateways_gateway_12_io_plic_complete = completedDevs[13]; // @[Plic.scala 265:33]
+  assign gateways_gateway_13_clock = clock;
+  assign gateways_gateway_13_reset = reset;
+  assign gateways_gateway_13_io_interrupt = auto_int_in_13; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_13_io_plic_ready = ~pending_13; // @[Plic.scala 250:18]
+  assign gateways_gateway_13_io_plic_complete = completedDevs[14]; // @[Plic.scala 265:33]
+  assign gateways_gateway_14_clock = clock;
+  assign gateways_gateway_14_reset = reset;
+  assign gateways_gateway_14_io_interrupt = auto_int_in_14; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_14_io_plic_ready = ~pending_14; // @[Plic.scala 250:18]
+  assign gateways_gateway_14_io_plic_complete = completedDevs[15]; // @[Plic.scala 265:33]
+  assign gateways_gateway_15_clock = clock;
+  assign gateways_gateway_15_reset = reset;
+  assign gateways_gateway_15_io_interrupt = auto_int_in_15; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_15_io_plic_ready = ~pending_15; // @[Plic.scala 250:18]
+  assign gateways_gateway_15_io_plic_complete = completedDevs[16]; // @[Plic.scala 265:33]
+  assign gateways_gateway_16_clock = clock;
+  assign gateways_gateway_16_reset = reset;
+  assign gateways_gateway_16_io_interrupt = auto_int_in_16; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_16_io_plic_ready = ~pending_16; // @[Plic.scala 250:18]
+  assign gateways_gateway_16_io_plic_complete = completedDevs[17]; // @[Plic.scala 265:33]
+  assign gateways_gateway_17_clock = clock;
+  assign gateways_gateway_17_reset = reset;
+  assign gateways_gateway_17_io_interrupt = auto_int_in_17; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_17_io_plic_ready = ~pending_17; // @[Plic.scala 250:18]
+  assign gateways_gateway_17_io_plic_complete = completedDevs[18]; // @[Plic.scala 265:33]
+  assign gateways_gateway_18_clock = clock;
+  assign gateways_gateway_18_reset = reset;
+  assign gateways_gateway_18_io_interrupt = auto_int_in_18; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_18_io_plic_ready = ~pending_18; // @[Plic.scala 250:18]
+  assign gateways_gateway_18_io_plic_complete = completedDevs[19]; // @[Plic.scala 265:33]
+  assign gateways_gateway_19_clock = clock;
+  assign gateways_gateway_19_reset = reset;
+  assign gateways_gateway_19_io_interrupt = auto_int_in_19; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_19_io_plic_ready = ~pending_19; // @[Plic.scala 250:18]
+  assign gateways_gateway_19_io_plic_complete = completedDevs[20]; // @[Plic.scala 265:33]
+  assign gateways_gateway_20_clock = clock;
+  assign gateways_gateway_20_reset = reset;
+  assign gateways_gateway_20_io_interrupt = auto_int_in_20; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_20_io_plic_ready = ~pending_20; // @[Plic.scala 250:18]
+  assign gateways_gateway_20_io_plic_complete = completedDevs[21]; // @[Plic.scala 265:33]
+  assign gateways_gateway_21_clock = clock;
+  assign gateways_gateway_21_reset = reset;
+  assign gateways_gateway_21_io_interrupt = auto_int_in_21; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_21_io_plic_ready = ~pending_21; // @[Plic.scala 250:18]
+  assign gateways_gateway_21_io_plic_complete = completedDevs[22]; // @[Plic.scala 265:33]
+  assign gateways_gateway_22_clock = clock;
+  assign gateways_gateway_22_reset = reset;
+  assign gateways_gateway_22_io_interrupt = auto_int_in_22; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_22_io_plic_ready = ~pending_22; // @[Plic.scala 250:18]
+  assign gateways_gateway_22_io_plic_complete = completedDevs[23]; // @[Plic.scala 265:33]
+  assign gateways_gateway_23_clock = clock;
+  assign gateways_gateway_23_reset = reset;
+  assign gateways_gateway_23_io_interrupt = auto_int_in_23; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_23_io_plic_ready = ~pending_23; // @[Plic.scala 250:18]
+  assign gateways_gateway_23_io_plic_complete = completedDevs[24]; // @[Plic.scala 265:33]
+  assign gateways_gateway_24_clock = clock;
+  assign gateways_gateway_24_reset = reset;
+  assign gateways_gateway_24_io_interrupt = auto_int_in_24; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_24_io_plic_ready = ~pending_24; // @[Plic.scala 250:18]
+  assign gateways_gateway_24_io_plic_complete = completedDevs[25]; // @[Plic.scala 265:33]
+  assign gateways_gateway_25_clock = clock;
+  assign gateways_gateway_25_reset = reset;
+  assign gateways_gateway_25_io_interrupt = auto_int_in_25; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_25_io_plic_ready = ~pending_25; // @[Plic.scala 250:18]
+  assign gateways_gateway_25_io_plic_complete = completedDevs[26]; // @[Plic.scala 265:33]
+  assign gateways_gateway_26_clock = clock;
+  assign gateways_gateway_26_reset = reset;
+  assign gateways_gateway_26_io_interrupt = auto_int_in_26; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_26_io_plic_ready = ~pending_26; // @[Plic.scala 250:18]
+  assign gateways_gateway_26_io_plic_complete = completedDevs[27]; // @[Plic.scala 265:33]
+  assign gateways_gateway_27_clock = clock;
+  assign gateways_gateway_27_reset = reset;
+  assign gateways_gateway_27_io_interrupt = auto_int_in_27; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_27_io_plic_ready = ~pending_27; // @[Plic.scala 250:18]
+  assign gateways_gateway_27_io_plic_complete = completedDevs[28]; // @[Plic.scala 265:33]
+  assign gateways_gateway_28_clock = clock;
+  assign gateways_gateway_28_reset = reset;
+  assign gateways_gateway_28_io_interrupt = auto_int_in_28; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_28_io_plic_ready = ~pending_28; // @[Plic.scala 250:18]
+  assign gateways_gateway_28_io_plic_complete = completedDevs[29]; // @[Plic.scala 265:33]
+  assign gateways_gateway_29_clock = clock;
+  assign gateways_gateway_29_reset = reset;
+  assign gateways_gateway_29_io_interrupt = auto_int_in_29; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_29_io_plic_ready = ~pending_29; // @[Plic.scala 250:18]
+  assign gateways_gateway_29_io_plic_complete = completedDevs[30]; // @[Plic.scala 265:33]
+  assign gateways_gateway_30_clock = clock;
+  assign gateways_gateway_30_reset = reset;
+  assign gateways_gateway_30_io_interrupt = auto_int_in_30; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_30_io_plic_ready = ~pending_30; // @[Plic.scala 250:18]
+  assign gateways_gateway_30_io_plic_complete = completedDevs[31]; // @[Plic.scala 265:33]
+  assign gateways_gateway_31_clock = clock;
+  assign gateways_gateway_31_reset = reset;
+  assign gateways_gateway_31_io_interrupt = auto_int_in_31; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_31_io_plic_ready = ~pending_31; // @[Plic.scala 250:18]
+  assign gateways_gateway_31_io_plic_complete = completedDevs[32]; // @[Plic.scala 265:33]
+  assign gateways_gateway_32_clock = clock;
+  assign gateways_gateway_32_reset = reset;
+  assign gateways_gateway_32_io_interrupt = auto_int_in_32; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_32_io_plic_ready = ~pending_32; // @[Plic.scala 250:18]
+  assign gateways_gateway_32_io_plic_complete = completedDevs[33]; // @[Plic.scala 265:33]
+  assign gateways_gateway_33_clock = clock;
+  assign gateways_gateway_33_reset = reset;
+  assign gateways_gateway_33_io_interrupt = auto_int_in_33; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_33_io_plic_ready = ~pending_33; // @[Plic.scala 250:18]
+  assign gateways_gateway_33_io_plic_complete = completedDevs[34]; // @[Plic.scala 265:33]
+  assign gateways_gateway_34_clock = clock;
+  assign gateways_gateway_34_reset = reset;
+  assign gateways_gateway_34_io_interrupt = auto_int_in_34; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_34_io_plic_ready = ~pending_34; // @[Plic.scala 250:18]
+  assign gateways_gateway_34_io_plic_complete = completedDevs[35]; // @[Plic.scala 265:33]
+  assign gateways_gateway_35_clock = clock;
+  assign gateways_gateway_35_reset = reset;
+  assign gateways_gateway_35_io_interrupt = auto_int_in_35; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_35_io_plic_ready = ~pending_35; // @[Plic.scala 250:18]
+  assign gateways_gateway_35_io_plic_complete = completedDevs[36]; // @[Plic.scala 265:33]
+  assign gateways_gateway_36_clock = clock;
+  assign gateways_gateway_36_reset = reset;
+  assign gateways_gateway_36_io_interrupt = auto_int_in_36; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_36_io_plic_ready = ~pending_36; // @[Plic.scala 250:18]
+  assign gateways_gateway_36_io_plic_complete = completedDevs[37]; // @[Plic.scala 265:33]
+  assign gateways_gateway_37_clock = clock;
+  assign gateways_gateway_37_reset = reset;
+  assign gateways_gateway_37_io_interrupt = auto_int_in_37; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_37_io_plic_ready = ~pending_37; // @[Plic.scala 250:18]
+  assign gateways_gateway_37_io_plic_complete = completedDevs[38]; // @[Plic.scala 265:33]
+  assign gateways_gateway_38_clock = clock;
+  assign gateways_gateway_38_reset = reset;
+  assign gateways_gateway_38_io_interrupt = auto_int_in_38; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_38_io_plic_ready = ~pending_38; // @[Plic.scala 250:18]
+  assign gateways_gateway_38_io_plic_complete = completedDevs[39]; // @[Plic.scala 265:33]
+  assign gateways_gateway_39_clock = clock;
+  assign gateways_gateway_39_reset = reset;
+  assign gateways_gateway_39_io_interrupt = auto_int_in_39; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_39_io_plic_ready = ~pending_39; // @[Plic.scala 250:18]
+  assign gateways_gateway_39_io_plic_complete = completedDevs[40]; // @[Plic.scala 265:33]
+  assign gateways_gateway_40_clock = clock;
+  assign gateways_gateway_40_reset = reset;
+  assign gateways_gateway_40_io_interrupt = auto_int_in_40; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_40_io_plic_ready = ~pending_40; // @[Plic.scala 250:18]
+  assign gateways_gateway_40_io_plic_complete = completedDevs[41]; // @[Plic.scala 265:33]
+  assign gateways_gateway_41_clock = clock;
+  assign gateways_gateway_41_reset = reset;
+  assign gateways_gateway_41_io_interrupt = auto_int_in_41; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_41_io_plic_ready = ~pending_41; // @[Plic.scala 250:18]
+  assign gateways_gateway_41_io_plic_complete = completedDevs[42]; // @[Plic.scala 265:33]
+  assign gateways_gateway_42_clock = clock;
+  assign gateways_gateway_42_reset = reset;
+  assign gateways_gateway_42_io_interrupt = auto_int_in_42; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_42_io_plic_ready = ~pending_42; // @[Plic.scala 250:18]
+  assign gateways_gateway_42_io_plic_complete = completedDevs[43]; // @[Plic.scala 265:33]
+  assign gateways_gateway_43_clock = clock;
+  assign gateways_gateway_43_reset = reset;
+  assign gateways_gateway_43_io_interrupt = auto_int_in_43; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_43_io_plic_ready = ~pending_43; // @[Plic.scala 250:18]
+  assign gateways_gateway_43_io_plic_complete = completedDevs[44]; // @[Plic.scala 265:33]
+  assign gateways_gateway_44_clock = clock;
+  assign gateways_gateway_44_reset = reset;
+  assign gateways_gateway_44_io_interrupt = auto_int_in_44; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_44_io_plic_ready = ~pending_44; // @[Plic.scala 250:18]
+  assign gateways_gateway_44_io_plic_complete = completedDevs[45]; // @[Plic.scala 265:33]
+  assign gateways_gateway_45_clock = clock;
+  assign gateways_gateway_45_reset = reset;
+  assign gateways_gateway_45_io_interrupt = auto_int_in_45; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_45_io_plic_ready = ~pending_45; // @[Plic.scala 250:18]
+  assign gateways_gateway_45_io_plic_complete = completedDevs[46]; // @[Plic.scala 265:33]
+  assign gateways_gateway_46_clock = clock;
+  assign gateways_gateway_46_reset = reset;
+  assign gateways_gateway_46_io_interrupt = auto_int_in_46; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_46_io_plic_ready = ~pending_46; // @[Plic.scala 250:18]
+  assign gateways_gateway_46_io_plic_complete = completedDevs[47]; // @[Plic.scala 265:33]
+  assign gateways_gateway_47_clock = clock;
+  assign gateways_gateway_47_reset = reset;
+  assign gateways_gateway_47_io_interrupt = auto_int_in_47; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_47_io_plic_ready = ~pending_47; // @[Plic.scala 250:18]
+  assign gateways_gateway_47_io_plic_complete = completedDevs[48]; // @[Plic.scala 265:33]
+  assign gateways_gateway_48_clock = clock;
+  assign gateways_gateway_48_reset = reset;
+  assign gateways_gateway_48_io_interrupt = auto_int_in_48; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_48_io_plic_ready = ~pending_48; // @[Plic.scala 250:18]
+  assign gateways_gateway_48_io_plic_complete = completedDevs[49]; // @[Plic.scala 265:33]
+  assign gateways_gateway_49_clock = clock;
+  assign gateways_gateway_49_reset = reset;
+  assign gateways_gateway_49_io_interrupt = auto_int_in_49; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_49_io_plic_ready = ~pending_49; // @[Plic.scala 250:18]
+  assign gateways_gateway_49_io_plic_complete = completedDevs[50]; // @[Plic.scala 265:33]
+  assign gateways_gateway_50_clock = clock;
+  assign gateways_gateway_50_reset = reset;
+  assign gateways_gateway_50_io_interrupt = auto_int_in_50; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_50_io_plic_ready = ~pending_50; // @[Plic.scala 250:18]
+  assign gateways_gateway_50_io_plic_complete = completedDevs[51]; // @[Plic.scala 265:33]
+  assign gateways_gateway_51_clock = clock;
+  assign gateways_gateway_51_reset = reset;
+  assign gateways_gateway_51_io_interrupt = auto_int_in_51; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_51_io_plic_ready = ~pending_51; // @[Plic.scala 250:18]
+  assign gateways_gateway_51_io_plic_complete = completedDevs[52]; // @[Plic.scala 265:33]
+  assign gateways_gateway_52_clock = clock;
+  assign gateways_gateway_52_reset = reset;
+  assign gateways_gateway_52_io_interrupt = auto_int_in_52; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_52_io_plic_ready = ~pending_52; // @[Plic.scala 250:18]
+  assign gateways_gateway_52_io_plic_complete = completedDevs[53]; // @[Plic.scala 265:33]
+  assign gateways_gateway_53_clock = clock;
+  assign gateways_gateway_53_reset = reset;
+  assign gateways_gateway_53_io_interrupt = auto_int_in_53; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_53_io_plic_ready = ~pending_53; // @[Plic.scala 250:18]
+  assign gateways_gateway_53_io_plic_complete = completedDevs[54]; // @[Plic.scala 265:33]
+  assign gateways_gateway_54_clock = clock;
+  assign gateways_gateway_54_reset = reset;
+  assign gateways_gateway_54_io_interrupt = auto_int_in_54; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_54_io_plic_ready = ~pending_54; // @[Plic.scala 250:18]
+  assign gateways_gateway_54_io_plic_complete = completedDevs[55]; // @[Plic.scala 265:33]
+  assign gateways_gateway_55_clock = clock;
+  assign gateways_gateway_55_reset = reset;
+  assign gateways_gateway_55_io_interrupt = auto_int_in_55; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gateways_gateway_55_io_plic_ready = ~pending_55; // @[Plic.scala 250:18]
+  assign gateways_gateway_55_io_plic_complete = completedDevs[56]; // @[Plic.scala 265:33]
+  assign fanin_io_prio_0 = priority_0; // @[Plic.scala 185:21]
+  assign fanin_io_prio_1 = priority_1; // @[Plic.scala 185:21]
+  assign fanin_io_prio_2 = priority_2; // @[Plic.scala 185:21]
+  assign fanin_io_prio_3 = priority_3; // @[Plic.scala 185:21]
+  assign fanin_io_prio_4 = priority_4; // @[Plic.scala 185:21]
+  assign fanin_io_prio_5 = priority_5; // @[Plic.scala 185:21]
+  assign fanin_io_prio_6 = priority_6; // @[Plic.scala 185:21]
+  assign fanin_io_prio_7 = priority_7; // @[Plic.scala 185:21]
+  assign fanin_io_prio_8 = priority_8; // @[Plic.scala 185:21]
+  assign fanin_io_prio_9 = priority_9; // @[Plic.scala 185:21]
+  assign fanin_io_prio_10 = priority_10; // @[Plic.scala 185:21]
+  assign fanin_io_prio_11 = priority_11; // @[Plic.scala 185:21]
+  assign fanin_io_prio_12 = priority_12; // @[Plic.scala 185:21]
+  assign fanin_io_prio_13 = priority_13; // @[Plic.scala 185:21]
+  assign fanin_io_prio_14 = priority_14; // @[Plic.scala 185:21]
+  assign fanin_io_prio_15 = priority_15; // @[Plic.scala 185:21]
+  assign fanin_io_prio_16 = priority_16; // @[Plic.scala 185:21]
+  assign fanin_io_prio_17 = priority_17; // @[Plic.scala 185:21]
+  assign fanin_io_prio_18 = priority_18; // @[Plic.scala 185:21]
+  assign fanin_io_prio_19 = priority_19; // @[Plic.scala 185:21]
+  assign fanin_io_prio_20 = priority_20; // @[Plic.scala 185:21]
+  assign fanin_io_prio_21 = priority_21; // @[Plic.scala 185:21]
+  assign fanin_io_prio_22 = priority_22; // @[Plic.scala 185:21]
+  assign fanin_io_prio_23 = priority_23; // @[Plic.scala 185:21]
+  assign fanin_io_prio_24 = priority_24; // @[Plic.scala 185:21]
+  assign fanin_io_prio_25 = priority_25; // @[Plic.scala 185:21]
+  assign fanin_io_prio_26 = priority_26; // @[Plic.scala 185:21]
+  assign fanin_io_prio_27 = priority_27; // @[Plic.scala 185:21]
+  assign fanin_io_prio_28 = priority_28; // @[Plic.scala 185:21]
+  assign fanin_io_prio_29 = priority_29; // @[Plic.scala 185:21]
+  assign fanin_io_prio_30 = priority_30; // @[Plic.scala 185:21]
+  assign fanin_io_prio_31 = priority_31; // @[Plic.scala 185:21]
+  assign fanin_io_prio_32 = priority_32; // @[Plic.scala 185:21]
+  assign fanin_io_prio_33 = priority_33; // @[Plic.scala 185:21]
+  assign fanin_io_prio_34 = priority_34; // @[Plic.scala 185:21]
+  assign fanin_io_prio_35 = priority_35; // @[Plic.scala 185:21]
+  assign fanin_io_prio_36 = priority_36; // @[Plic.scala 185:21]
+  assign fanin_io_prio_37 = priority_37; // @[Plic.scala 185:21]
+  assign fanin_io_prio_38 = priority_38; // @[Plic.scala 185:21]
+  assign fanin_io_prio_39 = priority_39; // @[Plic.scala 185:21]
+  assign fanin_io_prio_40 = priority_40; // @[Plic.scala 185:21]
+  assign fanin_io_prio_41 = priority_41; // @[Plic.scala 185:21]
+  assign fanin_io_prio_42 = priority_42; // @[Plic.scala 185:21]
+  assign fanin_io_prio_43 = priority_43; // @[Plic.scala 185:21]
+  assign fanin_io_prio_44 = priority_44; // @[Plic.scala 185:21]
+  assign fanin_io_prio_45 = priority_45; // @[Plic.scala 185:21]
+  assign fanin_io_prio_46 = priority_46; // @[Plic.scala 185:21]
+  assign fanin_io_prio_47 = priority_47; // @[Plic.scala 185:21]
+  assign fanin_io_prio_48 = priority_48; // @[Plic.scala 185:21]
+  assign fanin_io_prio_49 = priority_49; // @[Plic.scala 185:21]
+  assign fanin_io_prio_50 = priority_50; // @[Plic.scala 185:21]
+  assign fanin_io_prio_51 = priority_51; // @[Plic.scala 185:21]
+  assign fanin_io_prio_52 = priority_52; // @[Plic.scala 185:21]
+  assign fanin_io_prio_53 = priority_53; // @[Plic.scala 185:21]
+  assign fanin_io_prio_54 = priority_54; // @[Plic.scala 185:21]
+  assign fanin_io_prio_55 = priority_55; // @[Plic.scala 185:21]
+  assign fanin_io_ip = enableVec_0 & pendingUInt; // @[Plic.scala 186:40]
+  assign fanin_1_io_prio_0 = priority_0; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_1 = priority_1; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_2 = priority_2; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_3 = priority_3; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_4 = priority_4; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_5 = priority_5; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_6 = priority_6; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_7 = priority_7; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_8 = priority_8; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_9 = priority_9; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_10 = priority_10; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_11 = priority_11; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_12 = priority_12; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_13 = priority_13; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_14 = priority_14; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_15 = priority_15; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_16 = priority_16; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_17 = priority_17; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_18 = priority_18; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_19 = priority_19; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_20 = priority_20; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_21 = priority_21; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_22 = priority_22; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_23 = priority_23; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_24 = priority_24; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_25 = priority_25; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_26 = priority_26; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_27 = priority_27; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_28 = priority_28; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_29 = priority_29; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_30 = priority_30; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_31 = priority_31; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_32 = priority_32; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_33 = priority_33; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_34 = priority_34; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_35 = priority_35; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_36 = priority_36; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_37 = priority_37; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_38 = priority_38; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_39 = priority_39; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_40 = priority_40; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_41 = priority_41; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_42 = priority_42; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_43 = priority_43; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_44 = priority_44; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_45 = priority_45; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_46 = priority_46; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_47 = priority_47; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_48 = priority_48; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_49 = priority_49; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_50 = priority_50; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_51 = priority_51; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_52 = priority_52; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_53 = priority_53; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_54 = priority_54; // @[Plic.scala 185:21]
+  assign fanin_1_io_prio_55 = priority_55; // @[Plic.scala 185:21]
+  assign fanin_1_io_ip = enableVec_1 & pendingUInt; // @[Plic.scala 186:40]
+  assign out_back_clock = clock;
+  assign out_back_reset = reset;
+  assign out_back_io_enq_valid = auto_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign out_back_io_enq_bits_read = auto_in_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  assign out_back_io_enq_bits_index = auto_in_a_bits_address[25:2]; // @[RegisterRouter.scala 71:18 73:19]
+  assign out_back_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign out_back_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign out_back_io_enq_bits_extra_tlrr_extra_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign out_back_io_enq_bits_extra_tlrr_extra_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign out_back_io_deq_ready = auto_in_d_ready; // @[RegisterRouter.scala 83:24]
+  always @(posedge clock) begin
+    if (out_f_woready_49) begin // @[RegField.scala 74:88]
+      priority_0 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_64) begin // @[RegField.scala 74:88]
+      priority_1 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_86) begin // @[RegField.scala 74:88]
+      priority_2 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_134) begin // @[RegField.scala 74:88]
+      priority_3 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_32) begin // @[RegField.scala 74:88]
+      priority_4 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_50) begin // @[RegField.scala 74:88]
+      priority_5 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_84) begin // @[RegField.scala 74:88]
+      priority_6 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_125) begin // @[RegField.scala 74:88]
+      priority_7 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_55) begin // @[RegField.scala 74:88]
+      priority_8 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_33) begin // @[RegField.scala 74:88]
+      priority_9 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_119) begin // @[RegField.scala 74:88]
+      priority_10 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_81) begin // @[RegField.scala 74:88]
+      priority_11 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_62) begin // @[RegField.scala 74:88]
+      priority_12 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_40) begin // @[RegField.scala 74:88]
+      priority_13 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_136) begin // @[RegField.scala 74:88]
+      priority_14 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_116) begin // @[RegField.scala 74:88]
+      priority_15 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_68) begin // @[RegField.scala 74:88]
+      priority_16 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_114) begin // @[RegField.scala 74:88]
+      priority_17 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_133) begin // @[RegField.scala 74:88]
+      priority_18 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_41) begin // @[RegField.scala 74:88]
+      priority_19 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_53) begin // @[RegField.scala 74:88]
+      priority_20 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_78) begin // @[RegField.scala 74:88]
+      priority_21 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_124) begin // @[RegField.scala 74:88]
+      priority_22 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_36) begin // @[RegField.scala 74:88]
+      priority_23 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_38) begin // @[RegField.scala 74:88]
+      priority_24 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_122) begin // @[RegField.scala 74:88]
+      priority_25 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_80) begin // @[RegField.scala 74:88]
+      priority_26 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_51) begin // @[RegField.scala 74:88]
+      priority_27 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_47) begin // @[RegField.scala 74:88]
+      priority_28 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_131) begin // @[RegField.scala 74:88]
+      priority_29 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_117) begin // @[RegField.scala 74:88]
+      priority_30 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_65) begin // @[RegField.scala 74:88]
+      priority_31 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_54) begin // @[RegField.scala 74:88]
+      priority_32 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_66) begin // @[RegField.scala 74:88]
+      priority_33 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_87) begin // @[RegField.scala 74:88]
+      priority_34 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_130) begin // @[RegField.scala 74:88]
+      priority_35 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_37) begin // @[RegField.scala 74:88]
+      priority_36 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_52) begin // @[RegField.scala 74:88]
+      priority_37 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_85) begin // @[RegField.scala 74:88]
+      priority_38 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_121) begin // @[RegField.scala 74:88]
+      priority_39 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_63) begin // @[RegField.scala 74:88]
+      priority_40 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_35) begin // @[RegField.scala 74:88]
+      priority_41 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_120) begin // @[RegField.scala 74:88]
+      priority_42 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_79) begin // @[RegField.scala 74:88]
+      priority_43 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_67) begin // @[RegField.scala 74:88]
+      priority_44 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_46) begin // @[RegField.scala 74:88]
+      priority_45 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_135) begin // @[RegField.scala 74:88]
+      priority_46 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_88) begin // @[RegField.scala 74:88]
+      priority_47 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_83) begin // @[RegField.scala 74:88]
+      priority_48 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_115) begin // @[RegField.scala 74:88]
+      priority_49 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_132) begin // @[RegField.scala 74:88]
+      priority_50 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_39) begin // @[RegField.scala 74:88]
+      priority_51 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_56) begin // @[RegField.scala 74:88]
+      priority_52 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_82) begin // @[RegField.scala 74:88]
+      priority_53 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_123) begin // @[RegField.scala 74:88]
+      priority_54 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_34) begin // @[RegField.scala 74:88]
+      priority_55 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_71) begin // @[RegField.scala 74:88]
+      threshold_0 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_69) begin // @[RegField.scala 74:88]
+      threshold_1 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_0 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_1 | gateways_gateway_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_0 <= ~claimedDevs_1; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_1 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_2 | gateways_gateway_1_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_1 <= ~claimedDevs_2; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_2 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_3 | gateways_gateway_2_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_2 <= ~claimedDevs_3; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_3 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_4 | gateways_gateway_3_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_3 <= ~claimedDevs_4; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_4 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_5 | gateways_gateway_4_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_4 <= ~claimedDevs_5; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_5 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_6 | gateways_gateway_5_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_5 <= ~claimedDevs_6; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_6 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_7 | gateways_gateway_6_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_6 <= ~claimedDevs_7; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_7 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_8 | gateways_gateway_7_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_7 <= ~claimedDevs_8; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_8 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_9 | gateways_gateway_8_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_8 <= ~claimedDevs_9; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_9 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_10 | gateways_gateway_9_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_9 <= ~claimedDevs_10; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_10 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_11 | gateways_gateway_10_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_10 <= ~claimedDevs_11; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_11 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_12 | gateways_gateway_11_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_11 <= ~claimedDevs_12; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_12 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_13 | gateways_gateway_12_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_12 <= ~claimedDevs_13; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_13 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_14 | gateways_gateway_13_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_13 <= ~claimedDevs_14; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_14 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_15 | gateways_gateway_14_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_14 <= ~claimedDevs_15; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_15 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_16 | gateways_gateway_15_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_15 <= ~claimedDevs_16; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_16 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_17 | gateways_gateway_16_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_16 <= ~claimedDevs_17; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_17 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_18 | gateways_gateway_17_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_17 <= ~claimedDevs_18; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_18 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_19 | gateways_gateway_18_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_18 <= ~claimedDevs_19; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_19 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_20 | gateways_gateway_19_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_19 <= ~claimedDevs_20; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_20 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_21 | gateways_gateway_20_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_20 <= ~claimedDevs_21; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_21 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_22 | gateways_gateway_21_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_21 <= ~claimedDevs_22; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_22 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_23 | gateways_gateway_22_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_22 <= ~claimedDevs_23; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_23 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_24 | gateways_gateway_23_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_23 <= ~claimedDevs_24; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_24 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_25 | gateways_gateway_24_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_24 <= ~claimedDevs_25; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_25 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_26 | gateways_gateway_25_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_25 <= ~claimedDevs_26; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_26 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_27 | gateways_gateway_26_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_26 <= ~claimedDevs_27; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_27 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_28 | gateways_gateway_27_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_27 <= ~claimedDevs_28; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_28 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_29 | gateways_gateway_28_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_28 <= ~claimedDevs_29; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_29 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_30 | gateways_gateway_29_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_29 <= ~claimedDevs_30; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_30 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_31 | gateways_gateway_30_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_30 <= ~claimedDevs_31; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_31 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_32 | gateways_gateway_31_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_31 <= ~claimedDevs_32; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_32 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_33 | gateways_gateway_32_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_32 <= ~claimedDevs_33; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_33 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_34 | gateways_gateway_33_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_33 <= ~claimedDevs_34; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_34 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_35 | gateways_gateway_34_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_34 <= ~claimedDevs_35; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_35 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_36 | gateways_gateway_35_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_35 <= ~claimedDevs_36; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_36 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_37 | gateways_gateway_36_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_36 <= ~claimedDevs_37; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_37 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_38 | gateways_gateway_37_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_37 <= ~claimedDevs_38; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_38 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_39 | gateways_gateway_38_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_38 <= ~claimedDevs_39; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_39 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_40 | gateways_gateway_39_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_39 <= ~claimedDevs_40; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_40 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_41 | gateways_gateway_40_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_40 <= ~claimedDevs_41; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_41 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_42 | gateways_gateway_41_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_41 <= ~claimedDevs_42; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_42 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_43 | gateways_gateway_42_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_42 <= ~claimedDevs_43; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_43 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_44 | gateways_gateway_43_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_43 <= ~claimedDevs_44; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_44 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_45 | gateways_gateway_44_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_44 <= ~claimedDevs_45; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_45 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_46 | gateways_gateway_45_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_45 <= ~claimedDevs_46; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_46 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_47 | gateways_gateway_46_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_46 <= ~claimedDevs_47; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_47 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_48 | gateways_gateway_47_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_47 <= ~claimedDevs_48; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_48 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_49 | gateways_gateway_48_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_48 <= ~claimedDevs_49; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_49 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_50 | gateways_gateway_49_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_49 <= ~claimedDevs_50; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_50 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_51 | gateways_gateway_50_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_50 <= ~claimedDevs_51; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_51 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_52 | gateways_gateway_51_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_51 <= ~claimedDevs_52; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_52 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_53 | gateways_gateway_52_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_52 <= ~claimedDevs_53; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_53 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_54 | gateways_gateway_53_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_53 <= ~claimedDevs_54; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_54 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_55 | gateways_gateway_54_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_54 <= ~claimedDevs_55; // @[Plic.scala 251:31]
+    end
+    if (reset) begin // @[Plic.scala 168:22]
+      pending_55 <= 1'h0; // @[Plic.scala 168:22]
+    end else if (claimedDevs_56 | gateways_gateway_55_io_plic_valid) begin // @[Plic.scala 251:27]
+      pending_55 <= ~claimedDevs_56; // @[Plic.scala 251:31]
+    end
+    if (out_f_woready_74) begin // @[RegField.scala 74:88]
+      enables_0_0 <= out_back_io_deq_bits_data[7:1]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_75) begin // @[RegField.scala 74:88]
+      enables_0_1 <= out_back_io_deq_bits_data[15:8]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_76) begin // @[RegField.scala 74:88]
+      enables_0_2 <= out_back_io_deq_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_77) begin // @[RegField.scala 74:88]
+      enables_0_3 <= out_back_io_deq_bits_data[31:24]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_42) begin // @[RegField.scala 74:88]
+      enables_0_4 <= out_back_io_deq_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_43) begin // @[RegField.scala 74:88]
+      enables_0_5 <= out_back_io_deq_bits_data[15:8]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_44) begin // @[RegField.scala 74:88]
+      enables_0_6 <= out_back_io_deq_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_45) begin // @[RegField.scala 74:88]
+      enables_0_7 <= out_back_io_deq_bits_data[24]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_58) begin // @[RegField.scala 74:88]
+      enables_1_0 <= out_back_io_deq_bits_data[7:1]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_59) begin // @[RegField.scala 74:88]
+      enables_1_1 <= out_back_io_deq_bits_data[15:8]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_60) begin // @[RegField.scala 74:88]
+      enables_1_2 <= out_back_io_deq_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_61) begin // @[RegField.scala 74:88]
+      enables_1_3 <= out_back_io_deq_bits_data[31:24]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_126) begin // @[RegField.scala 74:88]
+      enables_1_4 <= out_back_io_deq_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_127) begin // @[RegField.scala 74:88]
+      enables_1_5 <= out_back_io_deq_bits_data[15:8]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_128) begin // @[RegField.scala 74:88]
+      enables_1_6 <= out_back_io_deq_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_129) begin // @[RegField.scala 74:88]
+      enables_1_7 <= out_back_io_deq_bits_data[24]; // @[RegField.scala 74:92]
+    end
+    maxDevs_0 <= fanin_io_dev; // @[Plic.scala 187:21]
+    maxDevs_1 <= fanin_1_io_dev; // @[Plic.scala 187:21]
+    bundleOut_0_0_REG <= fanin_io_max; // @[Plic.scala 188:41]
+    bundleOut_1_0_REG <= fanin_1_io_max; // @[Plic.scala 188:41]
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_4 == 2'h0) & ~reset) begin
+          $fatal; // @[Plic.scala 245:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(_T_4 == 2'h0)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Plic.scala:245 assert((claimer.asUInt & (claimer.asUInt - UInt(1))) === UInt(0)) // One-Hot\n"
+            ); // @[Plic.scala 245:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_69 == 2'h0) & _T_7) begin
+          $fatal; // @[Plic.scala 262:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_7 & ~(_T_69 == 2'h0)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Plic.scala:262 assert((completer.asUInt & (completer.asUInt - UInt(1))) === UInt(0)) // One-Hot\n"
+            ); // @[Plic.scala 262:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(completerDev == completerDev) & _T_7) begin
+          $fatal; // @[Plic.scala 292:19]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_7 & ~(completerDev == completerDev)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: completerDev should be consistent for all harts\n    at Plic.scala:292 assert(completerDev === data.extract(log2Ceil(nDevices+1)-1, 0),\n"
+            ); // @[Plic.scala 292:19]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(completerDev == completerDev) & _T_7) begin
+          $fatal; // @[Plic.scala 292:19]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_7 & ~(completerDev == completerDev)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: completerDev should be consistent for all harts\n    at Plic.scala:292 assert(completerDev === data.extract(log2Ceil(nDevices+1)-1, 0),\n"
+            ); // @[Plic.scala 292:19]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  priority_0 = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  priority_1 = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  priority_2 = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  priority_3 = _RAND_3[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  priority_4 = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  priority_5 = _RAND_5[2:0];
+  _RAND_6 = {1{`RANDOM}};
+  priority_6 = _RAND_6[2:0];
+  _RAND_7 = {1{`RANDOM}};
+  priority_7 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  priority_8 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  priority_9 = _RAND_9[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  priority_10 = _RAND_10[2:0];
+  _RAND_11 = {1{`RANDOM}};
+  priority_11 = _RAND_11[2:0];
+  _RAND_12 = {1{`RANDOM}};
+  priority_12 = _RAND_12[2:0];
+  _RAND_13 = {1{`RANDOM}};
+  priority_13 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  priority_14 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  priority_15 = _RAND_15[2:0];
+  _RAND_16 = {1{`RANDOM}};
+  priority_16 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  priority_17 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  priority_18 = _RAND_18[2:0];
+  _RAND_19 = {1{`RANDOM}};
+  priority_19 = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  priority_20 = _RAND_20[2:0];
+  _RAND_21 = {1{`RANDOM}};
+  priority_21 = _RAND_21[2:0];
+  _RAND_22 = {1{`RANDOM}};
+  priority_22 = _RAND_22[2:0];
+  _RAND_23 = {1{`RANDOM}};
+  priority_23 = _RAND_23[2:0];
+  _RAND_24 = {1{`RANDOM}};
+  priority_24 = _RAND_24[2:0];
+  _RAND_25 = {1{`RANDOM}};
+  priority_25 = _RAND_25[2:0];
+  _RAND_26 = {1{`RANDOM}};
+  priority_26 = _RAND_26[2:0];
+  _RAND_27 = {1{`RANDOM}};
+  priority_27 = _RAND_27[2:0];
+  _RAND_28 = {1{`RANDOM}};
+  priority_28 = _RAND_28[2:0];
+  _RAND_29 = {1{`RANDOM}};
+  priority_29 = _RAND_29[2:0];
+  _RAND_30 = {1{`RANDOM}};
+  priority_30 = _RAND_30[2:0];
+  _RAND_31 = {1{`RANDOM}};
+  priority_31 = _RAND_31[2:0];
+  _RAND_32 = {1{`RANDOM}};
+  priority_32 = _RAND_32[2:0];
+  _RAND_33 = {1{`RANDOM}};
+  priority_33 = _RAND_33[2:0];
+  _RAND_34 = {1{`RANDOM}};
+  priority_34 = _RAND_34[2:0];
+  _RAND_35 = {1{`RANDOM}};
+  priority_35 = _RAND_35[2:0];
+  _RAND_36 = {1{`RANDOM}};
+  priority_36 = _RAND_36[2:0];
+  _RAND_37 = {1{`RANDOM}};
+  priority_37 = _RAND_37[2:0];
+  _RAND_38 = {1{`RANDOM}};
+  priority_38 = _RAND_38[2:0];
+  _RAND_39 = {1{`RANDOM}};
+  priority_39 = _RAND_39[2:0];
+  _RAND_40 = {1{`RANDOM}};
+  priority_40 = _RAND_40[2:0];
+  _RAND_41 = {1{`RANDOM}};
+  priority_41 = _RAND_41[2:0];
+  _RAND_42 = {1{`RANDOM}};
+  priority_42 = _RAND_42[2:0];
+  _RAND_43 = {1{`RANDOM}};
+  priority_43 = _RAND_43[2:0];
+  _RAND_44 = {1{`RANDOM}};
+  priority_44 = _RAND_44[2:0];
+  _RAND_45 = {1{`RANDOM}};
+  priority_45 = _RAND_45[2:0];
+  _RAND_46 = {1{`RANDOM}};
+  priority_46 = _RAND_46[2:0];
+  _RAND_47 = {1{`RANDOM}};
+  priority_47 = _RAND_47[2:0];
+  _RAND_48 = {1{`RANDOM}};
+  priority_48 = _RAND_48[2:0];
+  _RAND_49 = {1{`RANDOM}};
+  priority_49 = _RAND_49[2:0];
+  _RAND_50 = {1{`RANDOM}};
+  priority_50 = _RAND_50[2:0];
+  _RAND_51 = {1{`RANDOM}};
+  priority_51 = _RAND_51[2:0];
+  _RAND_52 = {1{`RANDOM}};
+  priority_52 = _RAND_52[2:0];
+  _RAND_53 = {1{`RANDOM}};
+  priority_53 = _RAND_53[2:0];
+  _RAND_54 = {1{`RANDOM}};
+  priority_54 = _RAND_54[2:0];
+  _RAND_55 = {1{`RANDOM}};
+  priority_55 = _RAND_55[2:0];
+  _RAND_56 = {1{`RANDOM}};
+  threshold_0 = _RAND_56[2:0];
+  _RAND_57 = {1{`RANDOM}};
+  threshold_1 = _RAND_57[2:0];
+  _RAND_58 = {1{`RANDOM}};
+  pending_0 = _RAND_58[0:0];
+  _RAND_59 = {1{`RANDOM}};
+  pending_1 = _RAND_59[0:0];
+  _RAND_60 = {1{`RANDOM}};
+  pending_2 = _RAND_60[0:0];
+  _RAND_61 = {1{`RANDOM}};
+  pending_3 = _RAND_61[0:0];
+  _RAND_62 = {1{`RANDOM}};
+  pending_4 = _RAND_62[0:0];
+  _RAND_63 = {1{`RANDOM}};
+  pending_5 = _RAND_63[0:0];
+  _RAND_64 = {1{`RANDOM}};
+  pending_6 = _RAND_64[0:0];
+  _RAND_65 = {1{`RANDOM}};
+  pending_7 = _RAND_65[0:0];
+  _RAND_66 = {1{`RANDOM}};
+  pending_8 = _RAND_66[0:0];
+  _RAND_67 = {1{`RANDOM}};
+  pending_9 = _RAND_67[0:0];
+  _RAND_68 = {1{`RANDOM}};
+  pending_10 = _RAND_68[0:0];
+  _RAND_69 = {1{`RANDOM}};
+  pending_11 = _RAND_69[0:0];
+  _RAND_70 = {1{`RANDOM}};
+  pending_12 = _RAND_70[0:0];
+  _RAND_71 = {1{`RANDOM}};
+  pending_13 = _RAND_71[0:0];
+  _RAND_72 = {1{`RANDOM}};
+  pending_14 = _RAND_72[0:0];
+  _RAND_73 = {1{`RANDOM}};
+  pending_15 = _RAND_73[0:0];
+  _RAND_74 = {1{`RANDOM}};
+  pending_16 = _RAND_74[0:0];
+  _RAND_75 = {1{`RANDOM}};
+  pending_17 = _RAND_75[0:0];
+  _RAND_76 = {1{`RANDOM}};
+  pending_18 = _RAND_76[0:0];
+  _RAND_77 = {1{`RANDOM}};
+  pending_19 = _RAND_77[0:0];
+  _RAND_78 = {1{`RANDOM}};
+  pending_20 = _RAND_78[0:0];
+  _RAND_79 = {1{`RANDOM}};
+  pending_21 = _RAND_79[0:0];
+  _RAND_80 = {1{`RANDOM}};
+  pending_22 = _RAND_80[0:0];
+  _RAND_81 = {1{`RANDOM}};
+  pending_23 = _RAND_81[0:0];
+  _RAND_82 = {1{`RANDOM}};
+  pending_24 = _RAND_82[0:0];
+  _RAND_83 = {1{`RANDOM}};
+  pending_25 = _RAND_83[0:0];
+  _RAND_84 = {1{`RANDOM}};
+  pending_26 = _RAND_84[0:0];
+  _RAND_85 = {1{`RANDOM}};
+  pending_27 = _RAND_85[0:0];
+  _RAND_86 = {1{`RANDOM}};
+  pending_28 = _RAND_86[0:0];
+  _RAND_87 = {1{`RANDOM}};
+  pending_29 = _RAND_87[0:0];
+  _RAND_88 = {1{`RANDOM}};
+  pending_30 = _RAND_88[0:0];
+  _RAND_89 = {1{`RANDOM}};
+  pending_31 = _RAND_89[0:0];
+  _RAND_90 = {1{`RANDOM}};
+  pending_32 = _RAND_90[0:0];
+  _RAND_91 = {1{`RANDOM}};
+  pending_33 = _RAND_91[0:0];
+  _RAND_92 = {1{`RANDOM}};
+  pending_34 = _RAND_92[0:0];
+  _RAND_93 = {1{`RANDOM}};
+  pending_35 = _RAND_93[0:0];
+  _RAND_94 = {1{`RANDOM}};
+  pending_36 = _RAND_94[0:0];
+  _RAND_95 = {1{`RANDOM}};
+  pending_37 = _RAND_95[0:0];
+  _RAND_96 = {1{`RANDOM}};
+  pending_38 = _RAND_96[0:0];
+  _RAND_97 = {1{`RANDOM}};
+  pending_39 = _RAND_97[0:0];
+  _RAND_98 = {1{`RANDOM}};
+  pending_40 = _RAND_98[0:0];
+  _RAND_99 = {1{`RANDOM}};
+  pending_41 = _RAND_99[0:0];
+  _RAND_100 = {1{`RANDOM}};
+  pending_42 = _RAND_100[0:0];
+  _RAND_101 = {1{`RANDOM}};
+  pending_43 = _RAND_101[0:0];
+  _RAND_102 = {1{`RANDOM}};
+  pending_44 = _RAND_102[0:0];
+  _RAND_103 = {1{`RANDOM}};
+  pending_45 = _RAND_103[0:0];
+  _RAND_104 = {1{`RANDOM}};
+  pending_46 = _RAND_104[0:0];
+  _RAND_105 = {1{`RANDOM}};
+  pending_47 = _RAND_105[0:0];
+  _RAND_106 = {1{`RANDOM}};
+  pending_48 = _RAND_106[0:0];
+  _RAND_107 = {1{`RANDOM}};
+  pending_49 = _RAND_107[0:0];
+  _RAND_108 = {1{`RANDOM}};
+  pending_50 = _RAND_108[0:0];
+  _RAND_109 = {1{`RANDOM}};
+  pending_51 = _RAND_109[0:0];
+  _RAND_110 = {1{`RANDOM}};
+  pending_52 = _RAND_110[0:0];
+  _RAND_111 = {1{`RANDOM}};
+  pending_53 = _RAND_111[0:0];
+  _RAND_112 = {1{`RANDOM}};
+  pending_54 = _RAND_112[0:0];
+  _RAND_113 = {1{`RANDOM}};
+  pending_55 = _RAND_113[0:0];
+  _RAND_114 = {1{`RANDOM}};
+  enables_0_0 = _RAND_114[6:0];
+  _RAND_115 = {1{`RANDOM}};
+  enables_0_1 = _RAND_115[7:0];
+  _RAND_116 = {1{`RANDOM}};
+  enables_0_2 = _RAND_116[7:0];
+  _RAND_117 = {1{`RANDOM}};
+  enables_0_3 = _RAND_117[7:0];
+  _RAND_118 = {1{`RANDOM}};
+  enables_0_4 = _RAND_118[7:0];
+  _RAND_119 = {1{`RANDOM}};
+  enables_0_5 = _RAND_119[7:0];
+  _RAND_120 = {1{`RANDOM}};
+  enables_0_6 = _RAND_120[7:0];
+  _RAND_121 = {1{`RANDOM}};
+  enables_0_7 = _RAND_121[0:0];
+  _RAND_122 = {1{`RANDOM}};
+  enables_1_0 = _RAND_122[6:0];
+  _RAND_123 = {1{`RANDOM}};
+  enables_1_1 = _RAND_123[7:0];
+  _RAND_124 = {1{`RANDOM}};
+  enables_1_2 = _RAND_124[7:0];
+  _RAND_125 = {1{`RANDOM}};
+  enables_1_3 = _RAND_125[7:0];
+  _RAND_126 = {1{`RANDOM}};
+  enables_1_4 = _RAND_126[7:0];
+  _RAND_127 = {1{`RANDOM}};
+  enables_1_5 = _RAND_127[7:0];
+  _RAND_128 = {1{`RANDOM}};
+  enables_1_6 = _RAND_128[7:0];
+  _RAND_129 = {1{`RANDOM}};
+  enables_1_7 = _RAND_129[0:0];
+  _RAND_130 = {1{`RANDOM}};
+  maxDevs_0 = _RAND_130[5:0];
+  _RAND_131 = {1{`RANDOM}};
+  maxDevs_1 = _RAND_131[5:0];
+  _RAND_132 = {1{`RANDOM}};
+  bundleOut_0_0_REG = _RAND_132[2:0];
+  _RAND_133 = {1{`RANDOM}};
+  bundleOut_1_0_REG = _RAND_133[2:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain(
+  input         auto_plic_int_in_0,
+  input         auto_plic_int_in_1,
+  input         auto_plic_int_in_2,
+  input         auto_plic_int_in_3,
+  input         auto_plic_int_in_4,
+  input         auto_plic_int_in_5,
+  input         auto_plic_int_in_6,
+  input         auto_plic_int_in_7,
+  input         auto_plic_int_in_8,
+  input         auto_plic_int_in_9,
+  input         auto_plic_int_in_10,
+  input         auto_plic_int_in_11,
+  input         auto_plic_int_in_12,
+  input         auto_plic_int_in_13,
+  input         auto_plic_int_in_14,
+  input         auto_plic_int_in_15,
+  input         auto_plic_int_in_16,
+  input         auto_plic_int_in_17,
+  input         auto_plic_int_in_18,
+  input         auto_plic_int_in_19,
+  input         auto_plic_int_in_20,
+  input         auto_plic_int_in_21,
+  input         auto_plic_int_in_22,
+  input         auto_plic_int_in_23,
+  input         auto_plic_int_in_24,
+  input         auto_plic_int_in_25,
+  input         auto_plic_int_in_26,
+  input         auto_plic_int_in_27,
+  input         auto_plic_int_in_28,
+  input         auto_plic_int_in_29,
+  input         auto_plic_int_in_30,
+  input         auto_plic_int_in_31,
+  input         auto_plic_int_in_32,
+  input         auto_plic_int_in_33,
+  input         auto_plic_int_in_34,
+  input         auto_plic_int_in_35,
+  input         auto_plic_int_in_36,
+  input         auto_plic_int_in_37,
+  input         auto_plic_int_in_38,
+  input         auto_plic_int_in_39,
+  input         auto_plic_int_in_40,
+  input         auto_plic_int_in_41,
+  input         auto_plic_int_in_42,
+  input         auto_plic_int_in_43,
+  input         auto_plic_int_in_44,
+  input         auto_plic_int_in_45,
+  input         auto_plic_int_in_46,
+  input         auto_plic_int_in_47,
+  input         auto_plic_int_in_48,
+  input         auto_plic_int_in_49,
+  input         auto_plic_int_in_50,
+  input         auto_plic_int_in_51,
+  input         auto_plic_int_in_52,
+  input         auto_plic_int_in_53,
+  input         auto_plic_int_in_54,
+  input         auto_plic_int_in_55,
+  output        auto_plic_int_out_1_0,
+  output        auto_plic_int_out_0_0,
+  output        auto_plic_in_a_ready,
+  input         auto_plic_in_a_valid,
+  input  [2:0]  auto_plic_in_a_bits_opcode,
+  input  [2:0]  auto_plic_in_a_bits_param,
+  input  [1:0]  auto_plic_in_a_bits_size,
+  input  [6:0]  auto_plic_in_a_bits_source,
+  input  [27:0] auto_plic_in_a_bits_address,
+  input  [3:0]  auto_plic_in_a_bits_mask,
+  input  [31:0] auto_plic_in_a_bits_data,
+  input         auto_plic_in_a_bits_corrupt,
+  input         auto_plic_in_d_ready,
+  output        auto_plic_in_d_valid,
+  output [2:0]  auto_plic_in_d_bits_opcode,
+  output [1:0]  auto_plic_in_d_bits_size,
+  output [6:0]  auto_plic_in_d_bits_source,
+  output [31:0] auto_plic_in_d_bits_data,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  plic_clock; // @[Plic.scala 362:46]
+  wire  plic_reset; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_0; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_1; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_2; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_3; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_4; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_5; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_6; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_7; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_8; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_9; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_10; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_11; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_12; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_13; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_14; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_15; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_16; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_17; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_18; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_19; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_20; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_21; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_22; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_23; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_24; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_25; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_26; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_27; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_28; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_29; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_30; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_31; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_32; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_33; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_34; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_35; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_36; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_37; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_38; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_39; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_40; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_41; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_42; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_43; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_44; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_45; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_46; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_47; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_48; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_49; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_50; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_51; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_52; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_53; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_54; // @[Plic.scala 362:46]
+  wire  plic_auto_int_in_55; // @[Plic.scala 362:46]
+  wire  plic_auto_int_out_1_0; // @[Plic.scala 362:46]
+  wire  plic_auto_int_out_0_0; // @[Plic.scala 362:46]
+  wire  plic_auto_in_a_ready; // @[Plic.scala 362:46]
+  wire  plic_auto_in_a_valid; // @[Plic.scala 362:46]
+  wire [2:0] plic_auto_in_a_bits_opcode; // @[Plic.scala 362:46]
+  wire [2:0] plic_auto_in_a_bits_param; // @[Plic.scala 362:46]
+  wire [1:0] plic_auto_in_a_bits_size; // @[Plic.scala 362:46]
+  wire [6:0] plic_auto_in_a_bits_source; // @[Plic.scala 362:46]
+  wire [27:0] plic_auto_in_a_bits_address; // @[Plic.scala 362:46]
+  wire [3:0] plic_auto_in_a_bits_mask; // @[Plic.scala 362:46]
+  wire [31:0] plic_auto_in_a_bits_data; // @[Plic.scala 362:46]
+  wire  plic_auto_in_a_bits_corrupt; // @[Plic.scala 362:46]
+  wire  plic_auto_in_d_ready; // @[Plic.scala 362:46]
+  wire  plic_auto_in_d_valid; // @[Plic.scala 362:46]
+  wire [2:0] plic_auto_in_d_bits_opcode; // @[Plic.scala 362:46]
+  wire [1:0] plic_auto_in_d_bits_size; // @[Plic.scala 362:46]
+  wire [6:0] plic_auto_in_d_bits_source; // @[Plic.scala 362:46]
+  wire [31:0] plic_auto_in_d_bits_data; // @[Plic.scala 362:46]
+  TLPLIC plic ( // @[Plic.scala 362:46]
+    .clock(plic_clock),
+    .reset(plic_reset),
+    .auto_int_in_0(plic_auto_int_in_0),
+    .auto_int_in_1(plic_auto_int_in_1),
+    .auto_int_in_2(plic_auto_int_in_2),
+    .auto_int_in_3(plic_auto_int_in_3),
+    .auto_int_in_4(plic_auto_int_in_4),
+    .auto_int_in_5(plic_auto_int_in_5),
+    .auto_int_in_6(plic_auto_int_in_6),
+    .auto_int_in_7(plic_auto_int_in_7),
+    .auto_int_in_8(plic_auto_int_in_8),
+    .auto_int_in_9(plic_auto_int_in_9),
+    .auto_int_in_10(plic_auto_int_in_10),
+    .auto_int_in_11(plic_auto_int_in_11),
+    .auto_int_in_12(plic_auto_int_in_12),
+    .auto_int_in_13(plic_auto_int_in_13),
+    .auto_int_in_14(plic_auto_int_in_14),
+    .auto_int_in_15(plic_auto_int_in_15),
+    .auto_int_in_16(plic_auto_int_in_16),
+    .auto_int_in_17(plic_auto_int_in_17),
+    .auto_int_in_18(plic_auto_int_in_18),
+    .auto_int_in_19(plic_auto_int_in_19),
+    .auto_int_in_20(plic_auto_int_in_20),
+    .auto_int_in_21(plic_auto_int_in_21),
+    .auto_int_in_22(plic_auto_int_in_22),
+    .auto_int_in_23(plic_auto_int_in_23),
+    .auto_int_in_24(plic_auto_int_in_24),
+    .auto_int_in_25(plic_auto_int_in_25),
+    .auto_int_in_26(plic_auto_int_in_26),
+    .auto_int_in_27(plic_auto_int_in_27),
+    .auto_int_in_28(plic_auto_int_in_28),
+    .auto_int_in_29(plic_auto_int_in_29),
+    .auto_int_in_30(plic_auto_int_in_30),
+    .auto_int_in_31(plic_auto_int_in_31),
+    .auto_int_in_32(plic_auto_int_in_32),
+    .auto_int_in_33(plic_auto_int_in_33),
+    .auto_int_in_34(plic_auto_int_in_34),
+    .auto_int_in_35(plic_auto_int_in_35),
+    .auto_int_in_36(plic_auto_int_in_36),
+    .auto_int_in_37(plic_auto_int_in_37),
+    .auto_int_in_38(plic_auto_int_in_38),
+    .auto_int_in_39(plic_auto_int_in_39),
+    .auto_int_in_40(plic_auto_int_in_40),
+    .auto_int_in_41(plic_auto_int_in_41),
+    .auto_int_in_42(plic_auto_int_in_42),
+    .auto_int_in_43(plic_auto_int_in_43),
+    .auto_int_in_44(plic_auto_int_in_44),
+    .auto_int_in_45(plic_auto_int_in_45),
+    .auto_int_in_46(plic_auto_int_in_46),
+    .auto_int_in_47(plic_auto_int_in_47),
+    .auto_int_in_48(plic_auto_int_in_48),
+    .auto_int_in_49(plic_auto_int_in_49),
+    .auto_int_in_50(plic_auto_int_in_50),
+    .auto_int_in_51(plic_auto_int_in_51),
+    .auto_int_in_52(plic_auto_int_in_52),
+    .auto_int_in_53(plic_auto_int_in_53),
+    .auto_int_in_54(plic_auto_int_in_54),
+    .auto_int_in_55(plic_auto_int_in_55),
+    .auto_int_out_1_0(plic_auto_int_out_1_0),
+    .auto_int_out_0_0(plic_auto_int_out_0_0),
+    .auto_in_a_ready(plic_auto_in_a_ready),
+    .auto_in_a_valid(plic_auto_in_a_valid),
+    .auto_in_a_bits_opcode(plic_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(plic_auto_in_a_bits_param),
+    .auto_in_a_bits_size(plic_auto_in_a_bits_size),
+    .auto_in_a_bits_source(plic_auto_in_a_bits_source),
+    .auto_in_a_bits_address(plic_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(plic_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(plic_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(plic_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(plic_auto_in_d_ready),
+    .auto_in_d_valid(plic_auto_in_d_valid),
+    .auto_in_d_bits_opcode(plic_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(plic_auto_in_d_bits_size),
+    .auto_in_d_bits_source(plic_auto_in_d_bits_source),
+    .auto_in_d_bits_data(plic_auto_in_d_bits_data)
+  );
+  assign auto_plic_int_out_1_0 = plic_auto_int_out_1_0; // @[LazyModule.scala 311:12]
+  assign auto_plic_int_out_0_0 = plic_auto_int_out_0_0; // @[LazyModule.scala 311:12]
+  assign auto_plic_in_a_ready = plic_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_plic_in_d_valid = plic_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_plic_in_d_bits_opcode = plic_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_plic_in_d_bits_size = plic_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_plic_in_d_bits_source = plic_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_plic_in_d_bits_data = plic_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign plic_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign plic_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign plic_auto_int_in_0 = auto_plic_int_in_0; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_1 = auto_plic_int_in_1; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_2 = auto_plic_int_in_2; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_3 = auto_plic_int_in_3; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_4 = auto_plic_int_in_4; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_5 = auto_plic_int_in_5; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_6 = auto_plic_int_in_6; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_7 = auto_plic_int_in_7; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_8 = auto_plic_int_in_8; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_9 = auto_plic_int_in_9; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_10 = auto_plic_int_in_10; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_11 = auto_plic_int_in_11; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_12 = auto_plic_int_in_12; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_13 = auto_plic_int_in_13; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_14 = auto_plic_int_in_14; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_15 = auto_plic_int_in_15; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_16 = auto_plic_int_in_16; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_17 = auto_plic_int_in_17; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_18 = auto_plic_int_in_18; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_19 = auto_plic_int_in_19; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_20 = auto_plic_int_in_20; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_21 = auto_plic_int_in_21; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_22 = auto_plic_int_in_22; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_23 = auto_plic_int_in_23; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_24 = auto_plic_int_in_24; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_25 = auto_plic_int_in_25; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_26 = auto_plic_int_in_26; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_27 = auto_plic_int_in_27; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_28 = auto_plic_int_in_28; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_29 = auto_plic_int_in_29; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_30 = auto_plic_int_in_30; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_31 = auto_plic_int_in_31; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_32 = auto_plic_int_in_32; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_33 = auto_plic_int_in_33; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_34 = auto_plic_int_in_34; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_35 = auto_plic_int_in_35; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_36 = auto_plic_int_in_36; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_37 = auto_plic_int_in_37; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_38 = auto_plic_int_in_38; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_39 = auto_plic_int_in_39; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_40 = auto_plic_int_in_40; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_41 = auto_plic_int_in_41; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_42 = auto_plic_int_in_42; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_43 = auto_plic_int_in_43; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_44 = auto_plic_int_in_44; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_45 = auto_plic_int_in_45; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_46 = auto_plic_int_in_46; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_47 = auto_plic_int_in_47; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_48 = auto_plic_int_in_48; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_49 = auto_plic_int_in_49; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_50 = auto_plic_int_in_50; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_51 = auto_plic_int_in_51; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_52 = auto_plic_int_in_52; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_53 = auto_plic_int_in_53; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_54 = auto_plic_int_in_54; // @[LazyModule.scala 309:16]
+  assign plic_auto_int_in_55 = auto_plic_int_in_55; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_valid = auto_plic_in_a_valid; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_bits_opcode = auto_plic_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_bits_param = auto_plic_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_bits_size = auto_plic_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_bits_source = auto_plic_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_bits_address = auto_plic_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_bits_mask = auto_plic_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_bits_data = auto_plic_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_a_bits_corrupt = auto_plic_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign plic_auto_in_d_ready = auto_plic_in_d_ready; // @[LazyModule.scala 309:16]
+endmodule
+module TLMonitor_47(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [25:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [25:0] _GEN_71 = {{24'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [25:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 26'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [25:0] _T_33 = io_in_a_bits_address ^ 26'h2000000; // @[Parameters.scala 137:31]
+  wire [26:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [26:0] _T_36 = $signed(_T_34) & -27'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 27'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [25:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CLINT.scala:111:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CLINT.scala:111:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[25:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module CLINT(
+  input         clock,
+  input         reset,
+  output        auto_int_out_0,
+  output        auto_int_out_1,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [1:0]  auto_in_a_bits_size,
+  input  [6:0]  auto_in_a_bits_source,
+  input  [25:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_size,
+  output [6:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         io_rtcTick
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [63:0] _RAND_0;
+  reg [63:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [25:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  reg [63:0] time_; // @[CLINT.scala 69:23]
+  wire [63:0] _time_T_1 = time_ + 64'h1; // @[CLINT.scala 70:38]
+  reg [63:0] timecmp_0; // @[CLINT.scala 73:41]
+  reg  ipi_0; // @[CLINT.scala 74:41]
+  wire [7:0] oldBytes__0 = timecmp_0[7:0]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes__1 = timecmp_0[15:8]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes__2 = timecmp_0[23:16]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes__3 = timecmp_0[31:24]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes__4 = timecmp_0[39:32]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes__5 = timecmp_0[47:40]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes__6 = timecmp_0[55:48]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes__7 = timecmp_0[63:56]; // @[RegField.scala 151:53]
+  wire  in_bits_read = auto_in_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [13:0] in_bits_index = auto_in_a_bits_address[15:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [2:0] out_iindex = {in_bits_index[13],in_bits_index[12],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [13:0] out_findex = in_bits_index & 14'hffe; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_6 = out_findex == 14'hffe; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_2 = out_findex == 14'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backSel_T = 8'h1 << out_iindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_2 = _out_backSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_14 = auto_in_a_valid & auto_in_d_ready & ~in_bits_read & out_backSel_2 & out_findex == 14'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backMask_T_11 = auto_in_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = auto_in_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_7 = auto_in_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_5 = auto_in_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_backMask = {_out_backMask_T_11,_out_backMask_T_9,_out_backMask_T_7,_out_backMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_womask_14 = &out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_14 = out_woready_14 & out_womask_14; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_15 = &out_backMask[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_15 = out_woready_14 & out_womask_15; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_16 = &out_backMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_16 = out_woready_14 & out_womask_16; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_17 = &out_backMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_17 = out_woready_14 & out_womask_17; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_3 = _out_backSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_2 = auto_in_a_valid & auto_in_d_ready & ~in_bits_read & out_backSel_3 & out_findex == 14'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_woready_2 & out_womask_14; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_3 = out_woready_2 & out_womask_15; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_4 = out_woready_2 & out_womask_16; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_5 = out_woready_2 & out_womask_17; // @[RegisterRouter.scala 83:24]
+  wire [7:0] newBytes__1 = out_f_woready_15 ? auto_in_a_bits_data[15:8] : oldBytes__1; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__0 = out_f_woready_14 ? auto_in_a_bits_data[7:0] : oldBytes__0; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__3 = out_f_woready_17 ? auto_in_a_bits_data[31:24] : oldBytes__3; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__2 = out_f_woready_16 ? auto_in_a_bits_data[23:16] : oldBytes__2; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__5 = out_f_woready_3 ? auto_in_a_bits_data[15:8] : oldBytes__5; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__4 = out_f_woready_2 ? auto_in_a_bits_data[7:0] : oldBytes__4; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__7 = out_f_woready_5 ? auto_in_a_bits_data[31:24] : oldBytes__7; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__6 = out_f_woready_4 ? auto_in_a_bits_data[23:16] : oldBytes__6; // @[RegField.scala 158:{20,33}]
+  wire [63:0] _timecmp_0_T = {newBytes__7,newBytes__6,newBytes__5,newBytes__4,newBytes__3,newBytes__2,newBytes__1,
+    newBytes__0}; // @[RegField.scala 154:52]
+  wire [7:0] oldBytes_1_0 = time_[7:0]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_1_1 = time_[15:8]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_1_2 = time_[23:16]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_1_3 = time_[31:24]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_1_4 = time_[39:32]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_1_5 = time_[47:40]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_1_6 = time_[55:48]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_1_7 = time_[63:56]; // @[RegField.scala 151:53]
+  wire  out_backSel_4 = _out_backSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_6 = auto_in_a_valid & auto_in_d_ready & ~in_bits_read & out_backSel_4 & out_findex == 14'hffe; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_6 = out_woready_6 & out_womask_14; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_7 = out_woready_6 & out_womask_15; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_8 = out_woready_6 & out_womask_16; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_9 = out_woready_6 & out_womask_17; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_5 = _out_backSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_10 = auto_in_a_valid & auto_in_d_ready & ~in_bits_read & out_backSel_5 & out_findex == 14'hffe; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_10 = out_woready_10 & out_womask_14; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_11 = out_woready_10 & out_womask_15; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_12 = out_woready_10 & out_womask_16; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_13 = out_woready_10 & out_womask_17; // @[RegisterRouter.scala 83:24]
+  wire [7:0] newBytes_1_1 = out_f_woready_7 ? auto_in_a_bits_data[15:8] : oldBytes_1_1; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_0 = out_f_woready_6 ? auto_in_a_bits_data[7:0] : oldBytes_1_0; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_3 = out_f_woready_9 ? auto_in_a_bits_data[31:24] : oldBytes_1_3; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_2 = out_f_woready_8 ? auto_in_a_bits_data[23:16] : oldBytes_1_2; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_5 = out_f_woready_11 ? auto_in_a_bits_data[15:8] : oldBytes_1_5; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_4 = out_f_woready_10 ? auto_in_a_bits_data[7:0] : oldBytes_1_4; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_7 = out_f_woready_13 ? auto_in_a_bits_data[31:24] : oldBytes_1_7; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_6 = out_f_woready_12 ? auto_in_a_bits_data[23:16] : oldBytes_1_6; // @[RegField.scala 158:{20,33}]
+  wire [63:0] _time_T_2 = {newBytes_1_7,newBytes_1_6,newBytes_1_5,newBytes_1_4,newBytes_1_3,newBytes_1_2,newBytes_1_1,
+    newBytes_1_0}; // @[RegField.scala 154:52]
+  wire  out_wimask = &out_backMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_0 = _out_backSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = auto_in_a_valid & auto_in_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 14'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend = {1'h0,ipi_0}; // @[Cat.scala 31:58]
+  wire [31:0] _out_T_28 = {{30'd0}, out_prepend}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_3 = {oldBytes__7,oldBytes__6,oldBytes__5,oldBytes__4}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_6 = {oldBytes_1_3,oldBytes_1_2,oldBytes_1_1,oldBytes_1_0}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_9 = {oldBytes_1_7,oldBytes_1_6,oldBytes_1_5,oldBytes_1_4}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_12 = {oldBytes__3,oldBytes__2,oldBytes__1,oldBytes__0}; // @[Cat.scala 31:58]
+  wire  _GEN_54 = 3'h2 == out_iindex ? _out_T_2 : 3'h1 == out_iindex | _out_T_2; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_55 = 3'h3 == out_iindex ? _out_T_2 : _GEN_54; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_56 = 3'h4 == out_iindex ? _out_T_6 : _GEN_55; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_57 = 3'h5 == out_iindex ? _out_T_6 : _GEN_56; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_59 = 3'h7 == out_iindex | (3'h6 == out_iindex | _GEN_57); // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_61 = 3'h1 == out_iindex ? 32'h0 : _out_T_28; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_62 = 3'h2 == out_iindex ? out_prepend_12 : _GEN_61; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_63 = 3'h3 == out_iindex ? out_prepend_3 : _GEN_62; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_64 = 3'h4 == out_iindex ? out_prepend_6 : _GEN_63; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_65 = 3'h5 == out_iindex ? out_prepend_9 : _GEN_64; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_66 = 3'h6 == out_iindex ? 32'h0 : _GEN_65; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_67 = 3'h7 == out_iindex ? 32'h0 : _GEN_66; // @[MuxLiteral.scala 48:{10,10}]
+  TLMonitor_47 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_int_out_0 = ipi_0; // @[CLINT.scala 78:37]
+  assign auto_int_out_1 = time_ >= timecmp_0; // @[CLINT.scala 79:43]
+  assign auto_in_a_ready = auto_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign auto_in_d_valid = auto_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign auto_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign auto_in_d_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_in_d_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_in_d_bits_data = _GEN_59 ? _GEN_67 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  always @(posedge clock) begin
+    if (reset) begin // @[CLINT.scala 69:23]
+      time_ <= 64'h0; // @[CLINT.scala 69:23]
+    end else if (out_f_woready_6 | out_f_woready_7 | out_f_woready_8 | out_f_woready_9 | out_f_woready_10 |
+      out_f_woready_11 | out_f_woready_12 | out_f_woready_13) begin // @[RegField.scala 154:34]
+      time_ <= _time_T_2; // @[RegField.scala 154:40]
+    end else if (io_rtcTick) begin // @[CLINT.scala 70:23]
+      time_ <= _time_T_1; // @[CLINT.scala 70:30]
+    end
+    if (out_f_woready_14 | out_f_woready_15 | out_f_woready_16 | out_f_woready_17 | out_f_woready_2 | out_f_woready_3 |
+      out_f_woready_4 | out_f_woready_5) begin // @[RegField.scala 154:34]
+      timecmp_0 <= _timecmp_0_T; // @[RegField.scala 154:40]
+    end
+    if (reset) begin // @[CLINT.scala 74:41]
+      ipi_0 <= 1'h0; // @[CLINT.scala 74:41]
+    end else if (out_f_wivalid) begin // @[RegField.scala 74:88]
+      ipi_0 <= auto_in_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {2{`RANDOM}};
+  time_ = _RAND_0[63:0];
+  _RAND_1 = {2{`RANDOM}};
+  timecmp_0 = _RAND_1[63:0];
+  _RAND_2 = {1{`RANDOM}};
+  ipi_0 = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_48(
+  input        clock,
+  input        reset,
+  input        io_in_a_ready,
+  input        io_in_a_valid,
+  input  [2:0] io_in_a_bits_opcode,
+  input  [8:0] io_in_a_bits_address,
+  input        io_in_d_ready,
+  input        io_in_d_valid,
+  input  [2:0] io_in_d_bits_opcode,
+  input  [1:0] io_in_d_bits_param,
+  input  [1:0] io_in_d_bits_size,
+  input        io_in_d_bits_sink,
+  input        io_in_d_bits_denied,
+  input        io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [8:0] _is_aligned_T = io_in_a_bits_address & 9'h3; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 9'h0; // @[Edges.scala 20:24]
+  wire [9:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_15 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [9:0] _T_23 = $signed(_T_7) & 10'sh200; // @[Parameters.scala 137:52]
+  wire  _T_24 = $signed(_T_23) == 10'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_127 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_167 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_201 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_266 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_296 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_330 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_334 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_338 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_342 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_346 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_350 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_354 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_365 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_369 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_382 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_402 = _T_350 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_411 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_428 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_446 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [8:0] address; // @[Monitor.scala 388:22]
+  wire  _T_476 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_477 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_493 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_500 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_501 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_505 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_509 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_517 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_521 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg  inflight; // @[Monitor.scala 611:27]
+  reg [3:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [3:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_71 = {{12'd0}, inflight_opcodes}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_71 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [15:0] _GEN_73 = {{12'd0}, inflight_sizes}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_527 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire  _T_530 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [18:0] _a_opcodes_set_T_1 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? 3'h5 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [17:0] _a_sizes_set_T_1 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire  _T_534 = ~inflight; // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = a_first_done & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [17:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 18'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_538 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_540 = ~_T_334; // @[Monitor.scala 671:74]
+  wire  _T_541 = io_in_d_valid & d_first_1 & ~_T_334; // @[Monitor.scala 671:71]
+  wire [30:0] _d_opcodes_clr_T_5 = {{15'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1:0] _GEN_22 = d_first_done & d_first_1 & _T_540 ? 2'h1 : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = d_first_done & d_first_1 & _T_540 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _T_553 = inflight | _T_527; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_558 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_559 = io_in_d_bits_opcode == _GEN_32 | _T_558; // @[Monitor.scala 685:77]
+  wire  _T_563 = 2'h2 == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_570 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_571 = io_in_d_bits_opcode == _GEN_48 | _T_570; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_75 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_575 = _GEN_75 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_585 = _T_538 & a_first_1 & io_in_a_valid & _T_540; // @[Monitor.scala 694:116]
+  wire  _T_587 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  a_set = _GEN_16[0];
+  wire  d_clr = _GEN_22[0];
+  wire [3:0] a_opcodes_set = _GEN_19[3:0];
+  wire [3:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [3:0] d_opcodes_clr = _GEN_23[3:0];
+  wire [3:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [3:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [3:0] a_sizes_set = _GEN_20[3:0];
+  wire [3:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [3:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_596 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [3:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [15:0] _GEN_78 = {{12'd0}, inflight_sizes_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_78 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_622 = io_in_d_valid & d_first_2 & _T_334; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_68 = d_first_done & d_first_2 & _T_334 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 785:21]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_640 = _GEN_75 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [3:0] d_opcodes_clr_1 = _GEN_68[3:0];
+  wire [3:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [3:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 1'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= (inflight | a_set) & ~d_clr; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 4'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 4'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 4'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_15 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_69 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_69 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_69 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_69 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_69 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_69 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_69 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_69 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_24 & (io_in_a_valid & _T_127 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_127 & ~reset & ~_T_24) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_127 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_127 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_24 & (io_in_a_valid & _T_167 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_167 & ~reset & ~_T_24) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_167 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_167 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_201 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_201 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_201 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_201 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_266 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_266 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_266 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_266 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_296 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_296 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_296 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_296 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_330 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_330) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_338 & (io_in_d_valid & _T_334 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_334 & _T_2 & ~_T_338) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_342 & (io_in_d_valid & _T_334 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_334 & _T_2 & ~_T_342) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_346 & (io_in_d_valid & _T_334 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_334 & _T_2 & ~_T_346) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_350 & (io_in_d_valid & _T_334 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_334 & _T_2 & ~_T_350) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_354 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_354 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_338 & (io_in_d_valid & _T_354 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_354 & _T_2 & ~_T_338) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_365 & (io_in_d_valid & _T_354 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_354 & _T_2 & ~_T_365) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_369 & (io_in_d_valid & _T_354 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_354 & _T_2 & ~_T_369) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_346 & (io_in_d_valid & _T_354 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_354 & _T_2 & ~_T_346) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_382 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_382 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_338 & (io_in_d_valid & _T_382 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_382 & _T_2 & ~_T_338) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_365 & (io_in_d_valid & _T_382 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_382 & _T_2 & ~_T_365) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_369 & (io_in_d_valid & _T_382 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_382 & _T_2 & ~_T_369) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_382 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_382 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_342 & (io_in_d_valid & _T_411 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_411 & _T_2 & ~_T_342) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_346 & (io_in_d_valid & _T_411 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_411 & _T_2 & ~_T_346) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_342 & (io_in_d_valid & _T_428 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_428 & _T_2 & ~_T_342) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_402 & (io_in_d_valid & _T_428 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_428 & _T_2 & ~_T_402) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_342 & (io_in_d_valid & _T_446 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2 & ~_T_342) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_346 & (io_in_d_valid & _T_446 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_446 & _T_2 & ~_T_346) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_477 & (_T_476 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_476 & ~reset & ~_T_477) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_493 & (_T_476 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_476 & ~reset & ~_T_493) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_501 & (_T_500 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_500 & _T_2 & ~_T_501) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_505 & (_T_500 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_500 & _T_2 & ~_T_505) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_509 & (_T_500 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_500 & _T_2 & ~_T_509) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_517 & (_T_500 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_500 & _T_2 & ~_T_517) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_521 & (_T_500 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_500 & _T_2 & ~_T_521) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_534 & (_T_530 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_530 & ~reset & ~_T_534) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_541 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_541 & _T_2 & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_559 & (_T_541 & _T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_541 & _T_527 & _T_2 & ~_T_559) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_563 & (_T_541 & _T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_541 & _T_527 & _T_2 & ~_T_563) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_571 & (_T_541 & ~_T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_541 & ~_T_527 & _T_2 & ~_T_571) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_575 & (_T_541 & ~_T_527 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_541 & ~_T_527 & _T_2 & ~_T_575) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_587 & (_T_585 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_585 & _T_2 & ~_T_587) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_596 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_596) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Debug.scala:628:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_622 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_640 & (_T_622 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_622 & _T_2 & ~_T_640) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:628:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  address = _RAND_2[8:0];
+  _RAND_3 = {1{`RANDOM}};
+  d_first_counter = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  opcode_1 = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  param_1 = _RAND_5[1:0];
+  _RAND_6 = {1{`RANDOM}};
+  size_1 = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  sink = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  denied = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[3:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[3:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  watchdog = _RAND_14[31:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_15[3:0];
+  _RAND_16 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_16[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLXbar_9(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [8:0]  auto_in_a_bits_address,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  input         auto_out_1_a_ready,
+  output        auto_out_1_a_valid,
+  output [2:0]  auto_out_1_a_bits_opcode,
+  output [6:0]  auto_out_1_a_bits_address,
+  output [31:0] auto_out_1_a_bits_data,
+  output        auto_out_1_d_ready,
+  input         auto_out_1_d_valid,
+  input  [2:0]  auto_out_1_d_bits_opcode,
+  input  [31:0] auto_out_1_d_bits_data,
+  input         auto_out_0_a_ready,
+  output        auto_out_0_a_valid,
+  output [2:0]  auto_out_0_a_bits_opcode,
+  output [8:0]  auto_out_0_a_bits_address,
+  output [31:0] auto_out_0_a_bits_data,
+  output        auto_out_0_d_ready,
+  input         auto_out_0_d_valid,
+  input  [2:0]  auto_out_0_d_bits_opcode,
+  input  [1:0]  auto_out_0_d_bits_param,
+  input  [1:0]  auto_out_0_d_bits_size,
+  input         auto_out_0_d_bits_sink,
+  input         auto_out_0_d_bits_denied,
+  input  [31:0] auto_out_0_d_bits_data,
+  input         auto_out_0_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [8:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire [9:0] _requestAIO_T_1 = {1'b0,$signed(auto_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire [9:0] _requestAIO_T_3 = $signed(_requestAIO_T_1) & 10'sh1c0; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_4 = $signed(_requestAIO_T_3) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _requestAIO_T_5 = auto_in_a_bits_address ^ 9'h44; // @[Parameters.scala 137:31]
+  wire [9:0] _requestAIO_T_6 = {1'b0,$signed(_requestAIO_T_5)}; // @[Parameters.scala 137:49]
+  wire [9:0] _requestAIO_T_8 = $signed(_requestAIO_T_6) & 10'sh1f4; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_9 = $signed(_requestAIO_T_8) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _requestAIO_T_10 = auto_in_a_bits_address ^ 9'h58; // @[Parameters.scala 137:31]
+  wire [9:0] _requestAIO_T_11 = {1'b0,$signed(_requestAIO_T_10)}; // @[Parameters.scala 137:49]
+  wire [9:0] _requestAIO_T_13 = $signed(_requestAIO_T_11) & 10'sh1f8; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_14 = $signed(_requestAIO_T_13) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _requestAIO_T_15 = auto_in_a_bits_address ^ 9'h60; // @[Parameters.scala 137:31]
+  wire [9:0] _requestAIO_T_16 = {1'b0,$signed(_requestAIO_T_15)}; // @[Parameters.scala 137:49]
+  wire [9:0] _requestAIO_T_18 = $signed(_requestAIO_T_16) & 10'sh1e0; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_19 = $signed(_requestAIO_T_18) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _requestAIO_T_20 = auto_in_a_bits_address ^ 9'h80; // @[Parameters.scala 137:31]
+  wire [9:0] _requestAIO_T_21 = {1'b0,$signed(_requestAIO_T_20)}; // @[Parameters.scala 137:49]
+  wire [9:0] _requestAIO_T_23 = $signed(_requestAIO_T_21) & 10'sh180; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_24 = $signed(_requestAIO_T_23) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _requestAIO_T_25 = auto_in_a_bits_address ^ 9'h100; // @[Parameters.scala 137:31]
+  wire [9:0] _requestAIO_T_26 = {1'b0,$signed(_requestAIO_T_25)}; // @[Parameters.scala 137:49]
+  wire [9:0] _requestAIO_T_28 = $signed(_requestAIO_T_26) & 10'sh100; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_29 = $signed(_requestAIO_T_28) == 10'sh0; // @[Parameters.scala 137:67]
+  wire  requestAIO_0_0 = _requestAIO_T_4 | _requestAIO_T_9 | _requestAIO_T_14 | _requestAIO_T_19 | _requestAIO_T_24 |
+    _requestAIO_T_29; // @[Xbar.scala 363:92]
+  wire [8:0] _requestAIO_T_35 = auto_in_a_bits_address ^ 9'h40; // @[Parameters.scala 137:31]
+  wire [9:0] _requestAIO_T_36 = {1'b0,$signed(_requestAIO_T_35)}; // @[Parameters.scala 137:49]
+  wire [9:0] _requestAIO_T_38 = $signed(_requestAIO_T_36) & 10'sh1f4; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_39 = $signed(_requestAIO_T_38) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _requestAIO_T_40 = auto_in_a_bits_address ^ 9'h50; // @[Parameters.scala 137:31]
+  wire [9:0] _requestAIO_T_41 = {1'b0,$signed(_requestAIO_T_40)}; // @[Parameters.scala 137:49]
+  wire [9:0] _requestAIO_T_43 = $signed(_requestAIO_T_41) & 10'sh1f8; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_44 = $signed(_requestAIO_T_43) == 10'sh0; // @[Parameters.scala 137:67]
+  wire  requestAIO_0_1 = _requestAIO_T_39 | _requestAIO_T_44; // @[Xbar.scala 363:92]
+  reg  beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = ~beatsLeft; // @[Arbiter.scala 88:28]
+  wire  latch = idle & auto_in_d_ready; // @[Arbiter.scala 89:24]
+  wire [1:0] readys_valid = {auto_out_1_d_valid,auto_out_0_d_valid}; // @[Cat.scala 31:58]
+  wire  _readys_T_3 = ~reset; // @[Arbiter.scala 22:12]
+  reg [1:0] readys_mask; // @[Arbiter.scala 23:23]
+  wire [1:0] _readys_filter_T = ~readys_mask; // @[Arbiter.scala 24:30]
+  wire [1:0] _readys_filter_T_1 = readys_valid & _readys_filter_T; // @[Arbiter.scala 24:28]
+  wire [3:0] readys_filter = {_readys_filter_T_1,auto_out_1_d_valid,auto_out_0_d_valid}; // @[Cat.scala 31:58]
+  wire [3:0] _GEN_1 = {{1'd0}, readys_filter[3:1]}; // @[package.scala 253:43]
+  wire [3:0] _readys_unready_T_1 = readys_filter | _GEN_1; // @[package.scala 253:43]
+  wire [3:0] _readys_unready_T_4 = {readys_mask, 2'h0}; // @[Arbiter.scala 25:66]
+  wire [3:0] _GEN_2 = {{1'd0}, _readys_unready_T_1[3:1]}; // @[Arbiter.scala 25:58]
+  wire [3:0] readys_unready = _GEN_2 | _readys_unready_T_4; // @[Arbiter.scala 25:58]
+  wire [1:0] _readys_readys_T_2 = readys_unready[3:2] & readys_unready[1:0]; // @[Arbiter.scala 26:39]
+  wire [1:0] readys_readys = ~_readys_readys_T_2; // @[Arbiter.scala 26:18]
+  wire [1:0] _readys_mask_T = readys_readys & readys_valid; // @[Arbiter.scala 28:29]
+  wire [2:0] _readys_mask_T_1 = {_readys_mask_T, 1'h0}; // @[package.scala 244:48]
+  wire [1:0] _readys_mask_T_3 = _readys_mask_T | _readys_mask_T_1[1:0]; // @[package.scala 244:43]
+  wire  readys_0 = readys_readys[0]; // @[Arbiter.scala 95:86]
+  wire  readys_1 = readys_readys[1]; // @[Arbiter.scala 95:86]
+  wire  earlyWinner_0 = readys_0 & auto_out_0_d_valid; // @[Arbiter.scala 97:79]
+  wire  earlyWinner_1 = readys_1 & auto_out_1_d_valid; // @[Arbiter.scala 97:79]
+  wire  _prefixOR_T = earlyWinner_0 | earlyWinner_1; // @[Arbiter.scala 104:53]
+  wire  _T_10 = auto_out_0_d_valid | auto_out_1_d_valid; // @[Arbiter.scala 107:36]
+  wire  _T_11 = ~(auto_out_0_d_valid | auto_out_1_d_valid); // @[Arbiter.scala 107:15]
+  reg  state_0; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_0 = idle ? earlyWinner_0 : state_0; // @[Arbiter.scala 117:30]
+  reg  state_1; // @[Arbiter.scala 116:26]
+  wire  muxStateEarly_1 = idle ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  wire  _sink_ACancel_earlyValid_T_3 = state_0 & auto_out_0_d_valid | state_1 & auto_out_1_d_valid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_5_earlyValid = idle ? _T_10 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_in_d_ready & sink_ACancel_5_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire  allowed_0 = idle ? readys_0 : state_0; // @[Arbiter.scala 121:24]
+  wire  allowed_1 = idle ? readys_1 : state_1; // @[Arbiter.scala 121:24]
+  wire [31:0] _T_27 = muxStateEarly_0 ? auto_out_0_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_28 = muxStateEarly_1 ? auto_out_1_d_bits_data : 32'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_39 = muxStateEarly_0 ? auto_out_0_d_bits_size : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_40 = muxStateEarly_1 ? 2'h2 : 2'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_45 = muxStateEarly_0 ? auto_out_0_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_46 = muxStateEarly_1 ? auto_out_1_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  TLMonitor_48 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  assign auto_in_a_ready = requestAIO_0_0 & auto_out_0_a_ready | requestAIO_0_1 & auto_out_1_a_ready; // @[Mux.scala 27:73]
+  assign auto_in_d_valid = idle ? _T_10 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_in_d_bits_denied = muxStateEarly_0 & auto_out_0_d_bits_denied; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_data = _T_27 | _T_28; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_corrupt = muxStateEarly_0 & auto_out_0_d_bits_corrupt; // @[Mux.scala 27:73]
+  assign auto_out_1_a_valid = auto_in_a_valid & requestAIO_0_1; // @[Xbar.scala 428:50]
+  assign auto_out_1_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_address = auto_in_a_bits_address[6:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  assign auto_out_1_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_d_ready = auto_in_d_ready & allowed_1; // @[Arbiter.scala 123:31]
+  assign auto_out_0_a_valid = auto_in_a_valid & requestAIO_0_0; // @[Xbar.scala 428:50]
+  assign auto_out_0_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_d_ready = auto_in_d_ready & allowed_0; // @[Arbiter.scala 123:31]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = requestAIO_0_0 & auto_out_0_a_ready | requestAIO_0_1 & auto_out_1_a_ready; // @[Mux.scala 27:73]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = idle ? _T_10 : _sink_ACancel_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign monitor_io_in_d_bits_opcode = _T_45 | _T_46; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_param = muxStateEarly_0 ? auto_out_0_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_size = _T_39 | _T_40; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_sink = muxStateEarly_0 & auto_out_0_d_bits_sink; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_denied = muxStateEarly_0 & auto_out_0_d_bits_denied; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_corrupt = muxStateEarly_0 & auto_out_0_d_bits_corrupt; // @[Mux.scala 27:73]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 1'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      beatsLeft <= 1'h0;
+    end else begin
+      beatsLeft <= beatsLeft - _beatsLeft_T_2;
+    end
+    if (reset) begin // @[Arbiter.scala 23:23]
+      readys_mask <= 2'h3; // @[Arbiter.scala 23:23]
+    end else if (latch & |readys_valid) begin // @[Arbiter.scala 27:32]
+      readys_mask <= _readys_mask_T_3; // @[Arbiter.scala 28:12]
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_0 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_0 <= earlyWinner_0;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle) begin // @[Arbiter.scala 117:30]
+      state_1 <= earlyWinner_1;
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~earlyWinner_0 | ~earlyWinner_1) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 105:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(~earlyWinner_0 | ~earlyWinner_1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:105 assert((prefixOR zip earlyWinner) map { case (p,w) => !p || !w } reduce {_ && _})\n"
+            ); // @[Arbiter.scala 105:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(auto_out_0_d_valid | auto_out_1_d_valid) | _prefixOR_T) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(~(auto_out_0_d_valid | auto_out_1_d_valid) | _prefixOR_T)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_11 | _T_10) & _readys_T_3) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_readys_T_3 & ~(_T_11 | _T_10)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  beatsLeft = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  readys_mask = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  state_0 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  state_1 = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module DMIToTL(
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [8:0]  auto_out_a_bits_address,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input         auto_out_d_bits_denied,
+  input  [31:0] auto_out_d_bits_data,
+  input         auto_out_d_bits_corrupt,
+  output        io_dmi_req_ready,
+  input         io_dmi_req_valid,
+  input  [6:0]  io_dmi_req_bits_addr,
+  input  [31:0] io_dmi_req_bits_data,
+  input  [1:0]  io_dmi_req_bits_op,
+  input         io_dmi_resp_ready,
+  output        io_dmi_resp_valid,
+  output [31:0] io_dmi_resp_bits_data,
+  output [1:0]  io_dmi_resp_bits_resp
+);
+  wire [8:0] addr = {io_dmi_req_bits_addr, 2'h0}; // @[DMI.scala 94:46]
+  wire [8:0] _GEN_3 = io_dmi_req_bits_op == 2'h1 ? addr : 9'h48; // @[DMI.scala 109:{64,76} 110:76]
+  wire [2:0] _GEN_7 = io_dmi_req_bits_op == 2'h1 ? 3'h4 : 3'h0; // @[DMI.scala 109:{64,76} 110:76]
+  wire  _io_dmi_resp_bits_resp_T = auto_out_d_bits_corrupt | auto_out_d_bits_denied; // @[DMI.scala 118:53]
+  assign auto_out_a_valid = io_dmi_req_valid; // @[DMI.scala 113:22 Nodes.scala 1207:84]
+  assign auto_out_a_bits_opcode = io_dmi_req_bits_op == 2'h2 ? 3'h0 : _GEN_7; // @[DMI.scala 108:{64,76}]
+  assign auto_out_a_bits_address = io_dmi_req_bits_op == 2'h2 ? addr : _GEN_3; // @[DMI.scala 108:{64,76}]
+  assign auto_out_a_bits_data = io_dmi_req_bits_op == 2'h2 ? io_dmi_req_bits_data : 32'h0; // @[DMI.scala 108:{64,76}]
+  assign auto_out_d_ready = io_dmi_resp_ready; // @[DMI.scala 117:28 Nodes.scala 1207:84]
+  assign io_dmi_req_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign io_dmi_resp_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign io_dmi_resp_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign io_dmi_resp_bits_resp = {{1'd0}, _io_dmi_resp_bits_resp_T}; // @[DMI.scala 118:28]
+endmodule
+module TLMonitor_49(
+  input        clock,
+  input        reset,
+  input        io_in_a_ready,
+  input        io_in_a_valid,
+  input  [2:0] io_in_a_bits_opcode,
+  input  [6:0] io_in_a_bits_address,
+  input        io_in_d_ready,
+  input        io_in_d_valid,
+  input  [2:0] io_in_d_bits_opcode
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [6:0] _is_aligned_T = io_in_a_bits_address & 7'h3; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 7'h0; // @[Edges.scala 20:24]
+  wire  _T_15 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [6:0] _T_20 = io_in_a_bits_address ^ 7'h40; // @[Parameters.scala 137:31]
+  wire [7:0] _T_21 = {1'b0,$signed(_T_20)}; // @[Parameters.scala 137:49]
+  wire [7:0] _T_23 = $signed(_T_21) & -8'shc; // @[Parameters.scala 137:52]
+  wire  _T_24 = $signed(_T_23) == 8'sh0; // @[Parameters.scala 137:67]
+  wire [6:0] _T_25 = io_in_a_bits_address ^ 7'h50; // @[Parameters.scala 137:31]
+  wire [7:0] _T_26 = {1'b0,$signed(_T_25)}; // @[Parameters.scala 137:49]
+  wire [7:0] _T_28 = $signed(_T_26) & -8'sh8; // @[Parameters.scala 137:52]
+  wire  _T_29 = $signed(_T_28) == 8'sh0; // @[Parameters.scala 137:67]
+  wire  _T_30 = _T_24 | _T_29; // @[Parameters.scala 671:42]
+  wire  _T_81 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_151 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_197 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_237 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_278 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_314 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_350 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_390 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_394 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_414 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_442 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [6:0] address; // @[Monitor.scala 388:22]
+  wire  _T_536 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_537 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_553 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  wire  _T_560 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_561 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  reg  inflight; // @[Monitor.scala 611:27]
+  reg [3:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [3:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_71 = {{12'd0}, inflight_opcodes}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_71 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [15:0] _GEN_73 = {{12'd0}, inflight_sizes}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_587 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire  _T_590 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [18:0] _a_opcodes_set_T_1 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? 3'h5 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [17:0] _a_sizes_set_T_1 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire  _T_594 = ~inflight; // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = a_first_done & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [17:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 18'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_598 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_600 = ~_T_394; // @[Monitor.scala 671:74]
+  wire  _T_601 = io_in_d_valid & d_first_1 & ~_T_394; // @[Monitor.scala 671:71]
+  wire [30:0] _d_opcodes_clr_T_5 = {{15'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1:0] _GEN_22 = d_first_done & d_first_1 & _T_600 ? 2'h1 : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = d_first_done & d_first_1 & _T_600 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _T_613 = inflight | _T_587; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_618 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_619 = io_in_d_bits_opcode == _GEN_32 | _T_618; // @[Monitor.scala 685:77]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_630 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_631 = io_in_d_bits_opcode == _GEN_48 | _T_630; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire  _T_635 = 4'h2 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_645 = _T_598 & a_first_1 & io_in_a_valid & _T_600; // @[Monitor.scala 694:116]
+  wire  _T_647 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  a_set = _GEN_16[0];
+  wire  d_clr = _GEN_22[0];
+  wire [3:0] a_opcodes_set = _GEN_19[3:0];
+  wire [3:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [3:0] d_opcodes_clr = _GEN_23[3:0];
+  wire [3:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [3:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [3:0] a_sizes_set = _GEN_20[3:0];
+  wire [3:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [3:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_656 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [3:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [15:0] _GEN_77 = {{12'd0}, inflight_sizes_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_77 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_682 = io_in_d_valid & d_first_2 & _T_394; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_68 = d_first_done & d_first_2 & _T_394 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 785:21]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_700 = 4'h2 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [3:0] d_opcodes_clr_1 = _GEN_68[3:0];
+  wire [3:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [3:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 1'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= (inflight | a_set) & ~d_clr; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 4'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 4'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 4'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_15 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_81 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_81 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_81 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_81 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_81 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_81 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_81 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_81 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_30 & (io_in_a_valid & _T_151 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_151 & ~reset & ~_T_30) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_151 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_151 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_30 & (io_in_a_valid & _T_197 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_197 & ~reset & ~_T_30) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_197 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_197 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_237 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_237 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_237 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_237 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_278 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_278 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_278 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_278 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_314 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_314 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_350 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_350 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_350 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_350 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_390 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_390) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_414 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_414 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_442 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_442 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_537 & (_T_536 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_536 & ~reset & ~_T_537) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_536 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_536 & ~reset & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_561 & (_T_560 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & _T_2 & ~_T_561) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_594 & (_T_590 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & ~reset & ~_T_594) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_613 & (_T_601 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & _T_2 & ~_T_613) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_619 & (_T_601 & _T_587 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & _T_587 & _T_2 & ~_T_619) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_631 & (_T_601 & ~_T_587 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & ~_T_587 & _T_2 & ~_T_631) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_635 & (_T_601 & ~_T_587 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & ~_T_587 & _T_2 & ~_T_635) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_647 & (_T_645 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_645 & _T_2 & ~_T_647) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_656 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_656) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Debug.scala:654:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_682 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_682 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_700 & (_T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_682 & _T_2 & ~_T_700) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:654:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  address = _RAND_2[6:0];
+  _RAND_3 = {1{`RANDOM}};
+  d_first_counter = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  opcode_1 = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  inflight = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  inflight_sizes = _RAND_7[3:0];
+  _RAND_8 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  watchdog = _RAND_10[31:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_11[3:0];
+  _RAND_12 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_12[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLDebugModuleOuter(
+  input         clock,
+  input         reset,
+  output        auto_dmi_in_a_ready,
+  input         auto_dmi_in_a_valid,
+  input  [2:0]  auto_dmi_in_a_bits_opcode,
+  input  [6:0]  auto_dmi_in_a_bits_address,
+  input  [31:0] auto_dmi_in_a_bits_data,
+  input         auto_dmi_in_d_ready,
+  output        auto_dmi_in_d_valid,
+  output [2:0]  auto_dmi_in_d_bits_opcode,
+  output [31:0] auto_dmi_in_d_bits_data,
+  output        auto_int_out_0,
+  output        io_ctrl_ndreset,
+  output        io_ctrl_dmactive,
+  input         io_ctrl_dmactiveAck,
+  input         io_innerCtrl_ready,
+  output        io_innerCtrl_valid,
+  output        io_innerCtrl_bits_resumereq,
+  output [9:0]  io_innerCtrl_bits_hartsel,
+  output        io_innerCtrl_bits_ackhavereset,
+  output        io_innerCtrl_bits_hrmask_0,
+  input         io_hgDebugInt_0
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  reg  DMCONTROLReg_haltreq; // @[Debug.scala 336:31]
+  reg  DMCONTROLReg_ndmreset; // @[Debug.scala 336:31]
+  reg  DMCONTROLReg_dmactive; // @[Debug.scala 336:31]
+  wire  _T_1 = ~DMCONTROLReg_dmactive; // @[Debug.scala 354:11]
+  wire  in_bits_read = auto_dmi_in_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [2:0] in_bits_index = auto_dmi_in_a_bits_address[4:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire  out_iindex = in_bits_index[1]; // @[RegisterRouter.scala 83:24]
+  wire [2:0] out_findex = in_bits_index & 3'h5; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 3'h0; // @[RegisterRouter.scala 83:24]
+  wire [1:0] _out_backSel_T = 2'h1 << out_iindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_0 = _out_backSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_6 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_0 & out_findex == 3'h0; // @[RegisterRouter.scala 83:24]
+  wire  DMCONTROLWrData_ndmreset = auto_dmi_in_a_bits_data[1]; // @[RegisterRouter.scala 83:24]
+  wire  DMCONTROLWrData_haltreq = auto_dmi_in_a_bits_data[31]; // @[RegisterRouter.scala 83:24]
+  wire  DMCONTROLWrData_dmactive = auto_dmi_in_a_bits_data[0]; // @[RegisterRouter.scala 83:24]
+  reg  hrmaskReg_0; // @[Debug.scala 471:28]
+  wire  DMCONTROLWrData_clrresethaltreq = auto_dmi_in_a_bits_data[2]; // @[RegisterRouter.scala 83:24]
+  wire  _T_11 = io_innerCtrl_bits_hartsel == 10'h0; // @[Debug.scala 400:35]
+  wire  DMCONTROLWrData_setresethaltreq = auto_dmi_in_a_bits_data[3]; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_23 = out_woready_6 & DMCONTROLWrData_setresethaltreq & _T_11 | hrmaskReg_0; // @[Debug.scala 479:102 473:15 480:30]
+  wire  _GEN_24 = out_woready_6 & DMCONTROLWrData_clrresethaltreq & _T_11 ? 1'h0 : _GEN_23; // @[Debug.scala 477:102 478:30]
+  wire  _T_18 = DMCONTROLReg_dmactive & io_ctrl_dmactiveAck; // @[Debug.scala 487:43]
+  wire [4:0] out_prepend_7 = {1'h0,1'h0,1'h0,DMCONTROLReg_ndmreset,_T_18}; // @[Cat.scala 31:58]
+  wire [15:0] _out_T_96 = {{11'd0}, out_prepend_7}; // @[RegisterRouter.scala 83:24]
+  wire [17:0] out_prepend_9 = {1'h0,1'h0,_out_T_96}; // @[Cat.scala 31:58]
+  wire [25:0] _out_T_114 = {{8'd0}, out_prepend_9}; // @[RegisterRouter.scala 83:24]
+  wire  DMCONTROLWrData_ackhavereset = auto_dmi_in_a_bits_data[28]; // @[RegisterRouter.scala 83:24]
+  wire  DMCONTROLWrData_resumereq = auto_dmi_in_a_bits_data[30]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_15 = {DMCONTROLReg_haltreq,1'h0,1'h0,1'h0,1'h0,1'h0,_out_T_114}; // @[Cat.scala 31:58]
+  wire  _GEN_35 = out_iindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_37 = out_iindex ? 32'h111380 : out_prepend_15; // @[MuxLiteral.scala 48:{10,10}]
+  reg  debugIntRegs_0; // @[Debug.scala 552:31]
+  reg  innerCtrlValidReg; // @[Debug.scala 583:36]
+  reg  innerCtrlResumeReqReg; // @[Debug.scala 584:40]
+  reg  innerCtrlAckHaveResetReg; // @[Debug.scala 585:43]
+  wire  _innerCtrlValidReg_T = ~io_innerCtrl_ready; // @[Debug.scala 590:54]
+  TLMonitor_49 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode)
+  );
+  assign auto_dmi_in_a_ready = auto_dmi_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign auto_dmi_in_d_valid = auto_dmi_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign auto_dmi_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign auto_dmi_in_d_bits_data = _GEN_35 ? _GEN_37 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign auto_int_out_0 = debugIntRegs_0 | io_hgDebugInt_0; // @[Debug.scala 558:60]
+  assign io_ctrl_ndreset = DMCONTROLReg_ndmreset; // @[Debug.scala 604:21]
+  assign io_ctrl_dmactive = DMCONTROLReg_dmactive; // @[Debug.scala 605:22]
+  assign io_innerCtrl_valid = out_woready_6 | innerCtrlValidReg; // @[Debug.scala 594:54]
+  assign io_innerCtrl_bits_resumereq = out_woready_6 & DMCONTROLWrData_resumereq | innerCtrlResumeReqReg; // @[Debug.scala 596:83]
+  assign io_innerCtrl_bits_hartsel = 10'h0; // @[Debug.scala 595:42]
+  assign io_innerCtrl_bits_ackhavereset = out_woready_6 & DMCONTROLWrData_ackhavereset | innerCtrlAckHaveResetReg; // @[Debug.scala 597:89]
+  assign io_innerCtrl_bits_hrmask_0 = _T_1 ? 1'h0 : _GEN_24; // @[Debug.scala 475:44 476:30]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_dmi_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = auto_dmi_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_dmi_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_dmi_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_dmi_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_dmi_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[Debug.scala 354:22]
+      DMCONTROLReg_haltreq <= 1'h0; // @[Debug.scala 355:20]
+    end else if (~DMCONTROLReg_dmactive) begin // @[Debug.scala 361:47]
+      DMCONTROLReg_haltreq <= 1'h0; // @[Debug.scala 361:75]
+    end else if (out_woready_6) begin // @[Debug.scala 353:18]
+      DMCONTROLReg_haltreq <= DMCONTROLWrData_haltreq;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[Debug.scala 354:22]
+      DMCONTROLReg_ndmreset <= 1'h0; // @[Debug.scala 355:20]
+    end else if (~DMCONTROLReg_dmactive) begin // @[Debug.scala 357:47]
+      DMCONTROLReg_ndmreset <= 1'h0; // @[Debug.scala 357:75]
+    end else if (out_woready_6) begin // @[Debug.scala 353:18]
+      DMCONTROLReg_ndmreset <= DMCONTROLWrData_ndmreset;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[Debug.scala 365:25]
+      DMCONTROLReg_dmactive <= 1'h0; // @[Debug.scala 366:29]
+    end else if (out_woready_6) begin // @[Debug.scala 354:22]
+      DMCONTROLReg_dmactive <= DMCONTROLWrData_dmactive; // @[Debug.scala 355:20]
+    end else if (~DMCONTROLReg_dmactive) begin // @[Debug.scala 353:18]
+      DMCONTROLReg_dmactive <= 1'h0;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[Debug.scala 475:44]
+      hrmaskReg_0 <= 1'h0; // @[Debug.scala 476:30]
+    end else if (_T_1) begin // @[Debug.scala 477:102]
+      hrmaskReg_0 <= 1'h0; // @[Debug.scala 478:30]
+    end else if (out_woready_6 & DMCONTROLWrData_clrresethaltreq & _T_11) begin
+      hrmaskReg_0 <= 1'h0;
+    end else begin
+      hrmaskReg_0 <= _GEN_23;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[Debug.scala 568:44]
+      debugIntRegs_0 <= 1'h0; // @[Debug.scala 569:32]
+    end else if (_T_1) begin // @[Debug.scala 572:96]
+      debugIntRegs_0 <= 1'h0; // @[Debug.scala 573:34]
+    end else if (out_woready_6) begin // @[Debug.scala 554:17]
+      debugIntRegs_0 <= DMCONTROLWrData_haltreq;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[Debug.scala 590:52]
+      innerCtrlValidReg <= 1'h0;
+    end else begin
+      innerCtrlValidReg <= io_innerCtrl_valid & ~io_innerCtrl_ready;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[Debug.scala 591:61]
+      innerCtrlResumeReqReg <= 1'h0;
+    end else begin
+      innerCtrlResumeReqReg <= io_innerCtrl_bits_resumereq & _innerCtrlValidReg_T;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[Debug.scala 592:64]
+      innerCtrlAckHaveResetReg <= 1'h0;
+    end else begin
+      innerCtrlAckHaveResetReg <= io_innerCtrl_bits_ackhavereset & _innerCtrlValidReg_T;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  DMCONTROLReg_haltreq = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  DMCONTROLReg_ndmreset = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  DMCONTROLReg_dmactive = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  hrmaskReg_0 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  debugIntRegs_0 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  innerCtrlValidReg = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  innerCtrlResumeReqReg = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  innerCtrlAckHaveResetReg = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    DMCONTROLReg_haltreq = 1'h0;
+  end
+  if (reset) begin
+    DMCONTROLReg_ndmreset = 1'h0;
+  end
+  if (reset) begin
+    DMCONTROLReg_dmactive = 1'h0;
+  end
+  if (reset) begin
+    hrmaskReg_0 = 1'h0;
+  end
+  if (reset) begin
+    debugIntRegs_0 = 1'h0;
+  end
+  if (reset) begin
+    innerCtrlValidReg = 1'h0;
+  end
+  if (reset) begin
+    innerCtrlResumeReqReg = 1'h0;
+  end
+  if (reset) begin
+    innerCtrlAckHaveResetReg = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module IntSyncCrossingSource_4(
+  input   auto_in_0,
+  output  auto_out_sync_0
+);
+  assign auto_out_sync_0 = auto_in_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_50(
+  input        clock,
+  input        reset,
+  input        io_in_a_ready,
+  input        io_in_a_valid,
+  input  [2:0] io_in_a_bits_opcode,
+  input  [8:0] io_in_a_bits_address,
+  input        io_in_d_ready,
+  input        io_in_d_valid,
+  input  [2:0] io_in_d_bits_opcode,
+  input  [1:0] io_in_d_bits_param,
+  input  [1:0] io_in_d_bits_size,
+  input        io_in_d_bits_source,
+  input        io_in_d_bits_sink,
+  input        io_in_d_bits_denied,
+  input        io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [8:0] _is_aligned_T = io_in_a_bits_address & 9'h3; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 9'h0; // @[Edges.scala 20:24]
+  wire [9:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_15 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [9:0] _T_23 = $signed(_T_7) & -10'sh40; // @[Parameters.scala 137:52]
+  wire  _T_24 = $signed(_T_23) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_25 = io_in_a_bits_address ^ 9'h44; // @[Parameters.scala 137:31]
+  wire [9:0] _T_26 = {1'b0,$signed(_T_25)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_28 = $signed(_T_26) & -10'shc; // @[Parameters.scala 137:52]
+  wire  _T_29 = $signed(_T_28) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_30 = io_in_a_bits_address ^ 9'h58; // @[Parameters.scala 137:31]
+  wire [9:0] _T_31 = {1'b0,$signed(_T_30)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_33 = $signed(_T_31) & -10'sh8; // @[Parameters.scala 137:52]
+  wire  _T_34 = $signed(_T_33) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_35 = io_in_a_bits_address ^ 9'h60; // @[Parameters.scala 137:31]
+  wire [9:0] _T_36 = {1'b0,$signed(_T_35)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_38 = $signed(_T_36) & -10'sh20; // @[Parameters.scala 137:52]
+  wire  _T_39 = $signed(_T_38) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_40 = io_in_a_bits_address ^ 9'h80; // @[Parameters.scala 137:31]
+  wire [9:0] _T_41 = {1'b0,$signed(_T_40)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_43 = $signed(_T_41) & -10'sh80; // @[Parameters.scala 137:52]
+  wire  _T_44 = $signed(_T_43) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_45 = io_in_a_bits_address ^ 9'h100; // @[Parameters.scala 137:31]
+  wire [9:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_48 = $signed(_T_46) & -10'sh100; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 10'sh0; // @[Parameters.scala 137:67]
+  wire  _T_54 = _T_24 | _T_29 | _T_34 | _T_39 | _T_44 | _T_49; // @[Parameters.scala 671:42]
+  wire  _T_129 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_247 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_381 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_446 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_506 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_566 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_630 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_1 = ~io_in_d_bits_source; // @[Parameters.scala 46:9]
+  wire  _T_634 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_638 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_642 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_646 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_650 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_654 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_665 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_669 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_682 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_702 = _T_650 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_711 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_728 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_746 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [8:0] address; // @[Monitor.scala 388:22]
+  wire  _T_776 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_777 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_793 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg  source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_800 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_801 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_805 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_809 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_813 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_817 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_821 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg  inflight; // @[Monitor.scala 611:27]
+  reg [3:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [3:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [2:0] _GEN_71 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [3:0] _a_opcode_lookup_T = {{1'd0}, _GEN_71}; // @[Monitor.scala 634:69]
+  wire [3:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_72 = {{12'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_72 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [3:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_75 = {{12'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_75 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_827 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire  _T_830 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [18:0] _a_opcodes_set_T_1 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? 3'h5 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [17:0] _a_sizes_set_T_1 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire  _T_834 = ~inflight; // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = a_first_done & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [17:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 18'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_838 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_840 = ~_T_634; // @[Monitor.scala 671:74]
+  wire  _T_841 = io_in_d_valid & d_first_1 & ~_T_634; // @[Monitor.scala 671:71]
+  wire [1:0] _d_clr_wo_ready_T = 2'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [30:0] _GEN_1 = {{15'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [30:0] _d_opcodes_clr_T_5 = _GEN_1 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [1:0] _GEN_22 = d_first_done & d_first_1 & _T_840 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = d_first_done & d_first_1 & _T_840 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire  same_cycle_resp = _T_827 & _source_ok_T_1; // @[Monitor.scala 681:88]
+  wire  _T_853 = inflight >> io_in_d_bits_source | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_858 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_859 = io_in_d_bits_opcode == _GEN_32 | _T_858; // @[Monitor.scala 685:77]
+  wire  _T_863 = 2'h2 == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_870 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_871 = io_in_d_bits_opcode == _GEN_48 | _T_870; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_79 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_875 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_885 = _T_838 & a_first_1 & io_in_a_valid & _source_ok_T_1 & _T_840; // @[Monitor.scala 694:116]
+  wire  _T_887 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  a_set = _GEN_16[0];
+  wire  d_clr = _GEN_22[0];
+  wire [3:0] a_opcodes_set = _GEN_19[3:0];
+  wire [3:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [3:0] d_opcodes_clr = _GEN_23[3:0];
+  wire [3:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [3:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [3:0] a_sizes_set = _GEN_20[3:0];
+  wire [3:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [3:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_896 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [3:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [3:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_84 = {{12'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_84 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_922 = io_in_d_valid & d_first_2 & _T_634; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_68 = d_first_done & d_first_2 & _T_634 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 785:21]
+  wire  _T_930 = 1'h0 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_940 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [3:0] d_opcodes_clr_1 = _GEN_68[3:0];
+  wire [3:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [3:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 1'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= (inflight | a_set) & ~d_clr; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 4'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 4'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 4'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_15 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_129 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_54 & (io_in_a_valid & _T_247 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~reset & ~_T_54) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_247 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_54 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_54) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_446 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_506 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_669 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_669) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_669 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_669) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_702 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_702) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_711 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_711 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (io_in_d_valid & _T_711 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_711 & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_d_valid & _T_711 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_711 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_728 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (io_in_d_valid & _T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_728 & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_702 & (io_in_d_valid & _T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_728 & _T_2 & ~_T_702) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_746 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_746 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (io_in_d_valid & _T_746 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_746 & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_d_valid & _T_746 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_746 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_777 & (_T_776 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~reset & ~_T_777) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_793 & (_T_776 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~reset & ~_T_793) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_801 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_801) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_805 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_805) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_809 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_809) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_813 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_813) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_817 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_817) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_821 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_821) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_834 & (_T_830 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_830 & ~reset & ~_T_834) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_853 & (_T_841 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & _T_2 & ~_T_853) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_859 & (_T_841 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & same_cycle_resp & _T_2 & ~_T_859) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_863 & (_T_841 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & same_cycle_resp & _T_2 & ~_T_863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_871 & (_T_841 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & ~same_cycle_resp & _T_2 & ~_T_871) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_875 & (_T_841 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & ~same_cycle_resp & _T_2 & ~_T_875) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_887 & (_T_885 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_885 & _T_2 & ~_T_887) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_896 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_896) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BusBypass.scala:32:12)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_930 & (_T_922 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_922 & _T_2 & ~_T_930) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_940 & (_T_922 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_922 & _T_2 & ~_T_940) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusBypass.scala:32:12)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  address = _RAND_2[8:0];
+  _RAND_3 = {1{`RANDOM}};
+  d_first_counter = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  opcode_1 = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  param_1 = _RAND_5[1:0];
+  _RAND_6 = {1{`RANDOM}};
+  size_1 = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  source_1 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  sink = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  denied = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[3:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[3:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_17[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBusBypassBar(
+  input          clock,
+  input          reset,
+  output         auto_in_a_ready,
+  input          auto_in_a_valid,
+  input  [2:0]   auto_in_a_bits_opcode,
+  input  [8:0]   auto_in_a_bits_address,
+  input  [31:0]  auto_in_a_bits_data,
+  input          auto_in_d_ready,
+  output         auto_in_d_valid,
+  output [2:0]   auto_in_d_bits_opcode,
+  output [1:0]   auto_in_d_bits_param,
+  output [1:0]   auto_in_d_bits_size,
+  output         auto_in_d_bits_sink,
+  output         auto_in_d_bits_denied,
+  output [31:0]  auto_in_d_bits_data,
+  output         auto_in_d_bits_corrupt,
+  input          auto_out_1_a_ready,
+  output         auto_out_1_a_valid,
+  output [2:0]   auto_out_1_a_bits_opcode,
+  output [8:0]   auto_out_1_a_bits_address,
+  output [31:0]  auto_out_1_a_bits_data,
+  output         auto_out_1_d_ready,
+  input          auto_out_1_d_valid,
+  input  [2:0]   auto_out_1_d_bits_opcode,
+  input  [1:0]   auto_out_1_d_bits_param,
+  input  [1:0]   auto_out_1_d_bits_size,
+  input          auto_out_1_d_bits_source,
+  input          auto_out_1_d_bits_sink,
+  input          auto_out_1_d_bits_denied,
+  input  [31:0]  auto_out_1_d_bits_data,
+  input          auto_out_1_d_bits_corrupt,
+  input          auto_out_0_a_ready,
+  output         auto_out_0_a_valid,
+  output [2:0]   auto_out_0_a_bits_opcode,
+  output [127:0] auto_out_0_a_bits_address,
+  output         auto_out_0_d_ready,
+  input          auto_out_0_d_valid,
+  input  [2:0]   auto_out_0_d_bits_opcode,
+  input  [1:0]   auto_out_0_d_bits_size,
+  input          auto_out_0_d_bits_denied,
+  input          auto_out_0_d_bits_corrupt,
+  input          io_bypass
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [8:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  reg  in_reset; // @[BusBypass.scala 77:27]
+  reg  bypass_reg; // @[BusBypass.scala 78:25]
+  wire  bypass = in_reset ? io_bypass : bypass_reg; // @[BusBypass.scala 79:21]
+  reg [1:0] flight; // @[Edges.scala 294:25]
+  reg  stall_counter; // @[Edges.scala 228:27]
+  wire  stall_first = ~stall_counter; // @[Edges.scala 230:25]
+  wire  stall = bypass != io_bypass & stall_first; // @[BusBypass.scala 84:40]
+  wire  _bundleIn_0_a_ready_T = ~stall; // @[BusBypass.scala 88:21]
+  wire  _bundleIn_0_a_ready_T_1 = bypass ? auto_out_0_a_ready : auto_out_1_a_ready; // @[BusBypass.scala 88:34]
+  wire  in_a_ready = ~stall & _bundleIn_0_a_ready_T_1; // @[BusBypass.scala 88:28]
+  wire  done = in_a_ready & auto_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  counter; // @[Edges.scala 228:27]
+  wire  counter1 = counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~counter; // @[Edges.scala 230:25]
+  wire  in_d_valid = bypass ? auto_out_0_d_valid : auto_out_1_d_valid; // @[BusBypass.scala 94:24]
+  wire  done_3 = auto_in_d_ready & in_d_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] in_d_bits_opcode = bypass ? auto_out_0_d_bits_opcode : auto_out_1_d_bits_opcode; // @[BusBypass.scala 96:21]
+  reg  counter_3; // @[Edges.scala 228:27]
+  wire  counter1_3 = counter_3 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~counter_3; // @[Edges.scala 230:25]
+  wire  d_request = in_d_bits_opcode[2] & ~in_d_bits_opcode[1]; // @[Edges.scala 70:40]
+  wire  a_inc = done & a_first; // @[Edges.scala 309:28]
+  wire  d_inc = done_3 & d_first & d_request; // @[Edges.scala 312:39]
+  wire [1:0] inc = {a_inc,d_inc}; // @[Cat.scala 31:58]
+  wire [1:0] dec = {1'h0,done_3}; // @[Cat.scala 31:58]
+  wire [1:0] _next_flight_T_2 = inc[0] + inc[1]; // @[Bitwise.scala 48:55]
+  wire [1:0] _next_flight_T_5 = flight + _next_flight_T_2; // @[Edges.scala 323:30]
+  wire [1:0] _next_flight_T_8 = dec[0] + dec[1]; // @[Bitwise.scala 48:55]
+  wire [1:0] next_flight = _next_flight_T_5 - _next_flight_T_8; // @[Edges.scala 323:46]
+  wire  stall_counter1 = stall_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  _bundleOut_0_a_valid_T_1 = _bundleIn_0_a_ready_T & auto_in_a_valid; // @[BusBypass.scala 86:28]
+  wire  _bundleOut_1_a_valid_T_2 = ~bypass; // @[BusBypass.scala 87:45]
+  TLMonitor_50 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  assign auto_in_a_ready = ~stall & _bundleIn_0_a_ready_T_1; // @[BusBypass.scala 88:28]
+  assign auto_in_d_valid = bypass ? auto_out_0_d_valid : auto_out_1_d_valid; // @[BusBypass.scala 94:24]
+  assign auto_in_d_bits_opcode = bypass ? auto_out_0_d_bits_opcode : auto_out_1_d_bits_opcode; // @[BusBypass.scala 96:21]
+  assign auto_in_d_bits_param = bypass ? 2'h0 : auto_out_1_d_bits_param; // @[BusBypass.scala 96:21]
+  assign auto_in_d_bits_size = bypass ? auto_out_0_d_bits_size : auto_out_1_d_bits_size; // @[BusBypass.scala 96:21]
+  assign auto_in_d_bits_sink = bypass ? 1'h0 : auto_out_1_d_bits_sink; // @[BusBypass.scala 96:21]
+  assign auto_in_d_bits_denied = bypass ? auto_out_0_d_bits_denied : auto_out_1_d_bits_denied; // @[BusBypass.scala 96:21]
+  assign auto_in_d_bits_data = bypass ? 32'h0 : auto_out_1_d_bits_data; // @[BusBypass.scala 96:21]
+  assign auto_in_d_bits_corrupt = bypass ? auto_out_0_d_bits_corrupt : auto_out_1_d_bits_corrupt; // @[BusBypass.scala 96:21]
+  assign auto_out_1_a_valid = _bundleOut_0_a_valid_T_1 & ~bypass; // @[BusBypass.scala 87:42]
+  assign auto_out_1_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_d_ready = auto_in_d_ready & _bundleOut_1_a_valid_T_2; // @[BusBypass.scala 93:32]
+  assign auto_out_0_a_valid = _bundleIn_0_a_ready_T & auto_in_a_valid & bypass; // @[BusBypass.scala 86:42]
+  assign auto_out_0_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_address = {{119'd0}, auto_in_a_bits_address}; // @[Nodes.scala 1207:84 BusBypass.scala 89:18]
+  assign auto_out_0_d_ready = auto_in_d_ready & bypass; // @[BusBypass.scala 92:32]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = ~stall & _bundleIn_0_a_ready_T_1; // @[BusBypass.scala 88:28]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = bypass ? auto_out_0_d_valid : auto_out_1_d_valid; // @[BusBypass.scala 94:24]
+  assign monitor_io_in_d_bits_opcode = bypass ? auto_out_0_d_bits_opcode : auto_out_1_d_bits_opcode; // @[BusBypass.scala 96:21]
+  assign monitor_io_in_d_bits_param = bypass ? 2'h0 : auto_out_1_d_bits_param; // @[BusBypass.scala 96:21]
+  assign monitor_io_in_d_bits_size = bypass ? auto_out_0_d_bits_size : auto_out_1_d_bits_size; // @[BusBypass.scala 96:21]
+  assign monitor_io_in_d_bits_source = bypass ? 1'h0 : auto_out_1_d_bits_source; // @[BusBypass.scala 96:21]
+  assign monitor_io_in_d_bits_sink = bypass ? 1'h0 : auto_out_1_d_bits_sink; // @[BusBypass.scala 96:21]
+  assign monitor_io_in_d_bits_denied = bypass ? auto_out_0_d_bits_denied : auto_out_1_d_bits_denied; // @[BusBypass.scala 96:21]
+  assign monitor_io_in_d_bits_corrupt = bypass ? auto_out_0_d_bits_corrupt : auto_out_1_d_bits_corrupt; // @[BusBypass.scala 96:21]
+  always @(posedge clock) begin
+    in_reset <= reset; // @[BusBypass.scala 77:{27,27,27}]
+    if (in_reset | next_flight == 2'h0) begin // @[BusBypass.scala 83:50]
+      bypass_reg <= io_bypass; // @[BusBypass.scala 83:63]
+    end
+    if (reset) begin // @[Edges.scala 294:25]
+      flight <= 2'h0; // @[Edges.scala 294:25]
+    end else begin
+      flight <= next_flight; // @[Edges.scala 324:12]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      stall_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (done) begin // @[Edges.scala 234:17]
+      if (stall_first) begin // @[Edges.scala 235:21]
+        stall_counter <= 1'h0;
+      end else begin
+        stall_counter <= stall_counter1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        counter <= 1'h0;
+      end else begin
+        counter <= counter1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter_3 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (done_3) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        counter_3 <= 1'h0;
+      end else begin
+        counter_3 <= counter1_3;
+      end
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  in_reset = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  bypass_reg = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  flight = _RAND_2[1:0];
+  _RAND_3 = {1{`RANDOM}};
+  stall_counter = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  counter = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  counter_3 = _RAND_5[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_51(
+  input          clock,
+  input          reset,
+  input          io_in_a_ready,
+  input          io_in_a_valid,
+  input  [2:0]   io_in_a_bits_opcode,
+  input  [127:0] io_in_a_bits_address,
+  input          io_in_d_ready,
+  input          io_in_d_valid,
+  input  [2:0]   io_in_d_bits_opcode,
+  input  [1:0]   io_in_d_bits_size,
+  input          io_in_d_bits_denied,
+  input          io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [127:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [127:0] _is_aligned_T = io_in_a_bits_address & 128'h3; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 128'h0; // @[Edges.scala 20:24]
+  wire [128:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_15 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [128:0] _T_26 = $signed(_T_7) & 129'sh100000000000000000000000000000000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 129'sh0; // @[Parameters.scala 137:67]
+  wire  _T_72 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_133 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_173 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_207 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_242 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_272 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_302 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_339 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_343 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_347 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_355 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_359 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_363 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_391 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_411 = _T_359 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_420 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_437 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_455 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [127:0] address; // @[Monitor.scala 388:22]
+  wire  _T_485 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_486 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_502 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_509 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_510 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_518 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_530 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg  inflight; // @[Monitor.scala 611:27]
+  reg [3:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [3:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_71 = {{12'd0}, inflight_opcodes}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_71 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [15:0] _GEN_73 = {{12'd0}, inflight_sizes}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_536 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire  _T_539 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [18:0] _a_opcodes_set_T_1 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? 3'h5 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [17:0] _a_sizes_set_T_1 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire  _T_543 = ~inflight; // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = a_first_done & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [17:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 18'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_547 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_549 = ~_T_343; // @[Monitor.scala 671:74]
+  wire  _T_550 = io_in_d_valid & d_first_1 & ~_T_343; // @[Monitor.scala 671:71]
+  wire [30:0] _d_opcodes_clr_T_5 = {{15'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1:0] _GEN_22 = d_first_done & d_first_1 & _T_549 ? 2'h1 : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = d_first_done & d_first_1 & _T_549 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _T_562 = inflight | _T_536; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_567 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_568 = io_in_d_bits_opcode == _GEN_32 | _T_567; // @[Monitor.scala 685:77]
+  wire  _T_572 = 2'h2 == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_579 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_580 = io_in_d_bits_opcode == _GEN_48 | _T_579; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_75 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_584 = _GEN_75 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_594 = _T_547 & a_first_1 & io_in_a_valid & _T_549; // @[Monitor.scala 694:116]
+  wire  _T_596 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  a_set = _GEN_16[0];
+  wire  d_clr = _GEN_22[0];
+  wire [3:0] a_opcodes_set = _GEN_19[3:0];
+  wire [3:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [3:0] d_opcodes_clr = _GEN_23[3:0];
+  wire [3:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [3:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [3:0] a_sizes_set = _GEN_20[3:0];
+  wire [3:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [3:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_605 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [3:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [15:0] _GEN_78 = {{12'd0}, inflight_sizes_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_78 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_631 = io_in_d_valid & d_first_2 & _T_343; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_68 = d_first_done & d_first_2 & _T_343 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 785:21]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_649 = _GEN_75 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [3:0] d_opcodes_clr_1 = _GEN_68[3:0];
+  wire [3:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [3:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 1'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= (inflight | a_set) & ~d_clr; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 4'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 4'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 4'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_15 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_72 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_72 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_72 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_72 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_72 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_72 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_72 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_72 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_27 & (io_in_a_valid & _T_133 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_133 & ~reset & ~_T_27) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_133 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_133 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_27 & (io_in_a_valid & _T_173 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_173 & ~reset & ~_T_27) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_173 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_173 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_207 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_207 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_207 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_207 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_242 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_242 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_242 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_242 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_272 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_272 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_272 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_272 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_302 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_302 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_302 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_302 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_339 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_339) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_d_valid & _T_343 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_343 & _T_2 & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_355 & (io_in_d_valid & _T_343 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_343 & _T_2 & ~_T_355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_359 & (io_in_d_valid & _T_343 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_343 & _T_2 & ~_T_359) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_d_valid & _T_363 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_363 & _T_2 & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_355 & (io_in_d_valid & _T_363 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_363 & _T_2 & ~_T_355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_d_valid & _T_391 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_391 & _T_2 & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_411 & (io_in_d_valid & _T_391 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_391 & _T_2 & ~_T_411) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_355 & (io_in_d_valid & _T_420 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_420 & _T_2 & ~_T_355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_411 & (io_in_d_valid & _T_437 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_437 & _T_2 & ~_T_411) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_355 & (io_in_d_valid & _T_455 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_455 & _T_2 & ~_T_355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_486 & (_T_485 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_485 & ~reset & ~_T_486) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_502 & (_T_485 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_485 & ~reset & ~_T_502) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_510 & (_T_509 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_509 & _T_2 & ~_T_510) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_518 & (_T_509 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_509 & _T_2 & ~_T_518) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_530 & (_T_509 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_509 & _T_2 & ~_T_530) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_543 & (_T_539 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_539 & ~reset & ~_T_543) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_562 & (_T_550 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_550 & _T_2 & ~_T_562) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_550 & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_550 & _T_536 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_572 & (_T_550 & _T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_550 & _T_536 & _T_2 & ~_T_572) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_550 & ~_T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_550 & ~_T_536 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_584 & (_T_550 & ~_T_536 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_550 & ~_T_536 & _T_2 & ~_T_584) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_596 & (_T_594 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_594 & _T_2 & ~_T_596) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_605 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_605) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BusBypass.scala:33:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_631 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_649 & (_T_631 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_631 & _T_2 & ~_T_649) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusBypass.scala:33:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {4{`RANDOM}};
+  address = _RAND_2[127:0];
+  _RAND_3 = {1{`RANDOM}};
+  d_first_counter = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  opcode_1 = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  size_1 = _RAND_5[1:0];
+  _RAND_6 = {1{`RANDOM}};
+  denied = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  inflight = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_8[3:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight_sizes = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  watchdog = _RAND_12[31:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_14[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLError_1(
+  input          clock,
+  input          reset,
+  output         auto_in_a_ready,
+  input          auto_in_a_valid,
+  input  [2:0]   auto_in_a_bits_opcode,
+  input  [127:0] auto_in_a_bits_address,
+  input          auto_in_d_ready,
+  output         auto_in_d_valid,
+  output [2:0]   auto_in_d_bits_opcode,
+  output [1:0]   auto_in_d_bits_size,
+  output         auto_in_d_bits_denied,
+  output         auto_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [127:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  reg  idle; // @[Error.scala 44:23]
+  reg  beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle_1 = ~beatsLeft; // @[Arbiter.scala 88:28]
+  wire  da_valid = auto_in_a_valid & idle; // @[Error.scala 51:35]
+  wire [1:0] _readys_T = {da_valid,1'h0}; // @[Cat.scala 31:58]
+  wire [2:0] _readys_T_1 = {_readys_T, 1'h0}; // @[package.scala 244:48]
+  wire [1:0] _readys_T_3 = _readys_T | _readys_T_1[1:0]; // @[package.scala 244:43]
+  wire [2:0] _readys_T_5 = {_readys_T_3, 1'h0}; // @[Arbiter.scala 16:78]
+  wire [1:0] _readys_T_7 = ~_readys_T_5[1:0]; // @[Arbiter.scala 16:61]
+  wire  readys_1 = _readys_T_7[1]; // @[Arbiter.scala 95:86]
+  reg  state_1; // @[Arbiter.scala 116:26]
+  wire  allowed_1 = idle_1 ? readys_1 : state_1; // @[Arbiter.scala 121:24]
+  wire  out_1_ready = auto_in_d_ready & allowed_1; // @[Arbiter.scala 123:31]
+  reg  counter; // @[Edges.scala 228:27]
+  wire [2:0] _GEN_4 = 3'h2 == auto_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Error.scala 53:{21,21}]
+  wire [2:0] _GEN_5 = 3'h3 == auto_in_a_bits_opcode ? 3'h1 : _GEN_4; // @[Error.scala 53:{21,21}]
+  wire [2:0] _GEN_6 = 3'h4 == auto_in_a_bits_opcode ? 3'h1 : _GEN_5; // @[Error.scala 53:{21,21}]
+  wire [2:0] _GEN_7 = 3'h5 == auto_in_a_bits_opcode ? 3'h2 : _GEN_6; // @[Error.scala 53:{21,21}]
+  wire [2:0] _GEN_8 = 3'h6 == auto_in_a_bits_opcode ? 3'h4 : _GEN_7; // @[Error.scala 53:{21,21}]
+  wire [2:0] da_bits_opcode = 3'h7 == auto_in_a_bits_opcode ? 3'h4 : _GEN_8; // @[Error.scala 53:{21,21}]
+  wire  beats1_opdata = da_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  done = out_1_ready & da_valid; // @[Decoupled.scala 50:35]
+  wire  counter1 = counter - 1'h1; // @[Edges.scala 229:28]
+  wire  da_first = ~counter; // @[Edges.scala 230:25]
+  wire  _T_3 = ~reset; // @[Error.scala 49:12]
+  wire  _GEN_12 = done & da_bits_opcode == 3'h4 ? 1'h0 : idle; // @[Error.scala 44:23 70:{52,59}]
+  wire  latch = idle_1 & auto_in_d_ready; // @[Arbiter.scala 89:24]
+  wire  earlyWinner_1 = readys_1 & da_valid; // @[Arbiter.scala 97:79]
+  wire  _T_22 = ~da_valid; // @[Arbiter.scala 107:15]
+  wire  muxStateEarly_1 = idle_1 ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  wire  _sink_ACancel_earlyValid_T_2 = state_1 & da_valid; // @[Mux.scala 27:73]
+  wire  sink_ACancel_earlyValid = idle_1 ? da_valid : _sink_ACancel_earlyValid_T_2; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_in_d_ready & sink_ACancel_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  TLMonitor_51 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  assign auto_in_a_ready = out_1_ready & idle; // @[Error.scala 50:37]
+  assign auto_in_d_valid = idle_1 ? da_valid : _sink_ACancel_earlyValid_T_2; // @[Arbiter.scala 125:29]
+  assign auto_in_d_bits_opcode = muxStateEarly_1 ? da_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_size = muxStateEarly_1 ? 2'h2 : 2'h0; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_denied = idle_1 ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  assign auto_in_d_bits_corrupt = muxStateEarly_1 & beats1_opdata; // @[Mux.scala 27:73]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = out_1_ready & idle; // @[Error.scala 50:37]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = idle_1 ? da_valid : _sink_ACancel_earlyValid_T_2; // @[Arbiter.scala 125:29]
+  assign monitor_io_in_d_bits_opcode = muxStateEarly_1 ? da_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_size = muxStateEarly_1 ? 2'h2 : 2'h0; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_denied = idle_1 ? earlyWinner_1 : state_1; // @[Arbiter.scala 117:30]
+  assign monitor_io_in_d_bits_corrupt = muxStateEarly_1 & beats1_opdata; // @[Mux.scala 27:73]
+  always @(posedge clock) begin
+    idle <= reset | _GEN_12; // @[Error.scala 44:{23,23}]
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 1'h0; // @[Arbiter.scala 87:30]
+    end else if (latch) begin // @[Arbiter.scala 113:23]
+      beatsLeft <= 1'h0;
+    end else begin
+      beatsLeft <= beatsLeft - _beatsLeft_T_2;
+    end
+    if (reset) begin // @[Arbiter.scala 116:26]
+      state_1 <= 1'h0; // @[Arbiter.scala 116:26]
+    end else if (idle_1) begin // @[Arbiter.scala 117:30]
+      state_1 <= earlyWinner_1;
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (done) begin // @[Edges.scala 234:17]
+      if (da_first) begin // @[Edges.scala 235:21]
+        counter <= 1'h0;
+      end else begin
+        counter <= counter1;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(idle | da_first) & ~reset) begin
+          $fatal; // @[Error.scala 49:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~(idle | da_first)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Error.scala:49 assert (idle || da_first) // we only send Grant, never GrantData => simplified flow control below\n"
+            ); // @[Error.scala 49:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~da_valid | earlyWinner_1) & _T_3) begin
+          $fatal; // @[Arbiter.scala 107:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3 & ~(~da_valid | earlyWinner_1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:107 assert (!earlyValids.reduce(_||_) || earlyWinner.reduce(_||_))\n"
+            ); // @[Arbiter.scala 107:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_22 | da_valid) & _T_3) begin
+          $fatal; // @[Arbiter.scala 108:14]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_3 & ~(_T_22 | da_valid)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at Arbiter.scala:108 assert (!validQuals .reduce(_||_) || validQuals .reduce(_||_))\n"
+            ); // @[Arbiter.scala 108:14]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  idle = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  beatsLeft = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  state_1 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  counter = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBusBypass(
+  input         clock,
+  input         reset,
+  input         auto_node_out_out_a_ready,
+  output        auto_node_out_out_a_valid,
+  output [2:0]  auto_node_out_out_a_bits_opcode,
+  output [8:0]  auto_node_out_out_a_bits_address,
+  output [31:0] auto_node_out_out_a_bits_data,
+  output        auto_node_out_out_d_ready,
+  input         auto_node_out_out_d_valid,
+  input  [2:0]  auto_node_out_out_d_bits_opcode,
+  input  [1:0]  auto_node_out_out_d_bits_param,
+  input  [1:0]  auto_node_out_out_d_bits_size,
+  input         auto_node_out_out_d_bits_source,
+  input         auto_node_out_out_d_bits_sink,
+  input         auto_node_out_out_d_bits_denied,
+  input  [31:0] auto_node_out_out_d_bits_data,
+  input         auto_node_out_out_d_bits_corrupt,
+  output        auto_node_in_in_a_ready,
+  input         auto_node_in_in_a_valid,
+  input  [2:0]  auto_node_in_in_a_bits_opcode,
+  input  [8:0]  auto_node_in_in_a_bits_address,
+  input  [31:0] auto_node_in_in_a_bits_data,
+  input         auto_node_in_in_d_ready,
+  output        auto_node_in_in_d_valid,
+  output [2:0]  auto_node_in_in_d_bits_opcode,
+  output [1:0]  auto_node_in_in_d_bits_param,
+  output [1:0]  auto_node_in_in_d_bits_size,
+  output        auto_node_in_in_d_bits_sink,
+  output        auto_node_in_in_d_bits_denied,
+  output [31:0] auto_node_in_in_d_bits_data,
+  output        auto_node_in_in_d_bits_corrupt,
+  input         io_bypass
+);
+  wire  bar_clock; // @[BusBypass.scala 17:33]
+  wire  bar_reset; // @[BusBypass.scala 17:33]
+  wire  bar_auto_in_a_ready; // @[BusBypass.scala 17:33]
+  wire  bar_auto_in_a_valid; // @[BusBypass.scala 17:33]
+  wire [2:0] bar_auto_in_a_bits_opcode; // @[BusBypass.scala 17:33]
+  wire [8:0] bar_auto_in_a_bits_address; // @[BusBypass.scala 17:33]
+  wire [31:0] bar_auto_in_a_bits_data; // @[BusBypass.scala 17:33]
+  wire  bar_auto_in_d_ready; // @[BusBypass.scala 17:33]
+  wire  bar_auto_in_d_valid; // @[BusBypass.scala 17:33]
+  wire [2:0] bar_auto_in_d_bits_opcode; // @[BusBypass.scala 17:33]
+  wire [1:0] bar_auto_in_d_bits_param; // @[BusBypass.scala 17:33]
+  wire [1:0] bar_auto_in_d_bits_size; // @[BusBypass.scala 17:33]
+  wire  bar_auto_in_d_bits_sink; // @[BusBypass.scala 17:33]
+  wire  bar_auto_in_d_bits_denied; // @[BusBypass.scala 17:33]
+  wire [31:0] bar_auto_in_d_bits_data; // @[BusBypass.scala 17:33]
+  wire  bar_auto_in_d_bits_corrupt; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_1_a_ready; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_1_a_valid; // @[BusBypass.scala 17:33]
+  wire [2:0] bar_auto_out_1_a_bits_opcode; // @[BusBypass.scala 17:33]
+  wire [8:0] bar_auto_out_1_a_bits_address; // @[BusBypass.scala 17:33]
+  wire [31:0] bar_auto_out_1_a_bits_data; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_1_d_ready; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_1_d_valid; // @[BusBypass.scala 17:33]
+  wire [2:0] bar_auto_out_1_d_bits_opcode; // @[BusBypass.scala 17:33]
+  wire [1:0] bar_auto_out_1_d_bits_param; // @[BusBypass.scala 17:33]
+  wire [1:0] bar_auto_out_1_d_bits_size; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_1_d_bits_source; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_1_d_bits_sink; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_1_d_bits_denied; // @[BusBypass.scala 17:33]
+  wire [31:0] bar_auto_out_1_d_bits_data; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_1_d_bits_corrupt; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_0_a_ready; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_0_a_valid; // @[BusBypass.scala 17:33]
+  wire [2:0] bar_auto_out_0_a_bits_opcode; // @[BusBypass.scala 17:33]
+  wire [127:0] bar_auto_out_0_a_bits_address; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_0_d_ready; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_0_d_valid; // @[BusBypass.scala 17:33]
+  wire [2:0] bar_auto_out_0_d_bits_opcode; // @[BusBypass.scala 17:33]
+  wire [1:0] bar_auto_out_0_d_bits_size; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_0_d_bits_denied; // @[BusBypass.scala 17:33]
+  wire  bar_auto_out_0_d_bits_corrupt; // @[BusBypass.scala 17:33]
+  wire  bar_io_bypass; // @[BusBypass.scala 17:33]
+  wire  error_clock; // @[BusBypass.scala 27:40]
+  wire  error_reset; // @[BusBypass.scala 27:40]
+  wire  error_auto_in_a_ready; // @[BusBypass.scala 27:40]
+  wire  error_auto_in_a_valid; // @[BusBypass.scala 27:40]
+  wire [2:0] error_auto_in_a_bits_opcode; // @[BusBypass.scala 27:40]
+  wire [127:0] error_auto_in_a_bits_address; // @[BusBypass.scala 27:40]
+  wire  error_auto_in_d_ready; // @[BusBypass.scala 27:40]
+  wire  error_auto_in_d_valid; // @[BusBypass.scala 27:40]
+  wire [2:0] error_auto_in_d_bits_opcode; // @[BusBypass.scala 27:40]
+  wire [1:0] error_auto_in_d_bits_size; // @[BusBypass.scala 27:40]
+  wire  error_auto_in_d_bits_denied; // @[BusBypass.scala 27:40]
+  wire  error_auto_in_d_bits_corrupt; // @[BusBypass.scala 27:40]
+  TLBusBypassBar bar ( // @[BusBypass.scala 17:33]
+    .clock(bar_clock),
+    .reset(bar_reset),
+    .auto_in_a_ready(bar_auto_in_a_ready),
+    .auto_in_a_valid(bar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(bar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_address(bar_auto_in_a_bits_address),
+    .auto_in_a_bits_data(bar_auto_in_a_bits_data),
+    .auto_in_d_ready(bar_auto_in_d_ready),
+    .auto_in_d_valid(bar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(bar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(bar_auto_in_d_bits_param),
+    .auto_in_d_bits_size(bar_auto_in_d_bits_size),
+    .auto_in_d_bits_sink(bar_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(bar_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(bar_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(bar_auto_in_d_bits_corrupt),
+    .auto_out_1_a_ready(bar_auto_out_1_a_ready),
+    .auto_out_1_a_valid(bar_auto_out_1_a_valid),
+    .auto_out_1_a_bits_opcode(bar_auto_out_1_a_bits_opcode),
+    .auto_out_1_a_bits_address(bar_auto_out_1_a_bits_address),
+    .auto_out_1_a_bits_data(bar_auto_out_1_a_bits_data),
+    .auto_out_1_d_ready(bar_auto_out_1_d_ready),
+    .auto_out_1_d_valid(bar_auto_out_1_d_valid),
+    .auto_out_1_d_bits_opcode(bar_auto_out_1_d_bits_opcode),
+    .auto_out_1_d_bits_param(bar_auto_out_1_d_bits_param),
+    .auto_out_1_d_bits_size(bar_auto_out_1_d_bits_size),
+    .auto_out_1_d_bits_source(bar_auto_out_1_d_bits_source),
+    .auto_out_1_d_bits_sink(bar_auto_out_1_d_bits_sink),
+    .auto_out_1_d_bits_denied(bar_auto_out_1_d_bits_denied),
+    .auto_out_1_d_bits_data(bar_auto_out_1_d_bits_data),
+    .auto_out_1_d_bits_corrupt(bar_auto_out_1_d_bits_corrupt),
+    .auto_out_0_a_ready(bar_auto_out_0_a_ready),
+    .auto_out_0_a_valid(bar_auto_out_0_a_valid),
+    .auto_out_0_a_bits_opcode(bar_auto_out_0_a_bits_opcode),
+    .auto_out_0_a_bits_address(bar_auto_out_0_a_bits_address),
+    .auto_out_0_d_ready(bar_auto_out_0_d_ready),
+    .auto_out_0_d_valid(bar_auto_out_0_d_valid),
+    .auto_out_0_d_bits_opcode(bar_auto_out_0_d_bits_opcode),
+    .auto_out_0_d_bits_size(bar_auto_out_0_d_bits_size),
+    .auto_out_0_d_bits_denied(bar_auto_out_0_d_bits_denied),
+    .auto_out_0_d_bits_corrupt(bar_auto_out_0_d_bits_corrupt),
+    .io_bypass(bar_io_bypass)
+  );
+  TLError_1 error ( // @[BusBypass.scala 27:40]
+    .clock(error_clock),
+    .reset(error_reset),
+    .auto_in_a_ready(error_auto_in_a_ready),
+    .auto_in_a_valid(error_auto_in_a_valid),
+    .auto_in_a_bits_opcode(error_auto_in_a_bits_opcode),
+    .auto_in_a_bits_address(error_auto_in_a_bits_address),
+    .auto_in_d_ready(error_auto_in_d_ready),
+    .auto_in_d_valid(error_auto_in_d_valid),
+    .auto_in_d_bits_opcode(error_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(error_auto_in_d_bits_size),
+    .auto_in_d_bits_denied(error_auto_in_d_bits_denied),
+    .auto_in_d_bits_corrupt(error_auto_in_d_bits_corrupt)
+  );
+  assign auto_node_out_out_a_valid = bar_auto_out_1_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_node_out_out_a_bits_opcode = bar_auto_out_1_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_node_out_out_a_bits_address = bar_auto_out_1_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_node_out_out_a_bits_data = bar_auto_out_1_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_node_out_out_d_ready = bar_auto_out_1_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_node_in_in_a_ready = bar_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_node_in_in_d_valid = bar_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_node_in_in_d_bits_opcode = bar_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_node_in_in_d_bits_param = bar_auto_in_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_node_in_in_d_bits_size = bar_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_node_in_in_d_bits_sink = bar_auto_in_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_node_in_in_d_bits_denied = bar_auto_in_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_node_in_in_d_bits_data = bar_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_node_in_in_d_bits_corrupt = bar_auto_in_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign bar_clock = clock;
+  assign bar_reset = reset;
+  assign bar_auto_in_a_valid = auto_node_in_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bar_auto_in_a_bits_opcode = auto_node_in_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bar_auto_in_a_bits_address = auto_node_in_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bar_auto_in_a_bits_data = auto_node_in_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bar_auto_in_d_ready = auto_node_in_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bar_auto_out_1_a_ready = auto_node_out_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_valid = auto_node_out_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_bits_opcode = auto_node_out_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_bits_param = auto_node_out_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_bits_size = auto_node_out_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_bits_source = auto_node_out_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_bits_sink = auto_node_out_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_bits_denied = auto_node_out_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_bits_data = auto_node_out_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_1_d_bits_corrupt = auto_node_out_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bar_auto_out_0_a_ready = error_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign bar_auto_out_0_d_valid = error_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign bar_auto_out_0_d_bits_opcode = error_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign bar_auto_out_0_d_bits_size = error_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign bar_auto_out_0_d_bits_denied = error_auto_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign bar_auto_out_0_d_bits_corrupt = error_auto_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign bar_io_bypass = io_bypass; // @[BusBypass.scala 44:26]
+  assign error_clock = clock;
+  assign error_reset = reset;
+  assign error_auto_in_a_valid = bar_auto_out_0_a_valid; // @[LazyModule.scala 298:16]
+  assign error_auto_in_a_bits_opcode = bar_auto_out_0_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign error_auto_in_a_bits_address = bar_auto_out_0_a_bits_address; // @[LazyModule.scala 298:16]
+  assign error_auto_in_d_ready = bar_auto_out_0_d_ready; // @[LazyModule.scala 298:16]
+endmodule
+module TLMonitor_52(
+  input        clock,
+  input        reset,
+  input        io_in_a_ready,
+  input        io_in_a_valid,
+  input  [2:0] io_in_a_bits_opcode,
+  input  [8:0] io_in_a_bits_address,
+  input        io_in_d_ready,
+  input        io_in_d_valid,
+  input  [2:0] io_in_d_bits_opcode,
+  input  [1:0] io_in_d_bits_param,
+  input  [1:0] io_in_d_bits_size,
+  input        io_in_d_bits_source,
+  input        io_in_d_bits_sink,
+  input        io_in_d_bits_denied,
+  input        io_in_d_bits_corrupt
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire [8:0] _is_aligned_T = io_in_a_bits_address & 9'h3; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 9'h0; // @[Edges.scala 20:24]
+  wire [9:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_15 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [9:0] _T_23 = $signed(_T_7) & -10'sh40; // @[Parameters.scala 137:52]
+  wire  _T_24 = $signed(_T_23) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_25 = io_in_a_bits_address ^ 9'h44; // @[Parameters.scala 137:31]
+  wire [9:0] _T_26 = {1'b0,$signed(_T_25)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_28 = $signed(_T_26) & -10'shc; // @[Parameters.scala 137:52]
+  wire  _T_29 = $signed(_T_28) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_30 = io_in_a_bits_address ^ 9'h58; // @[Parameters.scala 137:31]
+  wire [9:0] _T_31 = {1'b0,$signed(_T_30)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_33 = $signed(_T_31) & -10'sh8; // @[Parameters.scala 137:52]
+  wire  _T_34 = $signed(_T_33) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_35 = io_in_a_bits_address ^ 9'h60; // @[Parameters.scala 137:31]
+  wire [9:0] _T_36 = {1'b0,$signed(_T_35)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_38 = $signed(_T_36) & -10'sh20; // @[Parameters.scala 137:52]
+  wire  _T_39 = $signed(_T_38) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_40 = io_in_a_bits_address ^ 9'h80; // @[Parameters.scala 137:31]
+  wire [9:0] _T_41 = {1'b0,$signed(_T_40)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_43 = $signed(_T_41) & -10'sh80; // @[Parameters.scala 137:52]
+  wire  _T_44 = $signed(_T_43) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_45 = io_in_a_bits_address ^ 9'h100; // @[Parameters.scala 137:31]
+  wire [9:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_48 = $signed(_T_46) & -10'sh100; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 10'sh0; // @[Parameters.scala 137:67]
+  wire  _T_54 = _T_24 | _T_29 | _T_34 | _T_39 | _T_44 | _T_49; // @[Parameters.scala 671:42]
+  wire  _T_129 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_247 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_381 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_446 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_506 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_566 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_630 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_1 = ~io_in_d_bits_source; // @[Parameters.scala 46:9]
+  wire  _T_634 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_638 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_642 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_646 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_650 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_654 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_665 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_669 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_682 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_702 = _T_650 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_711 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_728 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_746 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [8:0] address; // @[Monitor.scala 388:22]
+  wire  _T_776 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_777 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_793 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] param_1; // @[Monitor.scala 536:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg  source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_800 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_801 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_805 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_809 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_813 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_817 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_821 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg  inflight; // @[Monitor.scala 611:27]
+  reg [3:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [3:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [2:0] _GEN_71 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [3:0] _a_opcode_lookup_T = {{1'd0}, _GEN_71}; // @[Monitor.scala 634:69]
+  wire [3:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_72 = {{12'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_72 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [3:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_75 = {{12'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_75 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_827 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [1:0] _GEN_15 = io_in_a_valid & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_830 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [18:0] _a_opcodes_set_T_1 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? 3'h5 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [17:0] _a_sizes_set_T_1 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire  _T_834 = ~inflight; // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = a_first_done & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [17:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 18'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_838 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_840 = ~_T_634; // @[Monitor.scala 671:74]
+  wire  _T_841 = io_in_d_valid & d_first_1 & ~_T_634; // @[Monitor.scala 671:71]
+  wire [1:0] _d_clr_wo_ready_T = 2'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_634 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 671:90 672:22]
+  wire [30:0] _GEN_1 = {{15'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [30:0] _d_opcodes_clr_T_5 = _GEN_1 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [1:0] _GEN_22 = d_first_done & d_first_1 & _T_840 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = d_first_done & d_first_1 & _T_840 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire  same_cycle_resp = _T_827 & _source_ok_T_1; // @[Monitor.scala 681:88]
+  wire  _T_853 = inflight >> io_in_d_bits_source | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_858 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_859 = io_in_d_bits_opcode == _GEN_32 | _T_858; // @[Monitor.scala 685:77]
+  wire  _T_863 = 2'h2 == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_870 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_871 = io_in_d_bits_opcode == _GEN_48 | _T_870; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_79 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_875 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_885 = _T_838 & a_first_1 & io_in_a_valid & _source_ok_T_1 & _T_840; // @[Monitor.scala 694:116]
+  wire  _T_887 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  a_set_wo_ready = _GEN_15[0];
+  wire  d_clr_wo_ready = _GEN_21[0];
+  wire  _T_894 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire  a_set = _GEN_16[0];
+  wire  d_clr = _GEN_22[0];
+  wire [3:0] a_opcodes_set = _GEN_19[3:0];
+  wire [3:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [3:0] d_opcodes_clr = _GEN_23[3:0];
+  wire [3:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [3:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [3:0] a_sizes_set = _GEN_20[3:0];
+  wire [3:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [3:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_903 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [3:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [3:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_84 = {{12'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_84 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_929 = io_in_d_valid & d_first_2 & _T_634; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_68 = d_first_done & d_first_2 & _T_634 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 785:21]
+  wire  _T_937 = 1'h0 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_947 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [3:0] d_opcodes_clr_1 = _GEN_68[3:0];
+  wire [3:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [3:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      denied <= io_in_d_bits_denied; // @[Monitor.scala 555:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 1'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= (inflight | a_set) & ~d_clr; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 4'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 4'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 4'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_15 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_129 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_54 & (io_in_a_valid & _T_247 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~reset & ~_T_54) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_247 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_54 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_54) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_381 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_446 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_506 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_566 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_d_valid & _T_634 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_669 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_669) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_d_valid & _T_654 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_665 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_665) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_669 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_669) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_702 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_702) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_d_valid & _T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_711 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_711 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (io_in_d_valid & _T_711 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_711 & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_d_valid & _T_711 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_711 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_d_valid & _T_711 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_711 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_728 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (io_in_d_valid & _T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_728 & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_702 & (io_in_d_valid & _T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_728 & _T_2 & ~_T_702) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_d_valid & _T_728 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_728 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_746 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_746 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (io_in_d_valid & _T_746 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_746 & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (io_in_d_valid & _T_746 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_746 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_650 & (io_in_d_valid & _T_746 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_746 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_777 & (_T_776 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~reset & ~_T_777) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_793 & (_T_776 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~reset & ~_T_793) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_801 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_801) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_805 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_805) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_809 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_809) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_813 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_813) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_817 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_817) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_821 & (_T_800 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & _T_2 & ~_T_821) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_834 & (_T_830 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_830 & ~reset & ~_T_834) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_853 & (_T_841 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & _T_2 & ~_T_853) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_859 & (_T_841 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & same_cycle_resp & _T_2 & ~_T_859) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_863 & (_T_841 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & same_cycle_resp & _T_2 & ~_T_863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_871 & (_T_841 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & ~same_cycle_resp & _T_2 & ~_T_871) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_875 & (_T_841 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & ~same_cycle_resp & _T_2 & ~_T_875) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_887 & (_T_885 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_885 & _T_2 & ~_T_887) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_894 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_894) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 3 (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_903 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_903) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Debug.scala:653:46)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_937 & (_T_929 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_929 & _T_2 & ~_T_937) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_947 & (_T_929 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_929 & _T_2 & ~_T_947) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:653:46)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  address = _RAND_2[8:0];
+  _RAND_3 = {1{`RANDOM}};
+  d_first_counter = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  opcode_1 = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  param_1 = _RAND_5[1:0];
+  _RAND_6 = {1{`RANDOM}};
+  size_1 = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  source_1 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  sink = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  denied = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[3:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[3:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_17[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncQueueSource_1(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [8:0]  io_enq_bits_address,
+  input  [31:0] io_enq_bits_data,
+  output [2:0]  io_async_mem_0_opcode,
+  output [8:0]  io_async_mem_0_address,
+  output [31:0] io_async_mem_0_data,
+  input         io_async_ridx,
+  output        io_async_widx,
+  input         io_async_safe_ridx_valid,
+  output        io_async_safe_widx_valid,
+  output        io_async_safe_source_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+`endif // RANDOMIZE_REG_INIT
+  wire  ridx_ridx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  source_valid_0_io_in; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_io_out; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_clock; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_reset; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_1_io_in; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_io_out; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_clock; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_reset; // @[AsyncQueue.scala 101:32]
+  wire  sink_extend_io_in; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_io_out; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_clock; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_reset; // @[AsyncQueue.scala 103:30]
+  wire  sink_valid_io_in; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_io_out; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_clock; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_reset; // @[AsyncQueue.scala 104:30]
+  reg [2:0] mem_0_opcode; // @[AsyncQueue.scala 80:16]
+  reg [8:0] mem_0_address; // @[AsyncQueue.scala 80:16]
+  reg [31:0] mem_0_data; // @[AsyncQueue.scala 80:16]
+  wire  _widx_T_1 = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  sink_ready = sink_valid_io_out;
+  wire  _widx_T_2 = ~sink_ready; // @[AsyncQueue.scala 81:79]
+  reg  widx_widx_bin; // @[AsyncQueue.scala 52:25]
+  wire  widx_incremented = _widx_T_2 ? 1'h0 : widx_widx_bin + _widx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  ridx = ridx_ridx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  reg  ready_reg; // @[AsyncQueue.scala 88:56]
+  reg  widx_gray; // @[AsyncQueue.scala 91:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 ridx_ridx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(ridx_ridx_gray_clock),
+    .reset(ridx_ridx_gray_reset),
+    .io_d(ridx_ridx_gray_io_d),
+    .io_q(ridx_ridx_gray_io_q)
+  );
+  AsyncValidSync source_valid_0 ( // @[AsyncQueue.scala 100:32]
+    .io_in(source_valid_0_io_in),
+    .io_out(source_valid_0_io_out),
+    .clock(source_valid_0_clock),
+    .reset(source_valid_0_reset)
+  );
+  AsyncValidSync source_valid_1 ( // @[AsyncQueue.scala 101:32]
+    .io_in(source_valid_1_io_in),
+    .io_out(source_valid_1_io_out),
+    .clock(source_valid_1_clock),
+    .reset(source_valid_1_reset)
+  );
+  AsyncValidSync sink_extend ( // @[AsyncQueue.scala 103:30]
+    .io_in(sink_extend_io_in),
+    .io_out(sink_extend_io_out),
+    .clock(sink_extend_clock),
+    .reset(sink_extend_reset)
+  );
+  AsyncValidSync sink_valid ( // @[AsyncQueue.scala 104:30]
+    .io_in(sink_valid_io_in),
+    .io_out(sink_valid_io_out),
+    .clock(sink_valid_clock),
+    .reset(sink_valid_reset)
+  );
+  assign io_enq_ready = ready_reg & sink_ready; // @[AsyncQueue.scala 89:29]
+  assign io_async_mem_0_opcode = mem_0_opcode; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_address = mem_0_address; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_data = mem_0_data; // @[AsyncQueue.scala 96:31]
+  assign io_async_widx = widx_gray; // @[AsyncQueue.scala 92:17]
+  assign io_async_safe_widx_valid = source_valid_1_io_out; // @[AsyncQueue.scala 117:20]
+  assign io_async_safe_source_reset_n = ~reset; // @[AsyncQueue.scala 121:27]
+  assign ridx_ridx_gray_clock = clock;
+  assign ridx_ridx_gray_reset = reset;
+  assign ridx_ridx_gray_io_d = io_async_ridx; // @[ShiftReg.scala 47:16]
+  assign source_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 115:26]
+  assign source_valid_0_clock = clock; // @[AsyncQueue.scala 110:26]
+  assign source_valid_0_reset = reset; // @[AsyncQueue.scala 105:65]
+  assign source_valid_1_io_in = source_valid_0_io_out; // @[AsyncQueue.scala 116:26]
+  assign source_valid_1_clock = clock; // @[AsyncQueue.scala 111:26]
+  assign source_valid_1_reset = reset; // @[AsyncQueue.scala 106:65]
+  assign sink_extend_io_in = io_async_safe_ridx_valid; // @[AsyncQueue.scala 118:23]
+  assign sink_extend_clock = clock; // @[AsyncQueue.scala 112:26]
+  assign sink_extend_reset = reset; // @[AsyncQueue.scala 107:65]
+  assign sink_valid_io_in = sink_extend_io_out; // @[AsyncQueue.scala 119:22]
+  assign sink_valid_clock = clock; // @[AsyncQueue.scala 113:26]
+  assign sink_valid_reset = reset; // @[AsyncQueue.scala 108:35]
+  always @(posedge clock) begin
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_opcode <= io_enq_bits_opcode; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_address <= io_enq_bits_address; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_data <= io_enq_bits_data; // @[AsyncQueue.scala 86:37]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      widx_widx_bin <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_widx_bin <= 1'h0;
+    end else begin
+      widx_widx_bin <= widx_widx_bin + _widx_T_1;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 83:26]
+      ready_reg <= 1'h0;
+    end else begin
+      ready_reg <= sink_ready & widx_incremented != (ridx ^ 1'h1);
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      widx_gray <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_gray <= 1'h0;
+    end else begin
+      widx_gray <= widx_widx_bin + _widx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  mem_0_opcode = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  mem_0_address = _RAND_1[8:0];
+  _RAND_2 = {1{`RANDOM}};
+  mem_0_data = _RAND_2[31:0];
+  _RAND_3 = {1{`RANDOM}};
+  widx_widx_bin = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  ready_reg = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  widx_gray = _RAND_5[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    widx_widx_bin = 1'h0;
+  end
+  if (reset) begin
+    ready_reg = 1'h0;
+  end
+  if (reset) begin
+    widx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockCrossingReg_w43(
+  input         clock,
+  input  [42:0] io_d,
+  output [42:0] io_q,
+  input         io_en
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [63:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [42:0] cdc_reg; // @[Reg.scala 16:16]
+  assign io_q = cdc_reg; // @[SynchronizerReg.scala 202:8]
+  always @(posedge clock) begin
+    if (io_en) begin // @[Reg.scala 17:18]
+      cdc_reg <= io_d; // @[Reg.scala 17:22]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {2{`RANDOM}};
+  cdc_reg = _RAND_0[42:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncQueueSink_1(
+  input         clock,
+  input         reset,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [1:0]  io_deq_bits_param,
+  output [1:0]  io_deq_bits_size,
+  output        io_deq_bits_source,
+  output        io_deq_bits_sink,
+  output        io_deq_bits_denied,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt,
+  input  [2:0]  io_async_mem_0_opcode,
+  input  [1:0]  io_async_mem_0_size,
+  input         io_async_mem_0_source,
+  input  [31:0] io_async_mem_0_data,
+  output        io_async_ridx,
+  input         io_async_widx,
+  output        io_async_safe_ridx_valid,
+  input         io_async_safe_widx_valid,
+  output        io_async_safe_sink_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  wire  widx_widx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  io_deq_bits_deq_bits_reg_clock; // @[SynchronizerReg.scala 207:25]
+  wire [42:0] io_deq_bits_deq_bits_reg_io_d; // @[SynchronizerReg.scala 207:25]
+  wire [42:0] io_deq_bits_deq_bits_reg_io_q; // @[SynchronizerReg.scala 207:25]
+  wire  io_deq_bits_deq_bits_reg_io_en; // @[SynchronizerReg.scala 207:25]
+  wire  sink_valid_0_io_in; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_io_out; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_clock; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_reset; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_1_io_in; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_io_out; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_clock; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_reset; // @[AsyncQueue.scala 169:33]
+  wire  source_extend_io_in; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_io_out; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_clock; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_reset; // @[AsyncQueue.scala 171:31]
+  wire  source_valid_io_in; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_io_out; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_clock; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_reset; // @[AsyncQueue.scala 172:31]
+  wire  _ridx_T_1 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  wire  source_ready = source_valid_io_out;
+  wire  _ridx_T_2 = ~source_ready; // @[AsyncQueue.scala 144:79]
+  reg  ridx_ridx_bin; // @[AsyncQueue.scala 52:25]
+  wire  ridx_incremented = _ridx_T_2 ? 1'h0 : ridx_ridx_bin + _ridx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  widx = widx_widx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [34:0] io_deq_bits_deq_bits_reg_io_d_lo = {2'h0,io_async_mem_0_data,1'h0}; // @[SynchronizerReg.scala 209:24]
+  wire [7:0] io_deq_bits_deq_bits_reg_io_d_hi = {io_async_mem_0_opcode,2'h0,io_async_mem_0_size,io_async_mem_0_source}; // @[SynchronizerReg.scala 209:24]
+  wire [42:0] _io_deq_bits_WIRE_1 = io_deq_bits_deq_bits_reg_io_q;
+  reg  valid_reg; // @[AsyncQueue.scala 161:56]
+  reg  ridx_gray; // @[AsyncQueue.scala 164:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 widx_widx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(widx_widx_gray_clock),
+    .reset(widx_widx_gray_reset),
+    .io_d(widx_widx_gray_io_d),
+    .io_q(widx_widx_gray_io_q)
+  );
+  ClockCrossingReg_w43 io_deq_bits_deq_bits_reg ( // @[SynchronizerReg.scala 207:25]
+    .clock(io_deq_bits_deq_bits_reg_clock),
+    .io_d(io_deq_bits_deq_bits_reg_io_d),
+    .io_q(io_deq_bits_deq_bits_reg_io_q),
+    .io_en(io_deq_bits_deq_bits_reg_io_en)
+  );
+  AsyncValidSync sink_valid_0 ( // @[AsyncQueue.scala 168:33]
+    .io_in(sink_valid_0_io_in),
+    .io_out(sink_valid_0_io_out),
+    .clock(sink_valid_0_clock),
+    .reset(sink_valid_0_reset)
+  );
+  AsyncValidSync sink_valid_1 ( // @[AsyncQueue.scala 169:33]
+    .io_in(sink_valid_1_io_in),
+    .io_out(sink_valid_1_io_out),
+    .clock(sink_valid_1_clock),
+    .reset(sink_valid_1_reset)
+  );
+  AsyncValidSync source_extend ( // @[AsyncQueue.scala 171:31]
+    .io_in(source_extend_io_in),
+    .io_out(source_extend_io_out),
+    .clock(source_extend_clock),
+    .reset(source_extend_reset)
+  );
+  AsyncValidSync source_valid ( // @[AsyncQueue.scala 172:31]
+    .io_in(source_valid_io_in),
+    .io_out(source_valid_io_out),
+    .clock(source_valid_clock),
+    .reset(source_valid_reset)
+  );
+  assign io_deq_valid = valid_reg & source_ready; // @[AsyncQueue.scala 162:29]
+  assign io_deq_bits_opcode = _io_deq_bits_WIRE_1[42:40]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_param = _io_deq_bits_WIRE_1[39:38]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_size = _io_deq_bits_WIRE_1[37:36]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_source = _io_deq_bits_WIRE_1[35]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_sink = _io_deq_bits_WIRE_1[34]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_denied = _io_deq_bits_WIRE_1[33]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_data = _io_deq_bits_WIRE_1[32:1]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_corrupt = _io_deq_bits_WIRE_1[0]; // @[SynchronizerReg.scala 211:26]
+  assign io_async_ridx = ridx_gray; // @[AsyncQueue.scala 165:17]
+  assign io_async_safe_ridx_valid = sink_valid_1_io_out; // @[AsyncQueue.scala 185:20]
+  assign io_async_safe_sink_reset_n = ~reset; // @[AsyncQueue.scala 189:25]
+  assign widx_widx_gray_clock = clock;
+  assign widx_widx_gray_reset = reset;
+  assign widx_widx_gray_io_d = io_async_widx; // @[ShiftReg.scala 47:16]
+  assign io_deq_bits_deq_bits_reg_clock = clock;
+  assign io_deq_bits_deq_bits_reg_io_d = {io_deq_bits_deq_bits_reg_io_d_hi,io_deq_bits_deq_bits_reg_io_d_lo}; // @[SynchronizerReg.scala 209:24]
+  assign io_deq_bits_deq_bits_reg_io_en = source_ready & ridx_incremented != widx; // @[AsyncQueue.scala 146:28]
+  assign sink_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 183:24]
+  assign sink_valid_0_clock = clock; // @[AsyncQueue.scala 178:25]
+  assign sink_valid_0_reset = reset; // @[AsyncQueue.scala 173:66]
+  assign sink_valid_1_io_in = sink_valid_0_io_out; // @[AsyncQueue.scala 184:24]
+  assign sink_valid_1_clock = clock; // @[AsyncQueue.scala 179:25]
+  assign sink_valid_1_reset = reset; // @[AsyncQueue.scala 174:66]
+  assign source_extend_io_in = io_async_safe_widx_valid; // @[AsyncQueue.scala 186:25]
+  assign source_extend_clock = clock; // @[AsyncQueue.scala 180:25]
+  assign source_extend_reset = reset; // @[AsyncQueue.scala 175:66]
+  assign source_valid_io_in = source_extend_io_out; // @[AsyncQueue.scala 187:24]
+  assign source_valid_clock = clock; // @[AsyncQueue.scala 181:25]
+  assign source_valid_reset = reset; // @[AsyncQueue.scala 176:34]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      ridx_ridx_bin <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_ridx_bin <= 1'h0;
+    end else begin
+      ridx_ridx_bin <= ridx_ridx_bin + _ridx_T_1;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 146:28]
+      valid_reg <= 1'h0;
+    end else begin
+      valid_reg <= source_ready & ridx_incremented != widx;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      ridx_gray <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_gray <= 1'h0;
+    end else begin
+      ridx_gray <= ridx_ridx_bin + _ridx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ridx_ridx_bin = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  valid_reg = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ridx_gray = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    ridx_ridx_bin = 1'h0;
+  end
+  if (reset) begin
+    valid_reg = 1'h0;
+  end
+  if (reset) begin
+    ridx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLAsyncCrossingSource_1(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [8:0]  auto_in_a_bits_address,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_param,
+  output [1:0]  auto_in_d_bits_size,
+  output        auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [31:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  output [2:0]  auto_out_a_mem_0_opcode,
+  output [8:0]  auto_out_a_mem_0_address,
+  output [31:0] auto_out_a_mem_0_data,
+  input         auto_out_a_ridx,
+  output        auto_out_a_widx,
+  input         auto_out_a_safe_ridx_valid,
+  output        auto_out_a_safe_widx_valid,
+  output        auto_out_a_safe_source_reset_n,
+  input  [2:0]  auto_out_d_mem_0_opcode,
+  input  [1:0]  auto_out_d_mem_0_size,
+  input         auto_out_d_mem_0_source,
+  input  [31:0] auto_out_d_mem_0_data,
+  output        auto_out_d_ridx,
+  input         auto_out_d_widx,
+  output        auto_out_d_safe_ridx_valid,
+  input         auto_out_d_safe_widx_valid,
+  output        auto_out_d_safe_sink_reset_n
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [8:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_sink; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_denied; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  bundleOut_0_a_source_clock; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_reset; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_enq_ready; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_enq_valid; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleOut_0_a_source_io_enq_bits_opcode; // @[AsyncQueue.scala 216:24]
+  wire [8:0] bundleOut_0_a_source_io_enq_bits_address; // @[AsyncQueue.scala 216:24]
+  wire [31:0] bundleOut_0_a_source_io_enq_bits_data; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleOut_0_a_source_io_async_mem_0_opcode; // @[AsyncQueue.scala 216:24]
+  wire [8:0] bundleOut_0_a_source_io_async_mem_0_address; // @[AsyncQueue.scala 216:24]
+  wire [31:0] bundleOut_0_a_source_io_async_mem_0_data; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_ridx; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_widx; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_safe_ridx_valid; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_safe_widx_valid; // @[AsyncQueue.scala 216:24]
+  wire  bundleOut_0_a_source_io_async_safe_source_reset_n; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_sink_clock; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_reset; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_ready; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_valid; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleIn_0_d_sink_io_deq_bits_opcode; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleIn_0_d_sink_io_deq_bits_param; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleIn_0_d_sink_io_deq_bits_size; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_bits_source; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_bits_sink; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_bits_denied; // @[AsyncQueue.scala 207:22]
+  wire [31:0] bundleIn_0_d_sink_io_deq_bits_data; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_deq_bits_corrupt; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleIn_0_d_sink_io_async_mem_0_opcode; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleIn_0_d_sink_io_async_mem_0_size; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_mem_0_source; // @[AsyncQueue.scala 207:22]
+  wire [31:0] bundleIn_0_d_sink_io_async_mem_0_data; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_ridx; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_widx; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_safe_ridx_valid; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_safe_widx_valid; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 207:22]
+  TLMonitor_52 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_param(monitor_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source),
+    .io_in_d_bits_sink(monitor_io_in_d_bits_sink),
+    .io_in_d_bits_denied(monitor_io_in_d_bits_denied),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  AsyncQueueSource_1 bundleOut_0_a_source ( // @[AsyncQueue.scala 216:24]
+    .clock(bundleOut_0_a_source_clock),
+    .reset(bundleOut_0_a_source_reset),
+    .io_enq_ready(bundleOut_0_a_source_io_enq_ready),
+    .io_enq_valid(bundleOut_0_a_source_io_enq_valid),
+    .io_enq_bits_opcode(bundleOut_0_a_source_io_enq_bits_opcode),
+    .io_enq_bits_address(bundleOut_0_a_source_io_enq_bits_address),
+    .io_enq_bits_data(bundleOut_0_a_source_io_enq_bits_data),
+    .io_async_mem_0_opcode(bundleOut_0_a_source_io_async_mem_0_opcode),
+    .io_async_mem_0_address(bundleOut_0_a_source_io_async_mem_0_address),
+    .io_async_mem_0_data(bundleOut_0_a_source_io_async_mem_0_data),
+    .io_async_ridx(bundleOut_0_a_source_io_async_ridx),
+    .io_async_widx(bundleOut_0_a_source_io_async_widx),
+    .io_async_safe_ridx_valid(bundleOut_0_a_source_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(bundleOut_0_a_source_io_async_safe_widx_valid),
+    .io_async_safe_source_reset_n(bundleOut_0_a_source_io_async_safe_source_reset_n)
+  );
+  AsyncQueueSink_1 bundleIn_0_d_sink ( // @[AsyncQueue.scala 207:22]
+    .clock(bundleIn_0_d_sink_clock),
+    .reset(bundleIn_0_d_sink_reset),
+    .io_deq_ready(bundleIn_0_d_sink_io_deq_ready),
+    .io_deq_valid(bundleIn_0_d_sink_io_deq_valid),
+    .io_deq_bits_opcode(bundleIn_0_d_sink_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleIn_0_d_sink_io_deq_bits_param),
+    .io_deq_bits_size(bundleIn_0_d_sink_io_deq_bits_size),
+    .io_deq_bits_source(bundleIn_0_d_sink_io_deq_bits_source),
+    .io_deq_bits_sink(bundleIn_0_d_sink_io_deq_bits_sink),
+    .io_deq_bits_denied(bundleIn_0_d_sink_io_deq_bits_denied),
+    .io_deq_bits_data(bundleIn_0_d_sink_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleIn_0_d_sink_io_deq_bits_corrupt),
+    .io_async_mem_0_opcode(bundleIn_0_d_sink_io_async_mem_0_opcode),
+    .io_async_mem_0_size(bundleIn_0_d_sink_io_async_mem_0_size),
+    .io_async_mem_0_source(bundleIn_0_d_sink_io_async_mem_0_source),
+    .io_async_mem_0_data(bundleIn_0_d_sink_io_async_mem_0_data),
+    .io_async_ridx(bundleIn_0_d_sink_io_async_ridx),
+    .io_async_widx(bundleIn_0_d_sink_io_async_widx),
+    .io_async_safe_ridx_valid(bundleIn_0_d_sink_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(bundleIn_0_d_sink_io_async_safe_widx_valid),
+    .io_async_safe_sink_reset_n(bundleIn_0_d_sink_io_async_safe_sink_reset_n)
+  );
+  assign auto_in_a_ready = bundleOut_0_a_source_io_enq_ready; // @[Nodes.scala 1210:84 AsyncQueue.scala 217:19]
+  assign auto_in_d_valid = bundleIn_0_d_sink_io_deq_valid; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_opcode = bundleIn_0_d_sink_io_deq_bits_opcode; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_param = bundleIn_0_d_sink_io_deq_bits_param; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_size = bundleIn_0_d_sink_io_deq_bits_size; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_source = bundleIn_0_d_sink_io_deq_bits_source; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_sink = bundleIn_0_d_sink_io_deq_bits_sink; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_denied = bundleIn_0_d_sink_io_deq_bits_denied; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_data = bundleIn_0_d_sink_io_deq_bits_data; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_in_d_bits_corrupt = bundleIn_0_d_sink_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign auto_out_a_mem_0_opcode = bundleOut_0_a_source_io_async_mem_0_opcode; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_address = bundleOut_0_a_source_io_async_mem_0_address; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_mem_0_data = bundleOut_0_a_source_io_async_mem_0_data; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_widx = bundleOut_0_a_source_io_async_widx; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_safe_widx_valid = bundleOut_0_a_source_io_async_safe_widx_valid; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_a_safe_source_reset_n = bundleOut_0_a_source_io_async_safe_source_reset_n; // @[Nodes.scala 1207:84 AsyncCrossing.scala 25:13]
+  assign auto_out_d_ridx = bundleIn_0_d_sink_io_async_ridx; // @[Nodes.scala 1207:84 AsyncQueue.scala 208:19]
+  assign auto_out_d_safe_ridx_valid = bundleIn_0_d_sink_io_async_safe_ridx_valid; // @[Nodes.scala 1207:84 AsyncQueue.scala 208:19]
+  assign auto_out_d_safe_sink_reset_n = bundleIn_0_d_sink_io_async_safe_sink_reset_n; // @[Nodes.scala 1207:84 AsyncQueue.scala 208:19]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleOut_0_a_source_io_enq_ready; // @[Nodes.scala 1210:84 AsyncQueue.scala 217:19]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = bundleIn_0_d_sink_io_deq_valid; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_opcode = bundleIn_0_d_sink_io_deq_bits_opcode; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_param = bundleIn_0_d_sink_io_deq_bits_param; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_size = bundleIn_0_d_sink_io_deq_bits_size; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_source = bundleIn_0_d_sink_io_deq_bits_source; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_sink = bundleIn_0_d_sink_io_deq_bits_sink; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_denied = bundleIn_0_d_sink_io_deq_bits_denied; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign monitor_io_in_d_bits_corrupt = bundleIn_0_d_sink_io_deq_bits_corrupt; // @[Nodes.scala 1210:84 AsyncCrossing.scala 26:12]
+  assign bundleOut_0_a_source_clock = clock;
+  assign bundleOut_0_a_source_reset = reset;
+  assign bundleOut_0_a_source_io_enq_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_source_io_async_ridx = auto_out_a_ridx; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleOut_0_a_source_io_async_safe_ridx_valid = auto_out_a_safe_ridx_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_clock = clock;
+  assign bundleIn_0_d_sink_reset = reset;
+  assign bundleIn_0_d_sink_io_deq_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_d_sink_io_async_mem_0_opcode = auto_out_d_mem_0_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_size = auto_out_d_mem_0_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_source = auto_out_d_mem_0_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_mem_0_data = auto_out_d_mem_0_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_widx = auto_out_d_widx; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_sink_io_async_safe_widx_valid = auto_out_d_safe_widx_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module AsyncQueueSource_2(
+  input   clock,
+  input   reset,
+  output  io_enq_ready,
+  input   io_enq_valid,
+  input   io_enq_bits_resumereq,
+  input   io_enq_bits_ackhavereset,
+  input   io_enq_bits_hrmask_0,
+  output  io_async_mem_0_resumereq,
+  output  io_async_mem_0_ackhavereset,
+  output  io_async_mem_0_hrmask_0,
+  input   io_async_ridx,
+  output  io_async_widx,
+  input   io_async_safe_ridx_valid,
+  output  io_async_safe_widx_valid,
+  output  io_async_safe_source_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+`endif // RANDOMIZE_REG_INIT
+  wire  ridx_ridx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  source_valid_0_io_in; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_io_out; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_clock; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_reset; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_1_io_in; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_io_out; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_clock; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_reset; // @[AsyncQueue.scala 101:32]
+  wire  sink_extend_io_in; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_io_out; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_clock; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_reset; // @[AsyncQueue.scala 103:30]
+  wire  sink_valid_io_in; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_io_out; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_clock; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_reset; // @[AsyncQueue.scala 104:30]
+  reg  mem_0_resumereq; // @[AsyncQueue.scala 80:16]
+  reg  mem_0_ackhavereset; // @[AsyncQueue.scala 80:16]
+  reg  mem_0_hrmask_0; // @[AsyncQueue.scala 80:16]
+  wire  _widx_T_1 = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  sink_ready = sink_valid_io_out;
+  wire  _widx_T_2 = ~sink_ready; // @[AsyncQueue.scala 81:79]
+  reg  widx_widx_bin; // @[AsyncQueue.scala 52:25]
+  wire  widx_incremented = _widx_T_2 ? 1'h0 : widx_widx_bin + _widx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  ridx = ridx_ridx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  reg  ready_reg; // @[AsyncQueue.scala 88:56]
+  reg  widx_gray; // @[AsyncQueue.scala 91:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 ridx_ridx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(ridx_ridx_gray_clock),
+    .reset(ridx_ridx_gray_reset),
+    .io_d(ridx_ridx_gray_io_d),
+    .io_q(ridx_ridx_gray_io_q)
+  );
+  AsyncValidSync source_valid_0 ( // @[AsyncQueue.scala 100:32]
+    .io_in(source_valid_0_io_in),
+    .io_out(source_valid_0_io_out),
+    .clock(source_valid_0_clock),
+    .reset(source_valid_0_reset)
+  );
+  AsyncValidSync source_valid_1 ( // @[AsyncQueue.scala 101:32]
+    .io_in(source_valid_1_io_in),
+    .io_out(source_valid_1_io_out),
+    .clock(source_valid_1_clock),
+    .reset(source_valid_1_reset)
+  );
+  AsyncValidSync sink_extend ( // @[AsyncQueue.scala 103:30]
+    .io_in(sink_extend_io_in),
+    .io_out(sink_extend_io_out),
+    .clock(sink_extend_clock),
+    .reset(sink_extend_reset)
+  );
+  AsyncValidSync sink_valid ( // @[AsyncQueue.scala 104:30]
+    .io_in(sink_valid_io_in),
+    .io_out(sink_valid_io_out),
+    .clock(sink_valid_clock),
+    .reset(sink_valid_reset)
+  );
+  assign io_enq_ready = ready_reg & sink_ready; // @[AsyncQueue.scala 89:29]
+  assign io_async_mem_0_resumereq = mem_0_resumereq; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_ackhavereset = mem_0_ackhavereset; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_hrmask_0 = mem_0_hrmask_0; // @[AsyncQueue.scala 96:31]
+  assign io_async_widx = widx_gray; // @[AsyncQueue.scala 92:17]
+  assign io_async_safe_widx_valid = source_valid_1_io_out; // @[AsyncQueue.scala 117:20]
+  assign io_async_safe_source_reset_n = ~reset; // @[AsyncQueue.scala 121:27]
+  assign ridx_ridx_gray_clock = clock;
+  assign ridx_ridx_gray_reset = reset;
+  assign ridx_ridx_gray_io_d = io_async_ridx; // @[ShiftReg.scala 47:16]
+  assign source_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 115:26]
+  assign source_valid_0_clock = clock; // @[AsyncQueue.scala 110:26]
+  assign source_valid_0_reset = reset; // @[AsyncQueue.scala 105:65]
+  assign source_valid_1_io_in = source_valid_0_io_out; // @[AsyncQueue.scala 116:26]
+  assign source_valid_1_clock = clock; // @[AsyncQueue.scala 111:26]
+  assign source_valid_1_reset = reset; // @[AsyncQueue.scala 106:65]
+  assign sink_extend_io_in = io_async_safe_ridx_valid; // @[AsyncQueue.scala 118:23]
+  assign sink_extend_clock = clock; // @[AsyncQueue.scala 112:26]
+  assign sink_extend_reset = reset; // @[AsyncQueue.scala 107:65]
+  assign sink_valid_io_in = sink_extend_io_out; // @[AsyncQueue.scala 119:22]
+  assign sink_valid_clock = clock; // @[AsyncQueue.scala 113:26]
+  assign sink_valid_reset = reset; // @[AsyncQueue.scala 108:35]
+  always @(posedge clock) begin
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_resumereq <= io_enq_bits_resumereq; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_ackhavereset <= io_enq_bits_ackhavereset; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_hrmask_0 <= io_enq_bits_hrmask_0; // @[AsyncQueue.scala 86:37]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      widx_widx_bin <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_widx_bin <= 1'h0;
+    end else begin
+      widx_widx_bin <= widx_widx_bin + _widx_T_1;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 83:26]
+      ready_reg <= 1'h0;
+    end else begin
+      ready_reg <= sink_ready & widx_incremented != (ridx ^ 1'h1);
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      widx_gray <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_gray <= 1'h0;
+    end else begin
+      widx_gray <= widx_widx_bin + _widx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  mem_0_resumereq = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  mem_0_ackhavereset = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  mem_0_hrmask_0 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  widx_widx_bin = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  ready_reg = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  widx_gray = _RAND_5[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    widx_widx_bin = 1'h0;
+  end
+  if (reset) begin
+    ready_reg = 1'h0;
+  end
+  if (reset) begin
+    widx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLDebugModuleOuterAsync(
+  output [2:0]  auto_asource_out_a_mem_0_opcode,
+  output [8:0]  auto_asource_out_a_mem_0_address,
+  output [31:0] auto_asource_out_a_mem_0_data,
+  input         auto_asource_out_a_ridx,
+  output        auto_asource_out_a_widx,
+  input         auto_asource_out_a_safe_ridx_valid,
+  output        auto_asource_out_a_safe_widx_valid,
+  output        auto_asource_out_a_safe_source_reset_n,
+  input  [2:0]  auto_asource_out_d_mem_0_opcode,
+  input  [1:0]  auto_asource_out_d_mem_0_size,
+  input         auto_asource_out_d_mem_0_source,
+  input  [31:0] auto_asource_out_d_mem_0_data,
+  output        auto_asource_out_d_ridx,
+  input         auto_asource_out_d_widx,
+  output        auto_asource_out_d_safe_ridx_valid,
+  input         auto_asource_out_d_safe_widx_valid,
+  output        auto_asource_out_d_safe_sink_reset_n,
+  output        auto_intsource_out_sync_0,
+  input         io_dmi_clock,
+  input         io_dmi_reset,
+  output        io_dmi_req_ready,
+  input         io_dmi_req_valid,
+  input  [6:0]  io_dmi_req_bits_addr,
+  input  [31:0] io_dmi_req_bits_data,
+  input  [1:0]  io_dmi_req_bits_op,
+  input         io_dmi_resp_ready,
+  output        io_dmi_resp_valid,
+  output [31:0] io_dmi_resp_bits_data,
+  output [1:0]  io_dmi_resp_bits_resp,
+  output        io_ctrl_ndreset,
+  output        io_ctrl_dmactive,
+  output        io_innerCtrl_mem_0_resumereq,
+  output        io_innerCtrl_mem_0_ackhavereset,
+  output        io_innerCtrl_mem_0_hrmask_0,
+  input         io_innerCtrl_ridx,
+  output        io_innerCtrl_widx,
+  input         io_innerCtrl_safe_ridx_valid,
+  output        io_innerCtrl_safe_widx_valid,
+  output        io_innerCtrl_safe_source_reset_n,
+  input         io_hgDebugInt_0
+);
+  wire  dmiXbar_clock; // @[Debug.scala 624:28]
+  wire  dmiXbar_reset; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_in_a_ready; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_in_a_valid; // @[Debug.scala 624:28]
+  wire [2:0] dmiXbar_auto_in_a_bits_opcode; // @[Debug.scala 624:28]
+  wire [8:0] dmiXbar_auto_in_a_bits_address; // @[Debug.scala 624:28]
+  wire [31:0] dmiXbar_auto_in_a_bits_data; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_in_d_ready; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_in_d_valid; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_in_d_bits_denied; // @[Debug.scala 624:28]
+  wire [31:0] dmiXbar_auto_in_d_bits_data; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_in_d_bits_corrupt; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_1_a_ready; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_1_a_valid; // @[Debug.scala 624:28]
+  wire [2:0] dmiXbar_auto_out_1_a_bits_opcode; // @[Debug.scala 624:28]
+  wire [6:0] dmiXbar_auto_out_1_a_bits_address; // @[Debug.scala 624:28]
+  wire [31:0] dmiXbar_auto_out_1_a_bits_data; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_1_d_ready; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_1_d_valid; // @[Debug.scala 624:28]
+  wire [2:0] dmiXbar_auto_out_1_d_bits_opcode; // @[Debug.scala 624:28]
+  wire [31:0] dmiXbar_auto_out_1_d_bits_data; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_0_a_ready; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_0_a_valid; // @[Debug.scala 624:28]
+  wire [2:0] dmiXbar_auto_out_0_a_bits_opcode; // @[Debug.scala 624:28]
+  wire [8:0] dmiXbar_auto_out_0_a_bits_address; // @[Debug.scala 624:28]
+  wire [31:0] dmiXbar_auto_out_0_a_bits_data; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_0_d_ready; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_0_d_valid; // @[Debug.scala 624:28]
+  wire [2:0] dmiXbar_auto_out_0_d_bits_opcode; // @[Debug.scala 624:28]
+  wire [1:0] dmiXbar_auto_out_0_d_bits_param; // @[Debug.scala 624:28]
+  wire [1:0] dmiXbar_auto_out_0_d_bits_size; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_0_d_bits_sink; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_0_d_bits_denied; // @[Debug.scala 624:28]
+  wire [31:0] dmiXbar_auto_out_0_d_bits_data; // @[Debug.scala 624:28]
+  wire  dmiXbar_auto_out_0_d_bits_corrupt; // @[Debug.scala 624:28]
+  wire  dmi2tl_auto_out_a_ready; // @[Debug.scala 627:28]
+  wire  dmi2tl_auto_out_a_valid; // @[Debug.scala 627:28]
+  wire [2:0] dmi2tl_auto_out_a_bits_opcode; // @[Debug.scala 627:28]
+  wire [8:0] dmi2tl_auto_out_a_bits_address; // @[Debug.scala 627:28]
+  wire [31:0] dmi2tl_auto_out_a_bits_data; // @[Debug.scala 627:28]
+  wire  dmi2tl_auto_out_d_ready; // @[Debug.scala 627:28]
+  wire  dmi2tl_auto_out_d_valid; // @[Debug.scala 627:28]
+  wire  dmi2tl_auto_out_d_bits_denied; // @[Debug.scala 627:28]
+  wire [31:0] dmi2tl_auto_out_d_bits_data; // @[Debug.scala 627:28]
+  wire  dmi2tl_auto_out_d_bits_corrupt; // @[Debug.scala 627:28]
+  wire  dmi2tl_io_dmi_req_ready; // @[Debug.scala 627:28]
+  wire  dmi2tl_io_dmi_req_valid; // @[Debug.scala 627:28]
+  wire [6:0] dmi2tl_io_dmi_req_bits_addr; // @[Debug.scala 627:28]
+  wire [31:0] dmi2tl_io_dmi_req_bits_data; // @[Debug.scala 627:28]
+  wire [1:0] dmi2tl_io_dmi_req_bits_op; // @[Debug.scala 627:28]
+  wire  dmi2tl_io_dmi_resp_ready; // @[Debug.scala 627:28]
+  wire  dmi2tl_io_dmi_resp_valid; // @[Debug.scala 627:28]
+  wire [31:0] dmi2tl_io_dmi_resp_bits_data; // @[Debug.scala 627:28]
+  wire [1:0] dmi2tl_io_dmi_resp_bits_resp; // @[Debug.scala 627:28]
+  wire  dmOuter_clock; // @[Debug.scala 649:27]
+  wire  dmOuter_reset; // @[Debug.scala 649:27]
+  wire  dmOuter_auto_dmi_in_a_ready; // @[Debug.scala 649:27]
+  wire  dmOuter_auto_dmi_in_a_valid; // @[Debug.scala 649:27]
+  wire [2:0] dmOuter_auto_dmi_in_a_bits_opcode; // @[Debug.scala 649:27]
+  wire [6:0] dmOuter_auto_dmi_in_a_bits_address; // @[Debug.scala 649:27]
+  wire [31:0] dmOuter_auto_dmi_in_a_bits_data; // @[Debug.scala 649:27]
+  wire  dmOuter_auto_dmi_in_d_ready; // @[Debug.scala 649:27]
+  wire  dmOuter_auto_dmi_in_d_valid; // @[Debug.scala 649:27]
+  wire [2:0] dmOuter_auto_dmi_in_d_bits_opcode; // @[Debug.scala 649:27]
+  wire [31:0] dmOuter_auto_dmi_in_d_bits_data; // @[Debug.scala 649:27]
+  wire  dmOuter_auto_int_out_0; // @[Debug.scala 649:27]
+  wire  dmOuter_io_ctrl_ndreset; // @[Debug.scala 649:27]
+  wire  dmOuter_io_ctrl_dmactive; // @[Debug.scala 649:27]
+  wire  dmOuter_io_ctrl_dmactiveAck; // @[Debug.scala 649:27]
+  wire  dmOuter_io_innerCtrl_ready; // @[Debug.scala 649:27]
+  wire  dmOuter_io_innerCtrl_valid; // @[Debug.scala 649:27]
+  wire  dmOuter_io_innerCtrl_bits_resumereq; // @[Debug.scala 649:27]
+  wire [9:0] dmOuter_io_innerCtrl_bits_hartsel; // @[Debug.scala 649:27]
+  wire  dmOuter_io_innerCtrl_bits_ackhavereset; // @[Debug.scala 649:27]
+  wire  dmOuter_io_innerCtrl_bits_hrmask_0; // @[Debug.scala 649:27]
+  wire  dmOuter_io_hgDebugInt_0; // @[Debug.scala 649:27]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  dmiBypass_clock; // @[Debug.scala 652:29]
+  wire  dmiBypass_reset; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_out_out_a_ready; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_out_out_a_valid; // @[Debug.scala 652:29]
+  wire [2:0] dmiBypass_auto_node_out_out_a_bits_opcode; // @[Debug.scala 652:29]
+  wire [8:0] dmiBypass_auto_node_out_out_a_bits_address; // @[Debug.scala 652:29]
+  wire [31:0] dmiBypass_auto_node_out_out_a_bits_data; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_out_out_d_ready; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_out_out_d_valid; // @[Debug.scala 652:29]
+  wire [2:0] dmiBypass_auto_node_out_out_d_bits_opcode; // @[Debug.scala 652:29]
+  wire [1:0] dmiBypass_auto_node_out_out_d_bits_param; // @[Debug.scala 652:29]
+  wire [1:0] dmiBypass_auto_node_out_out_d_bits_size; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_out_out_d_bits_source; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_out_out_d_bits_sink; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_out_out_d_bits_denied; // @[Debug.scala 652:29]
+  wire [31:0] dmiBypass_auto_node_out_out_d_bits_data; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_out_out_d_bits_corrupt; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_in_in_a_ready; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_in_in_a_valid; // @[Debug.scala 652:29]
+  wire [2:0] dmiBypass_auto_node_in_in_a_bits_opcode; // @[Debug.scala 652:29]
+  wire [8:0] dmiBypass_auto_node_in_in_a_bits_address; // @[Debug.scala 652:29]
+  wire [31:0] dmiBypass_auto_node_in_in_a_bits_data; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_in_in_d_ready; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_in_in_d_valid; // @[Debug.scala 652:29]
+  wire [2:0] dmiBypass_auto_node_in_in_d_bits_opcode; // @[Debug.scala 652:29]
+  wire [1:0] dmiBypass_auto_node_in_in_d_bits_param; // @[Debug.scala 652:29]
+  wire [1:0] dmiBypass_auto_node_in_in_d_bits_size; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_in_in_d_bits_sink; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_in_in_d_bits_denied; // @[Debug.scala 652:29]
+  wire [31:0] dmiBypass_auto_node_in_in_d_bits_data; // @[Debug.scala 652:29]
+  wire  dmiBypass_auto_node_in_in_d_bits_corrupt; // @[Debug.scala 652:29]
+  wire  dmiBypass_io_bypass; // @[Debug.scala 652:29]
+  wire  asource_clock; // @[AsyncCrossing.scala 87:29]
+  wire  asource_reset; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_a_ready; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_a_valid; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_in_a_bits_opcode; // @[AsyncCrossing.scala 87:29]
+  wire [8:0] asource_auto_in_a_bits_address; // @[AsyncCrossing.scala 87:29]
+  wire [31:0] asource_auto_in_a_bits_data; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_ready; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_valid; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_in_d_bits_opcode; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_in_d_bits_param; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_in_d_bits_size; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_bits_source; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_bits_sink; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_bits_denied; // @[AsyncCrossing.scala 87:29]
+  wire [31:0] asource_auto_in_d_bits_data; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_in_d_bits_corrupt; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_out_a_mem_0_opcode; // @[AsyncCrossing.scala 87:29]
+  wire [8:0] asource_auto_out_a_mem_0_address; // @[AsyncCrossing.scala 87:29]
+  wire [31:0] asource_auto_out_a_mem_0_data; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_ridx; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_widx; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_safe_ridx_valid; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_safe_widx_valid; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_a_safe_source_reset_n; // @[AsyncCrossing.scala 87:29]
+  wire [2:0] asource_auto_out_d_mem_0_opcode; // @[AsyncCrossing.scala 87:29]
+  wire [1:0] asource_auto_out_d_mem_0_size; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_mem_0_source; // @[AsyncCrossing.scala 87:29]
+  wire [31:0] asource_auto_out_d_mem_0_data; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_ridx; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_widx; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_safe_ridx_valid; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_safe_widx_valid; // @[AsyncCrossing.scala 87:29]
+  wire  asource_auto_out_d_safe_sink_reset_n; // @[AsyncCrossing.scala 87:29]
+  wire  dmactiveAck_dmactiveAckSync_clock; // @[ShiftReg.scala 45:23]
+  wire  dmactiveAck_dmactiveAckSync_reset; // @[ShiftReg.scala 45:23]
+  wire  dmactiveAck_dmactiveAckSync_io_d; // @[ShiftReg.scala 45:23]
+  wire  dmactiveAck_dmactiveAckSync_io_q; // @[ShiftReg.scala 45:23]
+  wire  io_innerCtrl_source_clock; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_reset; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_enq_ready; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_enq_valid; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_enq_bits_resumereq; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_enq_bits_ackhavereset; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_enq_bits_hrmask_0; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_async_mem_0_resumereq; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_async_mem_0_ackhavereset; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_async_mem_0_hrmask_0; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_async_ridx; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_async_widx; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_async_safe_ridx_valid; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_async_safe_widx_valid; // @[AsyncQueue.scala 216:24]
+  wire  io_innerCtrl_source_io_async_safe_source_reset_n; // @[AsyncQueue.scala 216:24]
+  wire  dmactiveAck = dmactiveAck_dmactiveAckSync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  TLXbar_9 dmiXbar ( // @[Debug.scala 624:28]
+    .clock(dmiXbar_clock),
+    .reset(dmiXbar_reset),
+    .auto_in_a_ready(dmiXbar_auto_in_a_ready),
+    .auto_in_a_valid(dmiXbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(dmiXbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_address(dmiXbar_auto_in_a_bits_address),
+    .auto_in_a_bits_data(dmiXbar_auto_in_a_bits_data),
+    .auto_in_d_ready(dmiXbar_auto_in_d_ready),
+    .auto_in_d_valid(dmiXbar_auto_in_d_valid),
+    .auto_in_d_bits_denied(dmiXbar_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(dmiXbar_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(dmiXbar_auto_in_d_bits_corrupt),
+    .auto_out_1_a_ready(dmiXbar_auto_out_1_a_ready),
+    .auto_out_1_a_valid(dmiXbar_auto_out_1_a_valid),
+    .auto_out_1_a_bits_opcode(dmiXbar_auto_out_1_a_bits_opcode),
+    .auto_out_1_a_bits_address(dmiXbar_auto_out_1_a_bits_address),
+    .auto_out_1_a_bits_data(dmiXbar_auto_out_1_a_bits_data),
+    .auto_out_1_d_ready(dmiXbar_auto_out_1_d_ready),
+    .auto_out_1_d_valid(dmiXbar_auto_out_1_d_valid),
+    .auto_out_1_d_bits_opcode(dmiXbar_auto_out_1_d_bits_opcode),
+    .auto_out_1_d_bits_data(dmiXbar_auto_out_1_d_bits_data),
+    .auto_out_0_a_ready(dmiXbar_auto_out_0_a_ready),
+    .auto_out_0_a_valid(dmiXbar_auto_out_0_a_valid),
+    .auto_out_0_a_bits_opcode(dmiXbar_auto_out_0_a_bits_opcode),
+    .auto_out_0_a_bits_address(dmiXbar_auto_out_0_a_bits_address),
+    .auto_out_0_a_bits_data(dmiXbar_auto_out_0_a_bits_data),
+    .auto_out_0_d_ready(dmiXbar_auto_out_0_d_ready),
+    .auto_out_0_d_valid(dmiXbar_auto_out_0_d_valid),
+    .auto_out_0_d_bits_opcode(dmiXbar_auto_out_0_d_bits_opcode),
+    .auto_out_0_d_bits_param(dmiXbar_auto_out_0_d_bits_param),
+    .auto_out_0_d_bits_size(dmiXbar_auto_out_0_d_bits_size),
+    .auto_out_0_d_bits_sink(dmiXbar_auto_out_0_d_bits_sink),
+    .auto_out_0_d_bits_denied(dmiXbar_auto_out_0_d_bits_denied),
+    .auto_out_0_d_bits_data(dmiXbar_auto_out_0_d_bits_data),
+    .auto_out_0_d_bits_corrupt(dmiXbar_auto_out_0_d_bits_corrupt)
+  );
+  DMIToTL dmi2tl ( // @[Debug.scala 627:28]
+    .auto_out_a_ready(dmi2tl_auto_out_a_ready),
+    .auto_out_a_valid(dmi2tl_auto_out_a_valid),
+    .auto_out_a_bits_opcode(dmi2tl_auto_out_a_bits_opcode),
+    .auto_out_a_bits_address(dmi2tl_auto_out_a_bits_address),
+    .auto_out_a_bits_data(dmi2tl_auto_out_a_bits_data),
+    .auto_out_d_ready(dmi2tl_auto_out_d_ready),
+    .auto_out_d_valid(dmi2tl_auto_out_d_valid),
+    .auto_out_d_bits_denied(dmi2tl_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(dmi2tl_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(dmi2tl_auto_out_d_bits_corrupt),
+    .io_dmi_req_ready(dmi2tl_io_dmi_req_ready),
+    .io_dmi_req_valid(dmi2tl_io_dmi_req_valid),
+    .io_dmi_req_bits_addr(dmi2tl_io_dmi_req_bits_addr),
+    .io_dmi_req_bits_data(dmi2tl_io_dmi_req_bits_data),
+    .io_dmi_req_bits_op(dmi2tl_io_dmi_req_bits_op),
+    .io_dmi_resp_ready(dmi2tl_io_dmi_resp_ready),
+    .io_dmi_resp_valid(dmi2tl_io_dmi_resp_valid),
+    .io_dmi_resp_bits_data(dmi2tl_io_dmi_resp_bits_data),
+    .io_dmi_resp_bits_resp(dmi2tl_io_dmi_resp_bits_resp)
+  );
+  TLDebugModuleOuter dmOuter ( // @[Debug.scala 649:27]
+    .clock(dmOuter_clock),
+    .reset(dmOuter_reset),
+    .auto_dmi_in_a_ready(dmOuter_auto_dmi_in_a_ready),
+    .auto_dmi_in_a_valid(dmOuter_auto_dmi_in_a_valid),
+    .auto_dmi_in_a_bits_opcode(dmOuter_auto_dmi_in_a_bits_opcode),
+    .auto_dmi_in_a_bits_address(dmOuter_auto_dmi_in_a_bits_address),
+    .auto_dmi_in_a_bits_data(dmOuter_auto_dmi_in_a_bits_data),
+    .auto_dmi_in_d_ready(dmOuter_auto_dmi_in_d_ready),
+    .auto_dmi_in_d_valid(dmOuter_auto_dmi_in_d_valid),
+    .auto_dmi_in_d_bits_opcode(dmOuter_auto_dmi_in_d_bits_opcode),
+    .auto_dmi_in_d_bits_data(dmOuter_auto_dmi_in_d_bits_data),
+    .auto_int_out_0(dmOuter_auto_int_out_0),
+    .io_ctrl_ndreset(dmOuter_io_ctrl_ndreset),
+    .io_ctrl_dmactive(dmOuter_io_ctrl_dmactive),
+    .io_ctrl_dmactiveAck(dmOuter_io_ctrl_dmactiveAck),
+    .io_innerCtrl_ready(dmOuter_io_innerCtrl_ready),
+    .io_innerCtrl_valid(dmOuter_io_innerCtrl_valid),
+    .io_innerCtrl_bits_resumereq(dmOuter_io_innerCtrl_bits_resumereq),
+    .io_innerCtrl_bits_hartsel(dmOuter_io_innerCtrl_bits_hartsel),
+    .io_innerCtrl_bits_ackhavereset(dmOuter_io_innerCtrl_bits_ackhavereset),
+    .io_innerCtrl_bits_hrmask_0(dmOuter_io_innerCtrl_bits_hrmask_0),
+    .io_hgDebugInt_0(dmOuter_io_hgDebugInt_0)
+  );
+  IntSyncCrossingSource_4 intsource ( // @[Crossing.scala 26:31]
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLBusBypass dmiBypass ( // @[Debug.scala 652:29]
+    .clock(dmiBypass_clock),
+    .reset(dmiBypass_reset),
+    .auto_node_out_out_a_ready(dmiBypass_auto_node_out_out_a_ready),
+    .auto_node_out_out_a_valid(dmiBypass_auto_node_out_out_a_valid),
+    .auto_node_out_out_a_bits_opcode(dmiBypass_auto_node_out_out_a_bits_opcode),
+    .auto_node_out_out_a_bits_address(dmiBypass_auto_node_out_out_a_bits_address),
+    .auto_node_out_out_a_bits_data(dmiBypass_auto_node_out_out_a_bits_data),
+    .auto_node_out_out_d_ready(dmiBypass_auto_node_out_out_d_ready),
+    .auto_node_out_out_d_valid(dmiBypass_auto_node_out_out_d_valid),
+    .auto_node_out_out_d_bits_opcode(dmiBypass_auto_node_out_out_d_bits_opcode),
+    .auto_node_out_out_d_bits_param(dmiBypass_auto_node_out_out_d_bits_param),
+    .auto_node_out_out_d_bits_size(dmiBypass_auto_node_out_out_d_bits_size),
+    .auto_node_out_out_d_bits_source(dmiBypass_auto_node_out_out_d_bits_source),
+    .auto_node_out_out_d_bits_sink(dmiBypass_auto_node_out_out_d_bits_sink),
+    .auto_node_out_out_d_bits_denied(dmiBypass_auto_node_out_out_d_bits_denied),
+    .auto_node_out_out_d_bits_data(dmiBypass_auto_node_out_out_d_bits_data),
+    .auto_node_out_out_d_bits_corrupt(dmiBypass_auto_node_out_out_d_bits_corrupt),
+    .auto_node_in_in_a_ready(dmiBypass_auto_node_in_in_a_ready),
+    .auto_node_in_in_a_valid(dmiBypass_auto_node_in_in_a_valid),
+    .auto_node_in_in_a_bits_opcode(dmiBypass_auto_node_in_in_a_bits_opcode),
+    .auto_node_in_in_a_bits_address(dmiBypass_auto_node_in_in_a_bits_address),
+    .auto_node_in_in_a_bits_data(dmiBypass_auto_node_in_in_a_bits_data),
+    .auto_node_in_in_d_ready(dmiBypass_auto_node_in_in_d_ready),
+    .auto_node_in_in_d_valid(dmiBypass_auto_node_in_in_d_valid),
+    .auto_node_in_in_d_bits_opcode(dmiBypass_auto_node_in_in_d_bits_opcode),
+    .auto_node_in_in_d_bits_param(dmiBypass_auto_node_in_in_d_bits_param),
+    .auto_node_in_in_d_bits_size(dmiBypass_auto_node_in_in_d_bits_size),
+    .auto_node_in_in_d_bits_sink(dmiBypass_auto_node_in_in_d_bits_sink),
+    .auto_node_in_in_d_bits_denied(dmiBypass_auto_node_in_in_d_bits_denied),
+    .auto_node_in_in_d_bits_data(dmiBypass_auto_node_in_in_d_bits_data),
+    .auto_node_in_in_d_bits_corrupt(dmiBypass_auto_node_in_in_d_bits_corrupt),
+    .io_bypass(dmiBypass_io_bypass)
+  );
+  TLAsyncCrossingSource_1 asource ( // @[AsyncCrossing.scala 87:29]
+    .clock(asource_clock),
+    .reset(asource_reset),
+    .auto_in_a_ready(asource_auto_in_a_ready),
+    .auto_in_a_valid(asource_auto_in_a_valid),
+    .auto_in_a_bits_opcode(asource_auto_in_a_bits_opcode),
+    .auto_in_a_bits_address(asource_auto_in_a_bits_address),
+    .auto_in_a_bits_data(asource_auto_in_a_bits_data),
+    .auto_in_d_ready(asource_auto_in_d_ready),
+    .auto_in_d_valid(asource_auto_in_d_valid),
+    .auto_in_d_bits_opcode(asource_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(asource_auto_in_d_bits_param),
+    .auto_in_d_bits_size(asource_auto_in_d_bits_size),
+    .auto_in_d_bits_source(asource_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(asource_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(asource_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(asource_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(asource_auto_in_d_bits_corrupt),
+    .auto_out_a_mem_0_opcode(asource_auto_out_a_mem_0_opcode),
+    .auto_out_a_mem_0_address(asource_auto_out_a_mem_0_address),
+    .auto_out_a_mem_0_data(asource_auto_out_a_mem_0_data),
+    .auto_out_a_ridx(asource_auto_out_a_ridx),
+    .auto_out_a_widx(asource_auto_out_a_widx),
+    .auto_out_a_safe_ridx_valid(asource_auto_out_a_safe_ridx_valid),
+    .auto_out_a_safe_widx_valid(asource_auto_out_a_safe_widx_valid),
+    .auto_out_a_safe_source_reset_n(asource_auto_out_a_safe_source_reset_n),
+    .auto_out_d_mem_0_opcode(asource_auto_out_d_mem_0_opcode),
+    .auto_out_d_mem_0_size(asource_auto_out_d_mem_0_size),
+    .auto_out_d_mem_0_source(asource_auto_out_d_mem_0_source),
+    .auto_out_d_mem_0_data(asource_auto_out_d_mem_0_data),
+    .auto_out_d_ridx(asource_auto_out_d_ridx),
+    .auto_out_d_widx(asource_auto_out_d_widx),
+    .auto_out_d_safe_ridx_valid(asource_auto_out_d_safe_ridx_valid),
+    .auto_out_d_safe_widx_valid(asource_auto_out_d_safe_widx_valid),
+    .auto_out_d_safe_sink_reset_n(asource_auto_out_d_safe_sink_reset_n)
+  );
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 dmactiveAck_dmactiveAckSync ( // @[ShiftReg.scala 45:23]
+    .clock(dmactiveAck_dmactiveAckSync_clock),
+    .reset(dmactiveAck_dmactiveAckSync_reset),
+    .io_d(dmactiveAck_dmactiveAckSync_io_d),
+    .io_q(dmactiveAck_dmactiveAckSync_io_q)
+  );
+  AsyncQueueSource_2 io_innerCtrl_source ( // @[AsyncQueue.scala 216:24]
+    .clock(io_innerCtrl_source_clock),
+    .reset(io_innerCtrl_source_reset),
+    .io_enq_ready(io_innerCtrl_source_io_enq_ready),
+    .io_enq_valid(io_innerCtrl_source_io_enq_valid),
+    .io_enq_bits_resumereq(io_innerCtrl_source_io_enq_bits_resumereq),
+    .io_enq_bits_ackhavereset(io_innerCtrl_source_io_enq_bits_ackhavereset),
+    .io_enq_bits_hrmask_0(io_innerCtrl_source_io_enq_bits_hrmask_0),
+    .io_async_mem_0_resumereq(io_innerCtrl_source_io_async_mem_0_resumereq),
+    .io_async_mem_0_ackhavereset(io_innerCtrl_source_io_async_mem_0_ackhavereset),
+    .io_async_mem_0_hrmask_0(io_innerCtrl_source_io_async_mem_0_hrmask_0),
+    .io_async_ridx(io_innerCtrl_source_io_async_ridx),
+    .io_async_widx(io_innerCtrl_source_io_async_widx),
+    .io_async_safe_ridx_valid(io_innerCtrl_source_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(io_innerCtrl_source_io_async_safe_widx_valid),
+    .io_async_safe_source_reset_n(io_innerCtrl_source_io_async_safe_source_reset_n)
+  );
+  assign auto_asource_out_a_mem_0_opcode = asource_auto_out_a_mem_0_opcode; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_address = asource_auto_out_a_mem_0_address; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_mem_0_data = asource_auto_out_a_mem_0_data; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_widx = asource_auto_out_a_widx; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_safe_widx_valid = asource_auto_out_a_safe_widx_valid; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_a_safe_source_reset_n = asource_auto_out_a_safe_source_reset_n; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_d_ridx = asource_auto_out_d_ridx; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_d_safe_ridx_valid = asource_auto_out_d_safe_ridx_valid; // @[LazyModule.scala 311:12]
+  assign auto_asource_out_d_safe_sink_reset_n = asource_auto_out_d_safe_sink_reset_n; // @[LazyModule.scala 311:12]
+  assign auto_intsource_out_sync_0 = intsource_auto_out_sync_0; // @[LazyModule.scala 311:12]
+  assign io_dmi_req_ready = dmi2tl_io_dmi_req_ready; // @[Debug.scala 677:43]
+  assign io_dmi_resp_valid = dmi2tl_io_dmi_resp_valid; // @[Debug.scala 677:43]
+  assign io_dmi_resp_bits_data = dmi2tl_io_dmi_resp_bits_data; // @[Debug.scala 677:43]
+  assign io_dmi_resp_bits_resp = dmi2tl_io_dmi_resp_bits_resp; // @[Debug.scala 677:43]
+  assign io_ctrl_ndreset = dmOuter_io_ctrl_ndreset; // @[Debug.scala 682:15]
+  assign io_ctrl_dmactive = dmOuter_io_ctrl_dmactive; // @[Debug.scala 682:15]
+  assign io_innerCtrl_mem_0_resumereq = io_innerCtrl_source_io_async_mem_0_resumereq; // @[Debug.scala 684:20]
+  assign io_innerCtrl_mem_0_ackhavereset = io_innerCtrl_source_io_async_mem_0_ackhavereset; // @[Debug.scala 684:20]
+  assign io_innerCtrl_mem_0_hrmask_0 = io_innerCtrl_source_io_async_mem_0_hrmask_0; // @[Debug.scala 684:20]
+  assign io_innerCtrl_widx = io_innerCtrl_source_io_async_widx; // @[Debug.scala 684:20]
+  assign io_innerCtrl_safe_widx_valid = io_innerCtrl_source_io_async_safe_widx_valid; // @[Debug.scala 684:20]
+  assign io_innerCtrl_safe_source_reset_n = io_innerCtrl_source_io_async_safe_source_reset_n; // @[Debug.scala 684:20]
+  assign dmiXbar_clock = io_dmi_clock; // @[LazyModule.scala 350:31 Debug.scala 673:16]
+  assign dmiXbar_reset = io_dmi_reset; // @[LazyModule.scala 352:31 Debug.scala 674:16]
+  assign dmiXbar_auto_in_a_valid = dmi2tl_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign dmiXbar_auto_in_a_bits_opcode = dmi2tl_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign dmiXbar_auto_in_a_bits_address = dmi2tl_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign dmiXbar_auto_in_a_bits_data = dmi2tl_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign dmiXbar_auto_in_d_ready = dmi2tl_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign dmiXbar_auto_out_1_a_ready = dmOuter_auto_dmi_in_a_ready; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_1_d_valid = dmOuter_auto_dmi_in_d_valid; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_1_d_bits_opcode = dmOuter_auto_dmi_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_1_d_bits_data = dmOuter_auto_dmi_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_a_ready = dmiBypass_auto_node_in_in_a_ready; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_d_valid = dmiBypass_auto_node_in_in_d_valid; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_d_bits_opcode = dmiBypass_auto_node_in_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_d_bits_param = dmiBypass_auto_node_in_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_d_bits_size = dmiBypass_auto_node_in_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_d_bits_sink = dmiBypass_auto_node_in_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_d_bits_denied = dmiBypass_auto_node_in_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_d_bits_data = dmiBypass_auto_node_in_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign dmiXbar_auto_out_0_d_bits_corrupt = dmiBypass_auto_node_in_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign dmi2tl_auto_out_a_ready = dmiXbar_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign dmi2tl_auto_out_d_valid = dmiXbar_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign dmi2tl_auto_out_d_bits_denied = dmiXbar_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign dmi2tl_auto_out_d_bits_data = dmiXbar_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign dmi2tl_auto_out_d_bits_corrupt = dmiXbar_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign dmi2tl_io_dmi_req_valid = io_dmi_req_valid; // @[Debug.scala 677:43]
+  assign dmi2tl_io_dmi_req_bits_addr = io_dmi_req_bits_addr; // @[Debug.scala 677:43]
+  assign dmi2tl_io_dmi_req_bits_data = io_dmi_req_bits_data; // @[Debug.scala 677:43]
+  assign dmi2tl_io_dmi_req_bits_op = io_dmi_req_bits_op; // @[Debug.scala 677:43]
+  assign dmi2tl_io_dmi_resp_ready = io_dmi_resp_ready; // @[Debug.scala 677:43]
+  assign dmOuter_clock = io_dmi_clock; // @[LazyModule.scala 350:31 Debug.scala 673:16]
+  assign dmOuter_reset = io_dmi_reset; // @[LazyModule.scala 352:31 Debug.scala 674:16]
+  assign dmOuter_auto_dmi_in_a_valid = dmiXbar_auto_out_1_a_valid; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_dmi_in_a_bits_opcode = dmiXbar_auto_out_1_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_dmi_in_a_bits_address = dmiXbar_auto_out_1_a_bits_address; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_dmi_in_a_bits_data = dmiXbar_auto_out_1_a_bits_data; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_dmi_in_d_ready = dmiXbar_auto_out_1_d_ready; // @[LazyModule.scala 298:16]
+  assign dmOuter_io_ctrl_dmactiveAck = dmactiveAck_dmactiveAckSync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign dmOuter_io_innerCtrl_ready = io_innerCtrl_source_io_enq_ready; // @[AsyncQueue.scala 217:19]
+  assign dmOuter_io_hgDebugInt_0 = io_hgDebugInt_0; // @[Debug.scala 685:36]
+  assign intsource_auto_in_0 = dmOuter_auto_int_out_0; // @[LazyModule.scala 298:16]
+  assign dmiBypass_clock = io_dmi_clock; // @[LazyModule.scala 350:31 Debug.scala 673:16]
+  assign dmiBypass_reset = io_dmi_reset; // @[LazyModule.scala 352:31 Debug.scala 674:16]
+  assign dmiBypass_auto_node_out_out_a_ready = asource_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_valid = asource_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_bits_opcode = asource_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_bits_param = asource_auto_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_bits_size = asource_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_bits_source = asource_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_bits_sink = asource_auto_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_bits_denied = asource_auto_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_bits_data = asource_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_out_out_d_bits_corrupt = asource_auto_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_in_in_a_valid = dmiXbar_auto_out_0_a_valid; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_in_in_a_bits_opcode = dmiXbar_auto_out_0_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_in_in_a_bits_address = dmiXbar_auto_out_0_a_bits_address; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_in_in_a_bits_data = dmiXbar_auto_out_0_a_bits_data; // @[LazyModule.scala 298:16]
+  assign dmiBypass_auto_node_in_in_d_ready = dmiXbar_auto_out_0_d_ready; // @[LazyModule.scala 298:16]
+  assign dmiBypass_io_bypass = ~io_ctrl_dmactive | ~dmactiveAck; // @[Debug.scala 680:55]
+  assign asource_clock = io_dmi_clock; // @[LazyModule.scala 350:31 Debug.scala 673:16]
+  assign asource_reset = io_dmi_reset; // @[LazyModule.scala 352:31 Debug.scala 674:16]
+  assign asource_auto_in_a_valid = dmiBypass_auto_node_out_out_a_valid; // @[LazyModule.scala 298:16]
+  assign asource_auto_in_a_bits_opcode = dmiBypass_auto_node_out_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign asource_auto_in_a_bits_address = dmiBypass_auto_node_out_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign asource_auto_in_a_bits_data = dmiBypass_auto_node_out_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign asource_auto_in_d_ready = dmiBypass_auto_node_out_out_d_ready; // @[LazyModule.scala 298:16]
+  assign asource_auto_out_a_ridx = auto_asource_out_a_ridx; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_a_safe_ridx_valid = auto_asource_out_a_safe_ridx_valid; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_opcode = auto_asource_out_d_mem_0_opcode; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_size = auto_asource_out_d_mem_0_size; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_source = auto_asource_out_d_mem_0_source; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_mem_0_data = auto_asource_out_d_mem_0_data; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_widx = auto_asource_out_d_widx; // @[LazyModule.scala 311:12]
+  assign asource_auto_out_d_safe_widx_valid = auto_asource_out_d_safe_widx_valid; // @[LazyModule.scala 311:12]
+  assign dmactiveAck_dmactiveAckSync_clock = io_dmi_clock; // @[LazyModule.scala 350:31 Debug.scala 673:16]
+  assign dmactiveAck_dmactiveAckSync_reset = io_dmi_reset; // @[LazyModule.scala 352:31 Debug.scala 674:16]
+  assign dmactiveAck_dmactiveAckSync_io_d = 1'h0; // @[ShiftReg.scala 47:16]
+  assign io_innerCtrl_source_clock = io_dmi_clock; // @[LazyModule.scala 350:31 Debug.scala 673:16]
+  assign io_innerCtrl_source_reset = io_dmi_reset; // @[LazyModule.scala 352:31 Debug.scala 674:16]
+  assign io_innerCtrl_source_io_enq_valid = dmOuter_io_innerCtrl_valid; // @[AsyncQueue.scala 217:19]
+  assign io_innerCtrl_source_io_enq_bits_resumereq = dmOuter_io_innerCtrl_bits_resumereq; // @[AsyncQueue.scala 217:19]
+  assign io_innerCtrl_source_io_enq_bits_ackhavereset = dmOuter_io_innerCtrl_bits_ackhavereset; // @[AsyncQueue.scala 217:19]
+  assign io_innerCtrl_source_io_enq_bits_hrmask_0 = dmOuter_io_innerCtrl_bits_hrmask_0; // @[AsyncQueue.scala 217:19]
+  assign io_innerCtrl_source_io_async_ridx = io_innerCtrl_ridx; // @[Debug.scala 684:20]
+  assign io_innerCtrl_source_io_async_safe_ridx_valid = io_innerCtrl_safe_ridx_valid; // @[Debug.scala 684:20]
+endmodule
+module TLMonitor_53(
+  input        clock,
+  input        io_in_a_ready,
+  input        io_in_a_valid,
+  input  [2:0] io_in_a_bits_opcode,
+  input  [2:0] io_in_a_bits_param,
+  input  [1:0] io_in_a_bits_size,
+  input        io_in_a_bits_source,
+  input  [8:0] io_in_a_bits_address,
+  input  [3:0] io_in_a_bits_mask,
+  input        io_in_a_bits_corrupt,
+  input        io_in_d_ready,
+  input        io_in_d_valid,
+  input  [2:0] io_in_d_bits_opcode,
+  input  [1:0] io_in_d_bits_size,
+  input        io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _source_ok_T = ~io_in_a_bits_source; // @[Parameters.scala 46:9]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [8:0] _GEN_71 = {{7'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [8:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 9'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_5 = ~_source_ok_T; // @[Monitor.scala 63:7]
+  wire [9:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_15 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [9:0] _T_23 = $signed(_T_7) & -10'sh40; // @[Parameters.scala 137:52]
+  wire  _T_24 = $signed(_T_23) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_25 = io_in_a_bits_address ^ 9'h44; // @[Parameters.scala 137:31]
+  wire [9:0] _T_26 = {1'b0,$signed(_T_25)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_28 = $signed(_T_26) & -10'shc; // @[Parameters.scala 137:52]
+  wire  _T_29 = $signed(_T_28) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_30 = io_in_a_bits_address ^ 9'h58; // @[Parameters.scala 137:31]
+  wire [9:0] _T_31 = {1'b0,$signed(_T_30)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_33 = $signed(_T_31) & -10'sh8; // @[Parameters.scala 137:52]
+  wire  _T_34 = $signed(_T_33) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_35 = io_in_a_bits_address ^ 9'h60; // @[Parameters.scala 137:31]
+  wire [9:0] _T_36 = {1'b0,$signed(_T_35)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_38 = $signed(_T_36) & -10'sh20; // @[Parameters.scala 137:52]
+  wire  _T_39 = $signed(_T_38) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_40 = io_in_a_bits_address ^ 9'h80; // @[Parameters.scala 137:31]
+  wire [9:0] _T_41 = {1'b0,$signed(_T_40)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_43 = $signed(_T_41) & -10'sh80; // @[Parameters.scala 137:52]
+  wire  _T_44 = $signed(_T_43) == 10'sh0; // @[Parameters.scala 137:67]
+  wire [8:0] _T_45 = io_in_a_bits_address ^ 9'h100; // @[Parameters.scala 137:31]
+  wire [9:0] _T_46 = {1'b0,$signed(_T_45)}; // @[Parameters.scala 137:49]
+  wire [9:0] _T_48 = $signed(_T_46) & -10'sh100; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 10'sh0; // @[Parameters.scala 137:67]
+  wire  _T_54 = _T_24 | _T_29 | _T_34 | _T_39 | _T_44 | _T_49; // @[Parameters.scala 671:42]
+  wire  _T_116 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_120 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_121 = _T_120 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_125 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_129 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_234 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_247 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_248 = 2'h2 == io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_250 = _T_248 & _source_ok_T; // @[Parameters.scala 1160:30]
+  wire  _T_256 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_294 = _T_256 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_305 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_309 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_363 = _T_250 & _T_294; // @[Monitor.scala 115:71]
+  wire  _T_381 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_440 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_441 = io_in_a_bits_mask & _T_440; // @[Monitor.scala 127:31]
+  wire  _T_442 = _T_441 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_446 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_498 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_506 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_558 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_566 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_618 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_630 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_1 = ~io_in_d_bits_source; // @[Parameters.scala 46:9]
+  wire  _T_634 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_638 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_654 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_682 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_711 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_728 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_746 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg  source; // @[Monitor.scala 387:22]
+  reg [8:0] address; // @[Monitor.scala 388:22]
+  wire  _T_776 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_777 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_781 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_785 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_789 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_793 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg  source_1; // @[Monitor.scala 538:22]
+  wire  _T_800 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_801 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_809 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_813 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg  inflight; // @[Monitor.scala 611:27]
+  reg [3:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [3:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [2:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [3:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [3:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_73 = {{12'd0}, _a_opcode_lookup_T_1}; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_6 = _GEN_73 & _a_opcode_lookup_T_5; // @[Monitor.scala 634:97]
+  wire [15:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[15:1]}; // @[Monitor.scala 634:152]
+  wire [3:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [15:0] _GEN_76 = {{12'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_76 & _a_opcode_lookup_T_5; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[15:1]}; // @[Monitor.scala 638:144]
+  wire  _T_827 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [1:0] _a_set_wo_ready_T = 2'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_830 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [2:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [18:0] _GEN_0 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [18:0] _a_opcodes_set_T_1 = _GEN_0 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [17:0] _GEN_1 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [17:0] _a_sizes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire  _T_834 = ~(inflight >> io_in_a_bits_source); // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [17:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 18'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_838 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_840 = ~_T_634; // @[Monitor.scala 671:74]
+  wire  _T_841 = io_in_d_valid & d_first_1 & ~_T_634; // @[Monitor.scala 671:71]
+  wire [1:0] _d_clr_wo_ready_T = 2'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [30:0] _GEN_2 = {{15'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [30:0] _d_opcodes_clr_T_5 = _GEN_2 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [1:0] _GEN_22 = d_first_done & d_first_1 & _T_840 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = d_first_done & d_first_1 & _T_840 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_827 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire  _T_853 = inflight >> io_in_d_bits_source | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_858 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_859 = io_in_d_bits_opcode == _GEN_32 | _T_858; // @[Monitor.scala 685:77]
+  wire  _T_863 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_870 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_871 = io_in_d_bits_opcode == _GEN_48 | _T_870; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_875 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_885 = _T_838 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_840; // @[Monitor.scala 694:116]
+  wire  _T_887 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  a_set = _GEN_16[0];
+  wire  d_clr = _GEN_22[0];
+  wire [3:0] a_opcodes_set = _GEN_19[3:0];
+  wire [3:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [3:0] d_opcodes_clr = _GEN_23[3:0];
+  wire [3:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [3:0] a_sizes_set = _GEN_20[3:0];
+  wire [3:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_896 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [3:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [3:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_87 = {{12'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_87 & _a_opcode_lookup_T_5; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[15:1]}; // @[Monitor.scala 747:146]
+  wire  _T_922 = io_in_d_valid & d_first_2 & _T_634; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_68 = d_first_done & d_first_2 & _T_634 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 785:21]
+  wire  _T_930 = 1'h0 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_940 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [3:0] d_opcodes_clr_1 = _GEN_68[3:0];
+  wire [3:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    inflight <= (inflight | a_set) & ~d_clr; // @[Monitor.scala 702:36]
+    inflight_opcodes <= _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+    inflight_sizes <= _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+    if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    inflight_sizes_1 <= inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+    if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_5 & (io_in_a_valid & _T_15)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_15)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_15)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_116 & (io_in_a_valid & _T_15)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~_T_116) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_121 & (io_in_a_valid & _T_15)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~_T_121) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_125 & (io_in_a_valid & _T_15)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_15 & ~_T_125) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_5 & (io_in_a_valid & _T_129)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_129)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_129)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_116 & (io_in_a_valid & _T_129)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~_T_116) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_234 & (io_in_a_valid & _T_129)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~_T_234) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_121 & (io_in_a_valid & _T_129)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~_T_121) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_125 & (io_in_a_valid & _T_129)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_129 & ~_T_125) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_250 & (io_in_a_valid & _T_247)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~_T_250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_294 & (io_in_a_valid & _T_247)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~_T_294) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_5 & (io_in_a_valid & _T_247)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_247)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_305 & (io_in_a_valid & _T_247)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~_T_305) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_247)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_125 & (io_in_a_valid & _T_247)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_247 & ~_T_125) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_363 & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~_T_363) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_5 & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_305 & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~_T_305) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_5 & (io_in_a_valid & _T_381)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_381)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_305 & (io_in_a_valid & _T_381)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~_T_305) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_442 & (io_in_a_valid & _T_381)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_381 & ~_T_442) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_5 & (io_in_a_valid & _T_446)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_446)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_498 & (io_in_a_valid & _T_446)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~_T_498) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_446)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_446 & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_5 & (io_in_a_valid & _T_506)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_506)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_558 & (io_in_a_valid & _T_506)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~_T_558) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_506)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_506 & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_5 & (io_in_a_valid & _T_566)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_566)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_618 & (io_in_a_valid & _T_566)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~_T_618) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_566)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_125 & (io_in_a_valid & _T_566)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_566 & ~_T_125) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & io_in_d_valid) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_634)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_634)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_634 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_654)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_654)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_654 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_682)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (io_in_d_valid & _T_682)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_682 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_711)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_711 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_728)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_728 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_1 & (io_in_d_valid & _T_746)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_746 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_777 & _T_776) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~_T_777) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_781 & _T_776) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~_T_781) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_785 & _T_776) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~_T_785) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_789 & _T_776) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~_T_789) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_793 & _T_776) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_776 & ~_T_793) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_801 & _T_800) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & ~_T_801) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_809 & _T_800) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & ~_T_809) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_813 & _T_800) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_800 & ~_T_813) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_834 & _T_830) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_830 & ~_T_834) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_853 & _T_841) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & ~_T_853) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_859 & (_T_841 & same_cycle_resp)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & same_cycle_resp & ~_T_859) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_863 & (_T_841 & same_cycle_resp)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & same_cycle_resp & ~_T_863) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_871 & (_T_841 & ~same_cycle_resp)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & ~same_cycle_resp & ~_T_871) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_875 & (_T_841 & ~same_cycle_resp)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_841 & ~same_cycle_resp & ~_T_875) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_887 & _T_885) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_885 & ~_T_887) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_896) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~_T_896) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Debug.scala:1746:19)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_930 & _T_922) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_922 & ~_T_930) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_940 & _T_922) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_922 & ~_T_940) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Debug.scala:1746:19)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[8:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[3:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[3:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_17[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_54(
+  input         clock,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [11:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [11:0] _GEN_71 = {{10'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [11:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 12'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire [12:0] _T_12 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [12:0] _T_36 = $signed(_T_12) & 13'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 13'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [11:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_0 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_0 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_1 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_2 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_2 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    inflight <= _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+    inflight_opcodes <= _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+    inflight_sizes <= _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+    if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    inflight_1 <= inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+    inflight_sizes_1 <= inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+    if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & io_in_d_valid) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & _T_543) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & _T_543) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & _T_543) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & _T_543) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & _T_543) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & _T_567) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & _T_567) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & _T_567) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & _T_597) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & _T_608) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & _T_652) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & _T_689) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & _T_689) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at Periphery.scala:88:16)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at Periphery.scala:88:16)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[11:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLDebugModuleInner(
+  input         clock,
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [2:0]  auto_tl_in_a_bits_opcode,
+  input  [2:0]  auto_tl_in_a_bits_param,
+  input  [1:0]  auto_tl_in_a_bits_size,
+  input  [6:0]  auto_tl_in_a_bits_source,
+  input  [11:0] auto_tl_in_a_bits_address,
+  input  [3:0]  auto_tl_in_a_bits_mask,
+  input  [31:0] auto_tl_in_a_bits_data,
+  input         auto_tl_in_a_bits_corrupt,
+  input         auto_tl_in_d_ready,
+  output        auto_tl_in_d_valid,
+  output [2:0]  auto_tl_in_d_bits_opcode,
+  output [1:0]  auto_tl_in_d_bits_size,
+  output [6:0]  auto_tl_in_d_bits_source,
+  output [31:0] auto_tl_in_d_bits_data,
+  output        auto_dmi_in_a_ready,
+  input         auto_dmi_in_a_valid,
+  input  [2:0]  auto_dmi_in_a_bits_opcode,
+  input  [2:0]  auto_dmi_in_a_bits_param,
+  input  [1:0]  auto_dmi_in_a_bits_size,
+  input         auto_dmi_in_a_bits_source,
+  input  [8:0]  auto_dmi_in_a_bits_address,
+  input  [3:0]  auto_dmi_in_a_bits_mask,
+  input  [31:0] auto_dmi_in_a_bits_data,
+  input         auto_dmi_in_a_bits_corrupt,
+  input         auto_dmi_in_d_ready,
+  output        auto_dmi_in_d_valid,
+  output [2:0]  auto_dmi_in_d_bits_opcode,
+  output [1:0]  auto_dmi_in_d_bits_size,
+  output        auto_dmi_in_d_bits_source,
+  output [31:0] auto_dmi_in_d_bits_data,
+  input         io_dmactive,
+  output        io_innerCtrl_ready,
+  input         io_innerCtrl_valid,
+  input         io_innerCtrl_bits_resumereq,
+  input  [9:0]  io_innerCtrl_bits_hartsel,
+  input         io_innerCtrl_bits_ackhavereset,
+  input         io_innerCtrl_bits_hrmask_0,
+  output        io_hgDebugInt_0
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+  reg [31:0] _RAND_47;
+  reg [31:0] _RAND_48;
+  reg [31:0] _RAND_49;
+  reg [31:0] _RAND_50;
+  reg [31:0] _RAND_51;
+  reg [31:0] _RAND_52;
+  reg [31:0] _RAND_53;
+  reg [31:0] _RAND_54;
+  reg [31:0] _RAND_55;
+  reg [31:0] _RAND_56;
+  reg [31:0] _RAND_57;
+  reg [31:0] _RAND_58;
+  reg [31:0] _RAND_59;
+  reg [31:0] _RAND_60;
+  reg [31:0] _RAND_61;
+  reg [31:0] _RAND_62;
+  reg [31:0] _RAND_63;
+  reg [31:0] _RAND_64;
+  reg [31:0] _RAND_65;
+  reg [31:0] _RAND_66;
+  reg [31:0] _RAND_67;
+  reg [31:0] _RAND_68;
+  reg [31:0] _RAND_69;
+  reg [31:0] _RAND_70;
+  reg [31:0] _RAND_71;
+  reg [31:0] _RAND_72;
+  reg [31:0] _RAND_73;
+  reg [31:0] _RAND_74;
+  reg [31:0] _RAND_75;
+  reg [31:0] _RAND_76;
+  reg [31:0] _RAND_77;
+  reg [31:0] _RAND_78;
+  reg [31:0] _RAND_79;
+  reg [31:0] _RAND_80;
+  reg [31:0] _RAND_81;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [8:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_1_clock; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_1_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_1_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [11:0] monitor_1_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_1_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_1_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_1_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  hartIsInResetSync_0_debug_hartReset_0_clock; // @[ShiftReg.scala 45:23]
+  wire  hartIsInResetSync_0_debug_hartReset_0_reset; // @[ShiftReg.scala 45:23]
+  wire  hartIsInResetSync_0_debug_hartReset_0_io_d; // @[ShiftReg.scala 45:23]
+  wire  hartIsInResetSync_0_debug_hartReset_0_io_q; // @[ShiftReg.scala 45:23]
+  reg  haltedBitRegs; // @[Debug.scala 778:31]
+  reg  resumeReqRegs; // @[Debug.scala 779:31]
+  reg  haveResetBitRegs; // @[Debug.scala 780:31]
+  wire  hamaskWrSel_0 = io_innerCtrl_bits_hartsel == 10'h0; // @[Debug.scala 842:61]
+  reg  hrmaskReg_0; // @[Debug.scala 854:29]
+  wire  _T_1 = ~io_dmactive; // @[Debug.scala 861:11]
+  wire  _T_4 = io_innerCtrl_ready & io_innerCtrl_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_0 = 1'h0; // @[Debug.scala 868:34]
+  reg  hrDebugIntReg_0; // @[Debug.scala 868:34]
+  wire  _T_10 = ~haltedBitRegs; // @[package.scala 70:38]
+  wire  _T_11 = hrDebugIntReg_0 & _T_10; // @[package.scala 65:72]
+  wire  hartIsInResetSync_0 = hartIsInResetSync_0_debug_hartReset_0_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  _T_12 = hartIsInResetSync_0 | _T_11; // @[package.scala 66:75]
+  wire  _T_13 = hrmaskReg_0 & _T_12; // @[package.scala 65:72]
+  wire  resumereq = _T_4 & io_innerCtrl_bits_resumereq; // @[Debug.scala 890:41]
+  wire  _resumeAcks_T_1 = ~hamaskWrSel_0; // @[Debug.scala 1235:41]
+  wire  resumeAcks = resumereq ? ~resumeReqRegs & ~hamaskWrSel_0 : ~resumeReqRegs; // @[Debug.scala 1234:24 1235:20 1237:20]
+  wire [31:0] haltedStatus_0 = {{31'd0}, haltedBitRegs}; // @[Debug.scala 1063:30]
+  wire  haltedSummary = |haltedStatus_0; // @[Debug.scala 1073:48]
+  wire [31:0] HALTSUM1RdData_haltsum1 = {{31'd0}, haltedSummary};
+  reg [2:0] ABSTRACTCSReg_cmderr; // @[Debug.scala 1087:34]
+  wire  in_bits_read = auto_dmi_in_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [6:0] in_bits_index = auto_dmi_in_a_bits_address[8:2]; // @[Edges.scala 191:34]
+  wire [4:0] out_iindex = {in_bits_index[5],in_bits_index[3],in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [6:0] out_findex = in_bits_index & 7'h50; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_44 = out_findex == 7'h0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_2 = out_findex == 7'h10; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_20 = out_findex == 7'h40; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_backSel_T = 32'h1 << out_iindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_6 = _out_backSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__61 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_6 & out_findex == 7'h10
+    ; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backMask_T_11 = auto_dmi_in_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = auto_dmi_in_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_7 = auto_dmi_in_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_5 = auto_dmi_in_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_backMask = {_out_backMask_T_11,_out_backMask_T_9,_out_backMask_T_7,_out_backMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_womask_61 = &out_backMask[10:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_61 = out_woready__61 & out_womask_61; // @[RegisterRouter.scala 83:24]
+  reg [1:0] ctrlStateReg; // @[Debug.scala 1616:27]
+  wire  ABSTRACTCSWrEnLegal = ctrlStateReg == 2'h0; // @[Debug.scala 1626:44]
+  wire  ABSTRACTCSWrEn = out_f_woready_61 & ABSTRACTCSWrEnLegal; // @[Debug.scala 1095:51]
+  wire [2:0] ABSTRACTCSWrData_cmderr = auto_dmi_in_a_bits_data[10:8]; // @[RegisterRouter.scala 83:24]
+  wire [2:0] _ABSTRACTCSReg_cmderr_T = ~ABSTRACTCSWrData_cmderr; // @[Debug.scala 1115:58]
+  wire [2:0] _ABSTRACTCSReg_cmderr_T_1 = ABSTRACTCSReg_cmderr & _ABSTRACTCSReg_cmderr_T; // @[Debug.scala 1115:56]
+  wire [2:0] _GEN_37 = ABSTRACTCSWrEn ? _ABSTRACTCSReg_cmderr_T_1 : ABSTRACTCSReg_cmderr; // @[Debug.scala 1114:30 1115:32 1087:34]
+  wire  _T_1383 = ctrlStateReg == 2'h1; // @[Debug.scala 1681:30]
+  reg [7:0] COMMANDRdData_cmdtype; // @[Debug.scala 1172:25]
+  wire  commandRegIsAccessRegister = COMMANDRdData_cmdtype == 8'h0; // @[Debug.scala 1641:58]
+  reg [23:0] COMMANDRdData_control; // @[Debug.scala 1172:25]
+  wire [31:0] _accessRegisterCommandReg_T = {COMMANDRdData_cmdtype,COMMANDRdData_control}; // @[Debug.scala 1417:62]
+  wire  accessRegisterCommandReg_transfer = _accessRegisterCommandReg_T[17]; // @[Debug.scala 1417:73]
+  wire  accessRegisterCommandReg_write = _accessRegisterCommandReg_T[16]; // @[Debug.scala 1417:73]
+  wire [15:0] accessRegisterCommandReg_regno = _accessRegisterCommandReg_T[15:0]; // @[Debug.scala 1417:73]
+  wire [2:0] accessRegisterCommandReg_size = _accessRegisterCommandReg_T[22:20]; // @[Debug.scala 1417:73]
+  wire  accessRegIsLegalSize = accessRegisterCommandReg_size == 3'h2 | accessRegisterCommandReg_size == 3'h3; // @[Debug.scala 1649:72]
+  wire  accessRegIsGPR = accessRegisterCommandReg_regno >= 16'h1000 & accessRegisterCommandReg_regno <= 16'h101f &
+    accessRegIsLegalSize; // @[Debug.scala 1650:117]
+  wire  _GEN_3614 = ~accessRegisterCommandReg_transfer | accessRegIsGPR ? 1'h0 : 1'h1; // @[Debug.scala 1660:73 1661:33]
+  wire  commandRegIsUnsupported = commandRegIsAccessRegister ? _GEN_3614 : 1'h1; // @[Debug.scala 1657:39]
+  wire  _GEN_3615 = (~accessRegisterCommandReg_transfer | accessRegIsGPR) & _T_10; // @[Debug.scala 1660:73 1662:33]
+  wire  commandRegBadHaltResume = commandRegIsAccessRegister & _GEN_3615; // @[Debug.scala 1657:39]
+  wire  _GEN_3631 = commandRegIsUnsupported ? 1'h0 : commandRegBadHaltResume; // @[Debug.scala 1688:38]
+  wire  _GEN_3644 = ctrlStateReg == 2'h1 & _GEN_3631; // @[Debug.scala 1681:59]
+  wire  errorHaltResume = ABSTRACTCSWrEnLegal ? 1'h0 : _GEN_3644; // @[Debug.scala 1673:47]
+  wire [2:0] _GEN_38 = errorHaltResume ? 3'h4 : _GEN_37; // @[Debug.scala 1111:36 1112:30]
+  wire  out_backSel_7 = _out_backSel_T[7]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__86 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_7 & out_findex == 7'h10
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_86 = &out_backMask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_86 = out_woready__86 & out_womask_86; // @[RegisterRouter.scala 83:24]
+  wire  COMMANDWrEn = out_f_woready_86 & ABSTRACTCSWrEnLegal; // @[Debug.scala 1180:40]
+  wire [31:0] COMMANDWrDataVal = out_f_woready_86 ? auto_dmi_in_a_bits_data : 32'h0; // @[Debug.scala 265:{24,30}]
+  wire [7:0] COMMANDWrData_cmdtype = COMMANDWrDataVal[31:24]; // @[Debug.scala 1175:65]
+  wire  commandWrIsAccessRegister = COMMANDWrData_cmdtype == 8'h0; // @[Debug.scala 1640:60]
+  wire  _wrAccessRegisterCommand_T_1 = ABSTRACTCSReg_cmderr == 3'h0; // @[Debug.scala 1666:103]
+  wire  wrAccessRegisterCommand = COMMANDWrEn & commandWrIsAccessRegister & ABSTRACTCSReg_cmderr == 3'h0; // @[Debug.scala 1666:78]
+  wire  out_backSel_4 = _out_backSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__92 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_4 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_92 = &out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_92 = out_woready__92 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__92 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_4 & out_findex == 7'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_romask_92 = |out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_92 = out_roready__92 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_0 = out_f_woready_92 | out_f_roready_92; // @[Debug.scala 1153:105]
+  reg [11:0] ABSTRACTAUTOReg_autoexecdata; // @[Debug.scala 1131:36]
+  wire  autoexecData_0 = dmiAbstractDataAccessVec_0 & ABSTRACTAUTOReg_autoexecdata[0]; // @[Debug.scala 1164:140]
+  wire  out_backSel_16 = _out_backSel_T[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__27 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_16 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_27 = out_woready__27 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__27 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_16 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_27 = out_roready__27 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_0 = out_f_woready_27 | out_f_roready_27; // @[Debug.scala 1156:108]
+  reg [15:0] ABSTRACTAUTOReg_autoexecprogbuf; // @[Debug.scala 1131:36]
+  wire  autoexecProg_0 = dmiProgramBufferAccessVec_0 & ABSTRACTAUTOReg_autoexecprogbuf[0]; // @[Debug.scala 1165:144]
+  wire  out_backSel_17 = _out_backSel_T[17]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__19 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_17 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_19 = out_woready__19 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__19 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_17 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_19 = out_roready__19 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_4 = out_f_woready_19 | out_f_roready_19; // @[Debug.scala 1156:108]
+  wire  autoexecProg_1 = dmiProgramBufferAccessVec_4 & ABSTRACTAUTOReg_autoexecprogbuf[1]; // @[Debug.scala 1165:144]
+  wire  out_backSel_18 = _out_backSel_T[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__31 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_18 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_31 = out_woready__31 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__31 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_18 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_31 = out_roready__31 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_8 = out_f_woready_31 | out_f_roready_31; // @[Debug.scala 1156:108]
+  wire  autoexecProg_2 = dmiProgramBufferAccessVec_8 & ABSTRACTAUTOReg_autoexecprogbuf[2]; // @[Debug.scala 1165:144]
+  wire  out_backSel_19 = _out_backSel_T[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__74 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_19 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_74 = out_woready__74 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__74 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_19 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_74 = out_roready__74 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_12 = out_f_woready_74 | out_f_roready_74; // @[Debug.scala 1156:108]
+  wire  autoexecProg_3 = dmiProgramBufferAccessVec_12 & ABSTRACTAUTOReg_autoexecprogbuf[3]; // @[Debug.scala 1165:144]
+  wire  out_backSel_20 = _out_backSel_T[20]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__87 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_20 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_87 = out_woready__87 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__87 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_20 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_87 = out_roready__87 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_16 = out_f_woready_87 | out_f_roready_87; // @[Debug.scala 1156:108]
+  wire  autoexecProg_4 = dmiProgramBufferAccessVec_16 & ABSTRACTAUTOReg_autoexecprogbuf[4]; // @[Debug.scala 1165:144]
+  wire  out_backSel_21 = _out_backSel_T[21]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__7 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_21 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_7 = out_woready__7 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__7 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_21 & out_findex == 7'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_7 = out_roready__7 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_20 = out_f_woready_7 | out_f_roready_7; // @[Debug.scala 1156:108]
+  wire  autoexecProg_5 = dmiProgramBufferAccessVec_20 & ABSTRACTAUTOReg_autoexecprogbuf[5]; // @[Debug.scala 1165:144]
+  wire  out_backSel_22 = _out_backSel_T[22]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__15 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_22 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_15 = out_woready__15 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__15 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_22 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_15 = out_roready__15 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_24 = out_f_woready_15 | out_f_roready_15; // @[Debug.scala 1156:108]
+  wire  autoexecProg_6 = dmiProgramBufferAccessVec_24 & ABSTRACTAUTOReg_autoexecprogbuf[6]; // @[Debug.scala 1165:144]
+  wire  out_backSel_23 = _out_backSel_T[23]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__70 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_23 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_70 = out_woready__70 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__70 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_23 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_70 = out_roready__70 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_28 = out_f_woready_70 | out_f_roready_70; // @[Debug.scala 1156:108]
+  wire  autoexecProg_7 = dmiProgramBufferAccessVec_28 & ABSTRACTAUTOReg_autoexecprogbuf[7]; // @[Debug.scala 1165:144]
+  wire  out_backSel_24 = _out_backSel_T[24]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__82 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_24 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_82 = out_woready__82 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__82 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_24 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_82 = out_roready__82 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_32 = out_f_woready_82 | out_f_roready_82; // @[Debug.scala 1156:108]
+  wire  autoexecProg_8 = dmiProgramBufferAccessVec_32 & ABSTRACTAUTOReg_autoexecprogbuf[8]; // @[Debug.scala 1165:144]
+  wire  out_backSel_25 = _out_backSel_T[25]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__23 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_25 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_23 = out_woready__23 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__23 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_25 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_23 = out_roready__23 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_36 = out_f_woready_23 | out_f_roready_23; // @[Debug.scala 1156:108]
+  wire  autoexecProg_9 = dmiProgramBufferAccessVec_36 & ABSTRACTAUTOReg_autoexecprogbuf[9]; // @[Debug.scala 1165:144]
+  wire  out_backSel_26 = _out_backSel_T[26]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__0 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_26 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready = out_woready__0 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__0 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_26 & out_findex == 7'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready = out_roready__0 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_40 = out_f_woready | out_f_roready; // @[Debug.scala 1156:108]
+  wire  autoexecProg_10 = dmiProgramBufferAccessVec_40 & ABSTRACTAUTOReg_autoexecprogbuf[10]; // @[Debug.scala 1165:144]
+  wire  out_backSel_27 = _out_backSel_T[27]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__78 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_27 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_78 = out_woready__78 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__78 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_27 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_78 = out_roready__78 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_44 = out_f_woready_78 | out_f_roready_78; // @[Debug.scala 1156:108]
+  wire  autoexecProg_11 = dmiProgramBufferAccessVec_44 & ABSTRACTAUTOReg_autoexecprogbuf[11]; // @[Debug.scala 1165:144]
+  wire  out_backSel_28 = _out_backSel_T[28]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__66 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_28 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_66 = out_woready__66 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__66 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_28 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_66 = out_roready__66 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_48 = out_f_woready_66 | out_f_roready_66; // @[Debug.scala 1156:108]
+  wire  autoexecProg_12 = dmiProgramBufferAccessVec_48 & ABSTRACTAUTOReg_autoexecprogbuf[12]; // @[Debug.scala 1165:144]
+  wire  out_backSel_29 = _out_backSel_T[29]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__35 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_29 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_35 = out_woready__35 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__35 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_29 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_35 = out_roready__35 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_52 = out_f_woready_35 | out_f_roready_35; // @[Debug.scala 1156:108]
+  wire  autoexecProg_13 = dmiProgramBufferAccessVec_52 & ABSTRACTAUTOReg_autoexecprogbuf[13]; // @[Debug.scala 1165:144]
+  wire  out_backSel_30 = _out_backSel_T[30]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__11 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_30 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_11 = out_woready__11 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__11 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_30 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_11 = out_roready__11 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_56 = out_f_woready_11 | out_f_roready_11; // @[Debug.scala 1156:108]
+  wire  autoexecProg_14 = dmiProgramBufferAccessVec_56 & ABSTRACTAUTOReg_autoexecprogbuf[14]; // @[Debug.scala 1165:144]
+  wire  out_backSel_31 = _out_backSel_T[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__96 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_31 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_96 = out_woready__96 & out_womask_92; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__96 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_31 & out_findex == 7'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_96 = out_roready__96 & out_romask_92; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_60 = out_f_woready_96 | out_f_roready_96; // @[Debug.scala 1156:108]
+  wire  autoexecProg_15 = dmiProgramBufferAccessVec_60 & ABSTRACTAUTOReg_autoexecprogbuf[15]; // @[Debug.scala 1165:144]
+  wire  autoexec = autoexecData_0 | (autoexecProg_0 | autoexecProg_1 | autoexecProg_2 | autoexecProg_3 | autoexecProg_4
+     | autoexecProg_5 | autoexecProg_6 | autoexecProg_7 | autoexecProg_8 | autoexecProg_9 | autoexecProg_10 |
+    autoexecProg_11 | autoexecProg_12 | autoexecProg_13 | autoexecProg_14 | autoexecProg_15); // @[Debug.scala 1167:48]
+  wire  regAccessRegisterCommand = autoexec & commandRegIsAccessRegister & _wrAccessRegisterCommand_T_1; // @[Debug.scala 1667:78]
+  wire  commandWrIsUnsupported = COMMANDWrEn & ~commandWrIsAccessRegister; // @[Debug.scala 1643:46]
+  wire  _T_1382 = autoexec & commandRegIsUnsupported; // @[Debug.scala 1678:28]
+  wire  _GEN_3621 = commandWrIsUnsupported | _T_1382; // @[Debug.scala 1676:43 1677:26]
+  wire  _GEN_3623 = wrAccessRegisterCommand | regAccessRegisterCommand ? 1'h0 : _GEN_3621; // @[Debug.scala 1674:66]
+  wire  _GEN_3642 = ctrlStateReg == 2'h1 & commandRegIsUnsupported; // @[Debug.scala 1681:59]
+  wire  errorUnsupported = ABSTRACTCSWrEnLegal ? _GEN_3623 : _GEN_3642; // @[Debug.scala 1673:47]
+  wire  _T_1384 = ctrlStateReg == 2'h2; // @[Debug.scala 1702:30]
+  wire  in_1_bits_read = auto_tl_in_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [9:0] in_1_bits_index = auto_tl_in_a_bits_address[11:2]; // @[Edges.scala 191:34]
+  wire [8:0] out_iindex_1 = {in_1_bits_index[8],in_1_bits_index[7],in_1_bits_index[6],in_1_bits_index[5],in_1_bits_index
+    [4],in_1_bits_index[3],in_1_bits_index[2],in_1_bits_index[1],in_1_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [9:0] out_findex_1 = in_1_bits_index & 10'h200; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_1122 = out_findex_1 == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_1642 = out_findex_1 == 10'h200; // @[RegisterRouter.scala 83:24]
+  wire [511:0] _out_backSel_T_1 = 512'h1 << out_iindex_1; // @[OneHot.scala 57:35]
+  wire  out_backSel_67 = _out_backSel_T_1[67]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1_841 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_backSel_67 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backMask_T_23 = auto_tl_in_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_21 = auto_tl_in_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_19 = auto_tl_in_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_17 = auto_tl_in_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_backMask_1 = {_out_backMask_T_23,_out_backMask_T_21,_out_backMask_T_19,_out_backMask_T_17}; // @[Cat.scala 31:58]
+  wire  out_womask_941 = &out_backMask_1[9:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_941 = out_woready_1_841 & out_womask_941; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_3640 = ctrlStateReg == 2'h2 & out_f_woready_941; // @[Debug.scala 1702:51]
+  wire  _GEN_3646 = ctrlStateReg == 2'h1 ? 1'h0 : _GEN_3640; // @[Debug.scala 1681:59]
+  wire  errorException = ABSTRACTCSWrEnLegal ? 1'h0 : _GEN_3646; // @[Debug.scala 1673:47]
+  wire  _errorBusy_T = ~ABSTRACTCSWrEnLegal; // @[Debug.scala 1632:45]
+  wire  out_backSel_8 = _out_backSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__4 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_8 & out_findex == 7'h10
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_4 = &out_backMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_4 = out_woready__4 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire  _errorBusy_T_3 = out_f_woready_4 & _errorBusy_T; // @[Debug.scala 1633:42]
+  wire  _errorBusy_T_4 = out_f_woready_61 & ~ABSTRACTCSWrEnLegal | _errorBusy_T_3; // @[Debug.scala 1632:74]
+  wire  out_womask_6 = &out_backMask[31:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_6 = out_woready__4 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire  _errorBusy_T_6 = out_f_woready_6 & _errorBusy_T; // @[Debug.scala 1634:44]
+  wire  _errorBusy_T_7 = _errorBusy_T_4 | _errorBusy_T_6; // @[Debug.scala 1633:74]
+  wire  _errorBusy_T_9 = out_f_woready_86 & _errorBusy_T; // @[Debug.scala 1635:42]
+  wire  _errorBusy_T_10 = _errorBusy_T_7 | _errorBusy_T_9; // @[Debug.scala 1634:74]
+  wire  out_womask_93 = &out_backMask[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_93 = out_woready__92 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_romask_93 = |out_backMask[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_93 = out_roready__92 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_1 = out_f_woready_93 | out_f_roready_93; // @[Debug.scala 1153:105]
+  wire  out_womask_94 = &out_backMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_94 = out_woready__92 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_romask_94 = |out_backMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_94 = out_roready__92 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_2 = out_f_woready_94 | out_f_roready_94; // @[Debug.scala 1153:105]
+  wire  out_womask_95 = &out_backMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_95 = out_woready__92 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_romask_95 = |out_backMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_95 = out_roready__92 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_3 = out_f_woready_95 | out_f_roready_95; // @[Debug.scala 1153:105]
+  wire  dmiAbstractDataAccess = dmiAbstractDataAccessVec_0 | dmiAbstractDataAccessVec_1 | dmiAbstractDataAccessVec_2 |
+    dmiAbstractDataAccessVec_3; // @[Debug.scala 1158:68]
+  wire  _errorBusy_T_12 = dmiAbstractDataAccess & _errorBusy_T; // @[Debug.scala 1636:42]
+  wire  _errorBusy_T_13 = _errorBusy_T_10 | _errorBusy_T_12; // @[Debug.scala 1635:74]
+  wire  out_f_woready_28 = out_woready__27 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_28 = out_roready__27 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_1 = out_f_woready_28 | out_f_roready_28; // @[Debug.scala 1156:108]
+  wire  out_f_woready_29 = out_woready__27 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_29 = out_roready__27 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_2 = out_f_woready_29 | out_f_roready_29; // @[Debug.scala 1156:108]
+  wire  out_f_woready_30 = out_woready__27 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_30 = out_roready__27 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_3 = out_f_woready_30 | out_f_roready_30; // @[Debug.scala 1156:108]
+  wire  out_f_woready_20 = out_woready__19 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_20 = out_roready__19 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_5 = out_f_woready_20 | out_f_roready_20; // @[Debug.scala 1156:108]
+  wire  out_f_woready_21 = out_woready__19 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_21 = out_roready__19 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_6 = out_f_woready_21 | out_f_roready_21; // @[Debug.scala 1156:108]
+  wire  out_f_woready_22 = out_woready__19 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_22 = out_roready__19 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_7 = out_f_woready_22 | out_f_roready_22; // @[Debug.scala 1156:108]
+  wire  out_f_woready_32 = out_woready__31 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_32 = out_roready__31 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_9 = out_f_woready_32 | out_f_roready_32; // @[Debug.scala 1156:108]
+  wire  out_f_woready_33 = out_woready__31 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_33 = out_roready__31 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_10 = out_f_woready_33 | out_f_roready_33; // @[Debug.scala 1156:108]
+  wire  out_f_woready_34 = out_woready__31 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_34 = out_roready__31 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_11 = out_f_woready_34 | out_f_roready_34; // @[Debug.scala 1156:108]
+  wire  out_f_woready_75 = out_woready__74 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_75 = out_roready__74 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_13 = out_f_woready_75 | out_f_roready_75; // @[Debug.scala 1156:108]
+  wire  out_f_woready_76 = out_woready__74 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_76 = out_roready__74 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_14 = out_f_woready_76 | out_f_roready_76; // @[Debug.scala 1156:108]
+  wire  out_f_woready_77 = out_woready__74 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_77 = out_roready__74 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_15 = out_f_woready_77 | out_f_roready_77; // @[Debug.scala 1156:108]
+  wire  out_f_woready_88 = out_woready__87 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_88 = out_roready__87 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_17 = out_f_woready_88 | out_f_roready_88; // @[Debug.scala 1156:108]
+  wire  out_f_woready_89 = out_woready__87 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_89 = out_roready__87 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_18 = out_f_woready_89 | out_f_roready_89; // @[Debug.scala 1156:108]
+  wire  out_f_woready_90 = out_woready__87 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_90 = out_roready__87 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_19 = out_f_woready_90 | out_f_roready_90; // @[Debug.scala 1156:108]
+  wire  out_f_woready_8 = out_woready__7 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_8 = out_roready__7 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_21 = out_f_woready_8 | out_f_roready_8; // @[Debug.scala 1156:108]
+  wire  out_f_woready_9 = out_woready__7 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_9 = out_roready__7 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_22 = out_f_woready_9 | out_f_roready_9; // @[Debug.scala 1156:108]
+  wire  out_f_woready_10 = out_woready__7 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_10 = out_roready__7 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_23 = out_f_woready_10 | out_f_roready_10; // @[Debug.scala 1156:108]
+  wire  out_f_woready_16 = out_woready__15 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_16 = out_roready__15 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_25 = out_f_woready_16 | out_f_roready_16; // @[Debug.scala 1156:108]
+  wire  out_f_woready_17 = out_woready__15 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_17 = out_roready__15 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_26 = out_f_woready_17 | out_f_roready_17; // @[Debug.scala 1156:108]
+  wire  out_f_woready_18 = out_woready__15 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_18 = out_roready__15 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_27 = out_f_woready_18 | out_f_roready_18; // @[Debug.scala 1156:108]
+  wire  out_f_woready_71 = out_woready__70 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_71 = out_roready__70 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_29 = out_f_woready_71 | out_f_roready_71; // @[Debug.scala 1156:108]
+  wire  out_f_woready_72 = out_woready__70 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_72 = out_roready__70 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_30 = out_f_woready_72 | out_f_roready_72; // @[Debug.scala 1156:108]
+  wire  _dmiProgramBufferAccess_T_29 = dmiProgramBufferAccessVec_0 | dmiProgramBufferAccessVec_1 |
+    dmiProgramBufferAccessVec_2 | dmiProgramBufferAccessVec_3 | dmiProgramBufferAccessVec_4 |
+    dmiProgramBufferAccessVec_5 | dmiProgramBufferAccessVec_6 | dmiProgramBufferAccessVec_7 |
+    dmiProgramBufferAccessVec_8 | dmiProgramBufferAccessVec_9 | dmiProgramBufferAccessVec_10 |
+    dmiProgramBufferAccessVec_11 | dmiProgramBufferAccessVec_12 | dmiProgramBufferAccessVec_13 |
+    dmiProgramBufferAccessVec_14 | dmiProgramBufferAccessVec_15 | dmiProgramBufferAccessVec_16 |
+    dmiProgramBufferAccessVec_17 | dmiProgramBufferAccessVec_18 | dmiProgramBufferAccessVec_19 |
+    dmiProgramBufferAccessVec_20 | dmiProgramBufferAccessVec_21 | dmiProgramBufferAccessVec_22 |
+    dmiProgramBufferAccessVec_23 | dmiProgramBufferAccessVec_24 | dmiProgramBufferAccessVec_25 |
+    dmiProgramBufferAccessVec_26 | dmiProgramBufferAccessVec_27 | dmiProgramBufferAccessVec_28 |
+    dmiProgramBufferAccessVec_29 | dmiProgramBufferAccessVec_30; // @[Debug.scala 1159:69]
+  wire  out_f_woready_73 = out_woready__70 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_73 = out_roready__70 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_31 = out_f_woready_73 | out_f_roready_73; // @[Debug.scala 1156:108]
+  wire  out_f_woready_83 = out_woready__82 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_83 = out_roready__82 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_33 = out_f_woready_83 | out_f_roready_83; // @[Debug.scala 1156:108]
+  wire  out_f_woready_84 = out_woready__82 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_84 = out_roready__82 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_34 = out_f_woready_84 | out_f_roready_84; // @[Debug.scala 1156:108]
+  wire  out_f_woready_85 = out_woready__82 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_85 = out_roready__82 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_35 = out_f_woready_85 | out_f_roready_85; // @[Debug.scala 1156:108]
+  wire  out_f_woready_24 = out_woready__23 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_24 = out_roready__23 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_37 = out_f_woready_24 | out_f_roready_24; // @[Debug.scala 1156:108]
+  wire  out_f_woready_25 = out_woready__23 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_25 = out_roready__23 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_38 = out_f_woready_25 | out_f_roready_25; // @[Debug.scala 1156:108]
+  wire  out_f_woready_26 = out_woready__23 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_26 = out_roready__23 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_39 = out_f_woready_26 | out_f_roready_26; // @[Debug.scala 1156:108]
+  wire  out_f_woready_1 = out_woready__0 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_1 = out_roready__0 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_41 = out_f_woready_1 | out_f_roready_1; // @[Debug.scala 1156:108]
+  wire  out_f_woready_2 = out_woready__0 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_2 = out_roready__0 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_42 = out_f_woready_2 | out_f_roready_2; // @[Debug.scala 1156:108]
+  wire  out_f_woready_3 = out_woready__0 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_3 = out_roready__0 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_43 = out_f_woready_3 | out_f_roready_3; // @[Debug.scala 1156:108]
+  wire  out_f_woready_79 = out_woready__78 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_79 = out_roready__78 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_45 = out_f_woready_79 | out_f_roready_79; // @[Debug.scala 1156:108]
+  wire  out_f_woready_80 = out_woready__78 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_80 = out_roready__78 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_46 = out_f_woready_80 | out_f_roready_80; // @[Debug.scala 1156:108]
+  wire  out_f_woready_81 = out_woready__78 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_81 = out_roready__78 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_47 = out_f_woready_81 | out_f_roready_81; // @[Debug.scala 1156:108]
+  wire  out_f_woready_67 = out_woready__66 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_67 = out_roready__66 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_49 = out_f_woready_67 | out_f_roready_67; // @[Debug.scala 1156:108]
+  wire  out_f_woready_68 = out_woready__66 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_68 = out_roready__66 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_50 = out_f_woready_68 | out_f_roready_68; // @[Debug.scala 1156:108]
+  wire  out_f_woready_69 = out_woready__66 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_69 = out_roready__66 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_51 = out_f_woready_69 | out_f_roready_69; // @[Debug.scala 1156:108]
+  wire  out_f_woready_36 = out_woready__35 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_36 = out_roready__35 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_53 = out_f_woready_36 | out_f_roready_36; // @[Debug.scala 1156:108]
+  wire  out_f_woready_37 = out_woready__35 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_37 = out_roready__35 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_54 = out_f_woready_37 | out_f_roready_37; // @[Debug.scala 1156:108]
+  wire  out_f_woready_38 = out_woready__35 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_38 = out_roready__35 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_55 = out_f_woready_38 | out_f_roready_38; // @[Debug.scala 1156:108]
+  wire  out_f_woready_12 = out_woready__11 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_12 = out_roready__11 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_57 = out_f_woready_12 | out_f_roready_12; // @[Debug.scala 1156:108]
+  wire  out_f_woready_13 = out_woready__11 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_13 = out_roready__11 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_58 = out_f_woready_13 | out_f_roready_13; // @[Debug.scala 1156:108]
+  wire  out_f_woready_14 = out_woready__11 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_14 = out_roready__11 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_59 = out_f_woready_14 | out_f_roready_14; // @[Debug.scala 1156:108]
+  wire  _dmiProgramBufferAccess_T_59 = _dmiProgramBufferAccess_T_29 | dmiProgramBufferAccessVec_31 |
+    dmiProgramBufferAccessVec_32 | dmiProgramBufferAccessVec_33 | dmiProgramBufferAccessVec_34 |
+    dmiProgramBufferAccessVec_35 | dmiProgramBufferAccessVec_36 | dmiProgramBufferAccessVec_37 |
+    dmiProgramBufferAccessVec_38 | dmiProgramBufferAccessVec_39 | dmiProgramBufferAccessVec_40 |
+    dmiProgramBufferAccessVec_41 | dmiProgramBufferAccessVec_42 | dmiProgramBufferAccessVec_43 |
+    dmiProgramBufferAccessVec_44 | dmiProgramBufferAccessVec_45 | dmiProgramBufferAccessVec_46 |
+    dmiProgramBufferAccessVec_47 | dmiProgramBufferAccessVec_48 | dmiProgramBufferAccessVec_49 |
+    dmiProgramBufferAccessVec_50 | dmiProgramBufferAccessVec_51 | dmiProgramBufferAccessVec_52 |
+    dmiProgramBufferAccessVec_53 | dmiProgramBufferAccessVec_54 | dmiProgramBufferAccessVec_55 |
+    dmiProgramBufferAccessVec_56 | dmiProgramBufferAccessVec_57 | dmiProgramBufferAccessVec_58 |
+    dmiProgramBufferAccessVec_59 | dmiProgramBufferAccessVec_60; // @[Debug.scala 1159:69]
+  wire  out_f_woready_97 = out_woready__96 & out_womask_93; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_97 = out_roready__96 & out_romask_93; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_61 = out_f_woready_97 | out_f_roready_97; // @[Debug.scala 1156:108]
+  wire  out_f_woready_98 = out_woready__96 & out_womask_94; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_98 = out_roready__96 & out_romask_94; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_62 = out_f_woready_98 | out_f_roready_98; // @[Debug.scala 1156:108]
+  wire  out_f_woready_99 = out_woready__96 & out_womask_95; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_99 = out_roready__96 & out_romask_95; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_63 = out_f_woready_99 | out_f_roready_99; // @[Debug.scala 1156:108]
+  wire  dmiProgramBufferAccess = _dmiProgramBufferAccess_T_59 | dmiProgramBufferAccessVec_61 |
+    dmiProgramBufferAccessVec_62 | dmiProgramBufferAccessVec_63; // @[Debug.scala 1159:69]
+  wire  _errorBusy_T_15 = dmiProgramBufferAccess & _errorBusy_T; // @[Debug.scala 1637:42]
+  wire  errorBusy = _errorBusy_T_13 | _errorBusy_T_15; // @[Debug.scala 1636:74]
+  wire [15:0] ABSTRACTAUTOWrData_autoexecprogbuf = auto_dmi_in_a_bits_data[31:16]; // @[RegisterRouter.scala 83:24]
+  wire [11:0] ABSTRACTAUTOWrData_autoexecdata = {{11'd0}, auto_dmi_in_a_bits_data[0]};
+  wire [11:0] _ABSTRACTAUTOReg_autoexecdata_T = ABSTRACTAUTOWrData_autoexecdata & 12'h1; // @[Debug.scala 1148:73]
+  wire [23:0] COMMANDWrData_control = COMMANDWrDataVal[23:0]; // @[Debug.scala 1175:65]
+  reg [7:0] abstractDataMem_0; // @[Debug.scala 1195:36]
+  reg [7:0] abstractDataMem_1; // @[Debug.scala 1195:36]
+  reg [7:0] abstractDataMem_2; // @[Debug.scala 1195:36]
+  reg [7:0] abstractDataMem_3; // @[Debug.scala 1195:36]
+  reg [7:0] programBufferMem_0; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_1; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_2; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_3; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_4; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_5; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_6; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_7; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_8; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_9; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_10; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_11; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_12; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_13; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_14; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_15; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_16; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_17; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_18; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_19; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_20; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_21; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_22; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_23; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_24; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_25; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_26; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_27; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_28; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_29; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_30; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_31; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_32; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_33; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_34; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_35; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_36; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_37; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_38; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_39; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_40; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_41; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_42; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_43; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_44; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_45; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_46; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_47; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_48; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_49; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_50; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_51; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_52; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_53; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_54; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_55; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_56; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_57; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_58; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_59; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_60; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_61; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_62; // @[Debug.scala 1199:34]
+  reg [7:0] programBufferMem_63; // @[Debug.scala 1199:34]
+  wire  _resumeReqRegs_T = ~hartIsInResetSync_0; // @[Debug.scala 1212:42]
+  wire  _resumeReqRegs_T_1 = resumeReqRegs & ~hartIsInResetSync_0; // @[Debug.scala 1212:40]
+  wire [1:0] _GEN_3655 = {{1'd0}, haltedBitRegs}; // @[Debug.scala 1218:43]
+  wire [1:0] _haltedBitRegs_T = _GEN_3655 | 2'h1; // @[Debug.scala 1218:43]
+  wire [1:0] _GEN_3656 = {{1'd0}, _resumeReqRegs_T}; // @[Debug.scala 1218:64]
+  wire [1:0] _haltedBitRegs_T_2 = _haltedBitRegs_T & _GEN_3656; // @[Debug.scala 1218:64]
+  wire [1:0] _haltedBitRegs_T_4 = _GEN_3655 & 2'h2; // @[Debug.scala 1220:43]
+  wire [1:0] _haltedBitRegs_T_6 = _haltedBitRegs_T_4 & _GEN_3656; // @[Debug.scala 1220:69]
+  wire  _haltedBitRegs_T_8 = haltedBitRegs & _resumeReqRegs_T; // @[Debug.scala 1222:42]
+  wire  out_backSel_66 = _out_backSel_T_1[66]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1_708 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_backSel_66 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_808 = out_woready_1_708 & out_womask_941; // @[RegisterRouter.scala 83:24]
+  wire [1:0] _GEN_61 = out_f_woready_808 ? _haltedBitRegs_T_6 : {{1'd0}, _haltedBitRegs_T_8}; // @[Debug.scala 1219:39 1220:25 1222:25]
+  wire  out_backSel_64 = _out_backSel_T_1[64]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1_547 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_backSel_64 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_647 = out_woready_1_547 & out_womask_941; // @[RegisterRouter.scala 83:24]
+  wire [1:0] _GEN_62 = out_f_woready_647 ? _haltedBitRegs_T_2 : _GEN_61; // @[Debug.scala 1217:31 1218:25]
+  wire [1:0] _GEN_3659 = {{1'd0}, resumeReqRegs}; // @[Debug.scala 1226:43]
+  wire [1:0] _resumeReqRegs_T_3 = _GEN_3659 & 2'h2; // @[Debug.scala 1226:43]
+  wire [1:0] _resumeReqRegs_T_5 = _resumeReqRegs_T_3 & _GEN_3656; // @[Debug.scala 1226:69]
+  wire [1:0] _GEN_63 = out_f_woready_808 ? _resumeReqRegs_T_5 : {{1'd0}, _resumeReqRegs_T_1}; // @[Debug.scala 1212:23 1225:33 1226:25]
+  wire  _resumeReqRegs_T_8 = (resumeReqRegs | hamaskWrSel_0) & _resumeReqRegs_T; // @[Debug.scala 1229:65]
+  wire [1:0] _GEN_64 = resumereq ? {{1'd0}, _resumeReqRegs_T_8} : _GEN_63; // @[Debug.scala 1228:26 1229:25]
+  wire [1:0] _GEN_65 = _T_1 ? 2'h0 : _GEN_62; // @[Debug.scala 1207:45 1208:23]
+  wire [1:0] _GEN_66 = _T_1 ? 2'h0 : _GEN_64; // @[Debug.scala 1207:45 1209:23]
+  wire [31:0] out_prepend_2 = {programBufferMem_43,programBufferMem_42,programBufferMem_41,programBufferMem_40}; // @[Cat.scala 31:58]
+  wire [1:0] out_prepend_3 = {1'h0,ABSTRACTAUTOReg_autoexecdata[0]}; // @[Cat.scala 31:58]
+  wire [15:0] _out_T_108 = {{14'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_4 = {ABSTRACTAUTOReg_autoexecprogbuf,_out_T_108}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_7 = {programBufferMem_23,programBufferMem_22,programBufferMem_21,programBufferMem_20}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_10 = {programBufferMem_59,programBufferMem_58,programBufferMem_57,programBufferMem_56}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_13 = {programBufferMem_27,programBufferMem_26,programBufferMem_25,programBufferMem_24}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_16 = {programBufferMem_7,programBufferMem_6,programBufferMem_5,programBufferMem_4}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_19 = {programBufferMem_39,programBufferMem_38,programBufferMem_37,programBufferMem_36}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_22 = {programBufferMem_3,programBufferMem_2,programBufferMem_1,programBufferMem_0}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_25 = {programBufferMem_11,programBufferMem_10,programBufferMem_9,programBufferMem_8}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_28 = {programBufferMem_55,programBufferMem_54,programBufferMem_53,programBufferMem_52}; // @[Cat.scala 31:58]
+  wire [16:0] out_prepend_41 = {resumeAcks,1'h0,1'h0,1'h0,1'h0,_T_10,_T_10,haltedBitRegs,haltedBitRegs,8'ha2}; // @[Cat.scala 31:58]
+  wire [20:0] out_prepend_45 = {1'h0,haveResetBitRegs,haveResetBitRegs,resumeAcks,out_prepend_41}; // @[Cat.scala 31:58]
+  wire [21:0] _out_T_642 = {{1'd0}, out_prepend_45}; // @[RegisterRouter.scala 83:24]
+  wire [22:0] out_prepend_46 = {1'h0,_out_T_642}; // @[Cat.scala 31:58]
+  wire  abstractCommandBusy = ctrlStateReg != 2'h0; // @[Debug.scala 1624:42]
+  wire [13:0] out_prepend_51 = {1'h0,abstractCommandBusy,1'h0,ABSTRACTCSReg_cmderr,8'h1}; // @[Cat.scala 31:58]
+  wire [23:0] _out_T_707 = {{10'd0}, out_prepend_51}; // @[RegisterRouter.scala 83:24]
+  wire [28:0] out_prepend_52 = {5'h10,_out_T_707}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_55 = {programBufferMem_51,programBufferMem_50,programBufferMem_49,programBufferMem_48}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_58 = {programBufferMem_31,programBufferMem_30,programBufferMem_29,programBufferMem_28}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_61 = {programBufferMem_15,programBufferMem_14,programBufferMem_13,programBufferMem_12}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_64 = {programBufferMem_47,programBufferMem_46,programBufferMem_45,programBufferMem_44}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_67 = {programBufferMem_35,programBufferMem_34,programBufferMem_33,programBufferMem_32}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_70 = {programBufferMem_19,programBufferMem_18,programBufferMem_17,programBufferMem_16}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_73 = {abstractDataMem_3,abstractDataMem_2,abstractDataMem_1,abstractDataMem_0}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_76 = {programBufferMem_63,programBufferMem_62,programBufferMem_61,programBufferMem_60}; // @[Cat.scala 31:58]
+  wire  _GEN_266 = 5'h1 == out_iindex ? _out_T_2 : _out_T_20; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_268 = 5'h3 == out_iindex ? _out_T_2 : 5'h2 == out_iindex | _GEN_266; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_269 = 5'h4 == out_iindex ? _out_T_44 : _GEN_268; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_271 = 5'h6 == out_iindex ? _out_T_2 : 5'h5 == out_iindex | _GEN_269; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_272 = 5'h7 == out_iindex ? _out_T_2 : _GEN_271; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_273 = 5'h8 == out_iindex ? _out_T_2 : _GEN_272; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_281 = 5'h10 == out_iindex ? _out_T_44 : 5'hf == out_iindex | (5'he == out_iindex | (5'hd == out_iindex | (5'hc
+     == out_iindex | (5'hb == out_iindex | (5'ha == out_iindex | (5'h9 == out_iindex | _GEN_273)))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_282 = 5'h11 == out_iindex ? _out_T_44 : _GEN_281; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_283 = 5'h12 == out_iindex ? _out_T_44 : _GEN_282; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_284 = 5'h13 == out_iindex ? _out_T_44 : _GEN_283; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_285 = 5'h14 == out_iindex ? _out_T_44 : _GEN_284; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_286 = 5'h15 == out_iindex ? _out_T_44 : _GEN_285; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_287 = 5'h16 == out_iindex ? _out_T_44 : _GEN_286; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_288 = 5'h17 == out_iindex ? _out_T_44 : _GEN_287; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_289 = 5'h18 == out_iindex ? _out_T_44 : _GEN_288; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_290 = 5'h19 == out_iindex ? _out_T_44 : _GEN_289; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_291 = 5'h1a == out_iindex ? _out_T_44 : _GEN_290; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_292 = 5'h1b == out_iindex ? _out_T_44 : _GEN_291; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_293 = 5'h1c == out_iindex ? _out_T_44 : _GEN_292; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_294 = 5'h1d == out_iindex ? _out_T_44 : _GEN_293; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_295 = 5'h1e == out_iindex ? _out_T_44 : _GEN_294; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_296 = 5'h1f == out_iindex ? _out_T_44 : _GEN_295; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_1 = {{9'd0}, out_prepend_46}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_298 = 5'h1 == out_iindex ? _out_out_bits_data_WIRE_1_1 : haltedStatus_0; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_299 = 5'h2 == out_iindex ? 32'h0 : _GEN_298; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_300 = 5'h3 == out_iindex ? HALTSUM1RdData_haltsum1 : _GEN_299; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_301 = 5'h4 == out_iindex ? out_prepend_73 : _GEN_300; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_302 = 5'h5 == out_iindex ? 32'h0 : _GEN_301; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{3'd0}, out_prepend_52}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_303 = 5'h6 == out_iindex ? _out_out_bits_data_WIRE_1_6 : _GEN_302; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_304 = 5'h7 == out_iindex ? _accessRegisterCommandReg_T : _GEN_303; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_305 = 5'h8 == out_iindex ? out_prepend_4 : _GEN_304; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_306 = 5'h9 == out_iindex ? 32'h0 : _GEN_305; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_307 = 5'ha == out_iindex ? 32'h0 : _GEN_306; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_308 = 5'hb == out_iindex ? 32'h0 : _GEN_307; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_309 = 5'hc == out_iindex ? 32'h0 : _GEN_308; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_310 = 5'hd == out_iindex ? 32'h0 : _GEN_309; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_311 = 5'he == out_iindex ? 32'h0 : _GEN_310; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_312 = 5'hf == out_iindex ? 32'h0 : _GEN_311; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_313 = 5'h10 == out_iindex ? out_prepend_22 : _GEN_312; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_314 = 5'h11 == out_iindex ? out_prepend_16 : _GEN_313; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_315 = 5'h12 == out_iindex ? out_prepend_25 : _GEN_314; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_316 = 5'h13 == out_iindex ? out_prepend_61 : _GEN_315; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_317 = 5'h14 == out_iindex ? out_prepend_70 : _GEN_316; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_318 = 5'h15 == out_iindex ? out_prepend_7 : _GEN_317; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_319 = 5'h16 == out_iindex ? out_prepend_13 : _GEN_318; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_320 = 5'h17 == out_iindex ? out_prepend_58 : _GEN_319; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_321 = 5'h18 == out_iindex ? out_prepend_67 : _GEN_320; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_322 = 5'h19 == out_iindex ? out_prepend_19 : _GEN_321; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_323 = 5'h1a == out_iindex ? out_prepend_2 : _GEN_322; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_324 = 5'h1b == out_iindex ? out_prepend_64 : _GEN_323; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_325 = 5'h1c == out_iindex ? out_prepend_55 : _GEN_324; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_326 = 5'h1d == out_iindex ? out_prepend_28 : _GEN_325; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_327 = 5'h1e == out_iindex ? out_prepend_10 : _GEN_326; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_328 = 5'h1f == out_iindex ? out_prepend_76 : _GEN_327; // @[MuxLiteral.scala 48:{10,10}]
+  reg  goReg; // @[Debug.scala 1379:27]
+  wire [9:0] hartGoingId = auto_tl_in_a_bits_data[9:0]; // @[RegisterRouter.scala 83:24]
+  wire  _T_342 = ~(hartGoingId == 10'h0); // @[Debug.scala 1391:15]
+  wire  out_backSel_65 = _out_backSel_T_1[65]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1_370 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_backSel_65 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_470 = out_woready_1_370 & out_womask_941; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_397 = out_f_woready_470 ? 1'h0 : goReg; // @[Debug.scala 1390:33 1392:15 1379:27]
+  wire  _GEN_3628 = commandRegBadHaltResume ? 1'h0 : 1'h1; // @[Debug.scala 1691:43]
+  wire  _GEN_3632 = commandRegIsUnsupported ? 1'h0 : _GEN_3628; // @[Debug.scala 1688:38]
+  wire  _GEN_3645 = ctrlStateReg == 2'h1 & _GEN_3632; // @[Debug.scala 1681:59]
+  wire  goAbstract = ABSTRACTCSWrEnLegal ? 1'h0 : _GEN_3645; // @[Debug.scala 1673:47]
+  wire  _GEN_398 = goAbstract | _GEN_397; // @[Debug.scala 1388:25 1389:15]
+  wire  accessRegisterCommandReg_postexec = _accessRegisterCommandReg_T[18]; // @[Debug.scala 1417:73]
+  reg [31:0] abstractGeneratedMem_0; // @[Debug.scala 1470:35]
+  reg [31:0] abstractGeneratedMem_1; // @[Debug.scala 1470:35]
+  wire [15:0] _abstractGeneratedMem_0_inst_rd_T = accessRegisterCommandReg_regno & 16'h1f; // @[Debug.scala 1477:54]
+  wire [4:0] abstractGeneratedMem_0_inst_rd = _abstractGeneratedMem_0_inst_rd_T[4:0]; // @[Debug.scala 1473:22 1477:19]
+  wire [31:0] _abstractGeneratedMem_0_T = {17'h7000,accessRegisterCommandReg_size,abstractGeneratedMem_0_inst_rd,7'h3}; // @[Debug.scala 1481:12]
+  wire [31:0] _abstractGeneratedMem_0_T_1 = {7'h1c,abstractGeneratedMem_0_inst_rd,5'h0,accessRegisterCommandReg_size,5'h0
+    ,7'h23}; // @[Debug.scala 1494:12]
+  wire  out_wimask_100 = &out_backMask_1[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_101 = &out_backMask_1[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_102 = &out_backMask_1[23:16]; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_78 = {6'h0,resumeReqRegs,goReg,6'h0,resumeReqRegs,goReg,6'h0,resumeReqRegs,goReg}; // @[Cat.scala 31:58]
+  wire  out_wimask_103 = &out_backMask_1[31:24]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_79 = {6'h0,resumeReqRegs,goReg,out_prepend_78}; // @[Cat.scala 31:58]
+  wire  out_frontSel_217 = _out_backSel_T_1[217]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_40 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_217 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_140 = out_wivalid_1_40 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_141 = out_wivalid_1_40 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_142 = out_wivalid_1_40 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_143 = out_wivalid_1_40 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_216 = _out_backSel_T_1[216]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_176 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_216 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_276 = out_wivalid_1_176 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_277 = out_wivalid_1_176 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_278 = out_wivalid_1_176 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_279 = out_wivalid_1_176 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_211 = _out_backSel_T_1[211]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_200 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_211 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_300 = out_wivalid_1_200 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_301 = out_wivalid_1_200 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_302 = out_wivalid_1_200 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_303 = out_wivalid_1_200 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_221 = _out_backSel_T_1[221]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_232 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_221 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_332 = out_wivalid_1_232 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_333 = out_wivalid_1_232 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_334 = out_wivalid_1_232 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_335 = out_wivalid_1_232 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_220 = _out_backSel_T_1[220]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_309 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_220 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_409 = out_wivalid_1_309 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_410 = out_wivalid_1_309 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_411 = out_wivalid_1_309 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_412 = out_wivalid_1_309 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_224 = _out_backSel_T_1[224]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_403 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_224 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_503 = out_wivalid_1_403 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_504 = out_wivalid_1_403 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_505 = out_wivalid_1_403 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_506 = out_wivalid_1_403 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_212 = _out_backSel_T_1[212]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_467 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_212 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_567 = out_wivalid_1_467 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_568 = out_wivalid_1_467 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_569 = out_wivalid_1_467 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_570 = out_wivalid_1_467 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_219 = _out_backSel_T_1[219]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_624 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_219 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_724 = out_wivalid_1_624 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_725 = out_wivalid_1_624 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_726 = out_wivalid_1_624 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_727 = out_wivalid_1_624 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_208 = _out_backSel_T_1[208]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_668 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_208 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_768 = out_wivalid_1_668 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_769 = out_wivalid_1_668 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_770 = out_wivalid_1_668 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_771 = out_wivalid_1_668 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_213 = _out_backSel_T_1[213]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_696 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_213 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_796 = out_wivalid_1_696 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_797 = out_wivalid_1_696 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_798 = out_wivalid_1_696 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_799 = out_wivalid_1_696 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_223 = _out_backSel_T_1[223]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_733 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_223 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_833 = out_wivalid_1_733 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_834 = out_wivalid_1_733 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_835 = out_wivalid_1_733 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_836 = out_wivalid_1_733 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_209 = _out_backSel_T_1[209]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_785 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_209 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_885 = out_wivalid_1_785 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_886 = out_wivalid_1_785 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_887 = out_wivalid_1_785 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_888 = out_wivalid_1_785 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_218 = _out_backSel_T_1[218]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_918 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_218 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1018 = out_wivalid_1_918 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1019 = out_wivalid_1_918 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1020 = out_wivalid_1_918 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1021 = out_wivalid_1_918 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_214 = _out_backSel_T_1[214]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_991 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_214 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1091 = out_wivalid_1_991 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1092 = out_wivalid_1_991 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1093 = out_wivalid_1_991 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1094 = out_wivalid_1_991 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_210 = _out_backSel_T_1[210]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_1043 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_210 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1143 = out_wivalid_1_1043 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1144 = out_wivalid_1_1043 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1145 = out_wivalid_1_1043 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1146 = out_wivalid_1_1043 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_215 = _out_backSel_T_1[215]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_1159 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_215 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1259 = out_wivalid_1_1159 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1260 = out_wivalid_1_1159 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1261 = out_wivalid_1_1159 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1262 = out_wivalid_1_1159 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_222 = _out_backSel_T_1[222]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_1167 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_222 & out_findex_1
+     == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1267 = out_wivalid_1_1167 & out_wimask_100; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1268 = out_wivalid_1_1167 & out_wimask_101; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1269 = out_wivalid_1_1167 & out_wimask_102; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1270 = out_wivalid_1_1167 & out_wimask_103; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_2523 = 9'h1 == out_iindex_1 ? _out_T_1642 : _out_T_1642; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2524 = 9'h2 == out_iindex_1 ? _out_T_1642 : _GEN_2523; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2525 = 9'h3 == out_iindex_1 ? _out_T_1642 : _GEN_2524; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2526 = 9'h4 == out_iindex_1 ? _out_T_1642 : _GEN_2525; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2527 = 9'h5 == out_iindex_1 ? _out_T_1642 : _GEN_2526; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2528 = 9'h6 == out_iindex_1 ? _out_T_1642 : _GEN_2527; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2529 = 9'h7 == out_iindex_1 ? _out_T_1642 : _GEN_2528; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2530 = 9'h8 == out_iindex_1 ? _out_T_1642 : _GEN_2529; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2531 = 9'h9 == out_iindex_1 ? _out_T_1642 : _GEN_2530; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2532 = 9'ha == out_iindex_1 ? _out_T_1642 : _GEN_2531; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2533 = 9'hb == out_iindex_1 ? _out_T_1642 : _GEN_2532; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2534 = 9'hc == out_iindex_1 ? _out_T_1642 : _GEN_2533; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2535 = 9'hd == out_iindex_1 ? _out_T_1642 : _GEN_2534; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2536 = 9'he == out_iindex_1 ? _out_T_1642 : _GEN_2535; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2537 = 9'hf == out_iindex_1 ? _out_T_1642 : _GEN_2536; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2538 = 9'h10 == out_iindex_1 ? _out_T_1642 : _GEN_2537; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2539 = 9'h11 == out_iindex_1 ? _out_T_1642 : _GEN_2538; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2540 = 9'h12 == out_iindex_1 ? _out_T_1642 : _GEN_2539; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2541 = 9'h13 == out_iindex_1 ? _out_T_1642 : _GEN_2540; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2542 = 9'h14 == out_iindex_1 ? _out_T_1642 : _GEN_2541; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2557 = 9'h23 == out_iindex_1 | (9'h22 == out_iindex_1 | (9'h21 == out_iindex_1 | (9'h20 == out_iindex_1 | (9'h1f
+     == out_iindex_1 | (9'h1e == out_iindex_1 | (9'h1d == out_iindex_1 | (9'h1c == out_iindex_1 | (9'h1b == out_iindex_1
+     | (9'h1a == out_iindex_1 | (9'h19 == out_iindex_1 | (9'h18 == out_iindex_1 | (9'h17 == out_iindex_1 | (9'h16 ==
+    out_iindex_1 | (9'h15 == out_iindex_1 | _GEN_2542)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2572 = 9'h32 == out_iindex_1 | (9'h31 == out_iindex_1 | (9'h30 == out_iindex_1 | (9'h2f == out_iindex_1 | (9'h2e
+     == out_iindex_1 | (9'h2d == out_iindex_1 | (9'h2c == out_iindex_1 | (9'h2b == out_iindex_1 | (9'h2a == out_iindex_1
+     | (9'h29 == out_iindex_1 | (9'h28 == out_iindex_1 | (9'h27 == out_iindex_1 | (9'h26 == out_iindex_1 | (9'h25 ==
+    out_iindex_1 | (9'h24 == out_iindex_1 | _GEN_2557)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2586 = 9'h40 == out_iindex_1 ? _out_T_1122 : 9'h3f == out_iindex_1 | (9'h3e == out_iindex_1 | (9'h3d ==
+    out_iindex_1 | (9'h3c == out_iindex_1 | (9'h3b == out_iindex_1 | (9'h3a == out_iindex_1 | (9'h39 == out_iindex_1 | (9'h38
+     == out_iindex_1 | (9'h37 == out_iindex_1 | (9'h36 == out_iindex_1 | (9'h35 == out_iindex_1 | (9'h34 == out_iindex_1
+     | (9'h33 == out_iindex_1 | _GEN_2572)))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2587 = 9'h41 == out_iindex_1 ? _out_T_1122 : _GEN_2586; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2588 = 9'h42 == out_iindex_1 ? _out_T_1122 : _GEN_2587; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2589 = 9'h43 == out_iindex_1 ? _out_T_1122 : _GEN_2588; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2604 = 9'h52 == out_iindex_1 | (9'h51 == out_iindex_1 | (9'h50 == out_iindex_1 | (9'h4f == out_iindex_1 | (9'h4e
+     == out_iindex_1 | (9'h4d == out_iindex_1 | (9'h4c == out_iindex_1 | (9'h4b == out_iindex_1 | (9'h4a == out_iindex_1
+     | (9'h49 == out_iindex_1 | (9'h48 == out_iindex_1 | (9'h47 == out_iindex_1 | (9'h46 == out_iindex_1 | (9'h45 ==
+    out_iindex_1 | (9'h44 == out_iindex_1 | _GEN_2589)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2619 = 9'h61 == out_iindex_1 | (9'h60 == out_iindex_1 | (9'h5f == out_iindex_1 | (9'h5e == out_iindex_1 | (9'h5d
+     == out_iindex_1 | (9'h5c == out_iindex_1 | (9'h5b == out_iindex_1 | (9'h5a == out_iindex_1 | (9'h59 == out_iindex_1
+     | (9'h58 == out_iindex_1 | (9'h57 == out_iindex_1 | (9'h56 == out_iindex_1 | (9'h55 == out_iindex_1 | (9'h54 ==
+    out_iindex_1 | (9'h53 == out_iindex_1 | _GEN_2604)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2634 = 9'h70 == out_iindex_1 | (9'h6f == out_iindex_1 | (9'h6e == out_iindex_1 | (9'h6d == out_iindex_1 | (9'h6c
+     == out_iindex_1 | (9'h6b == out_iindex_1 | (9'h6a == out_iindex_1 | (9'h69 == out_iindex_1 | (9'h68 == out_iindex_1
+     | (9'h67 == out_iindex_1 | (9'h66 == out_iindex_1 | (9'h65 == out_iindex_1 | (9'h64 == out_iindex_1 | (9'h63 ==
+    out_iindex_1 | (9'h62 == out_iindex_1 | _GEN_2619)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2649 = 9'h7f == out_iindex_1 | (9'h7e == out_iindex_1 | (9'h7d == out_iindex_1 | (9'h7c == out_iindex_1 | (9'h7b
+     == out_iindex_1 | (9'h7a == out_iindex_1 | (9'h79 == out_iindex_1 | (9'h78 == out_iindex_1 | (9'h77 == out_iindex_1
+     | (9'h76 == out_iindex_1 | (9'h75 == out_iindex_1 | (9'h74 == out_iindex_1 | (9'h73 == out_iindex_1 | (9'h72 ==
+    out_iindex_1 | (9'h71 == out_iindex_1 | _GEN_2634)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2664 = 9'h8e == out_iindex_1 | (9'h8d == out_iindex_1 | (9'h8c == out_iindex_1 | (9'h8b == out_iindex_1 | (9'h8a
+     == out_iindex_1 | (9'h89 == out_iindex_1 | (9'h88 == out_iindex_1 | (9'h87 == out_iindex_1 | (9'h86 == out_iindex_1
+     | (9'h85 == out_iindex_1 | (9'h84 == out_iindex_1 | (9'h83 == out_iindex_1 | (9'h82 == out_iindex_1 | (9'h81 ==
+    out_iindex_1 | (9'h80 == out_iindex_1 | _GEN_2649)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2679 = 9'h9d == out_iindex_1 | (9'h9c == out_iindex_1 | (9'h9b == out_iindex_1 | (9'h9a == out_iindex_1 | (9'h99
+     == out_iindex_1 | (9'h98 == out_iindex_1 | (9'h97 == out_iindex_1 | (9'h96 == out_iindex_1 | (9'h95 == out_iindex_1
+     | (9'h94 == out_iindex_1 | (9'h93 == out_iindex_1 | (9'h92 == out_iindex_1 | (9'h91 == out_iindex_1 | (9'h90 ==
+    out_iindex_1 | (9'h8f == out_iindex_1 | _GEN_2664)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2694 = 9'hac == out_iindex_1 | (9'hab == out_iindex_1 | (9'haa == out_iindex_1 | (9'ha9 == out_iindex_1 | (9'ha8
+     == out_iindex_1 | (9'ha7 == out_iindex_1 | (9'ha6 == out_iindex_1 | (9'ha5 == out_iindex_1 | (9'ha4 == out_iindex_1
+     | (9'ha3 == out_iindex_1 | (9'ha2 == out_iindex_1 | (9'ha1 == out_iindex_1 | (9'ha0 == out_iindex_1 | (9'h9f ==
+    out_iindex_1 | (9'h9e == out_iindex_1 | _GEN_2679)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2709 = 9'hbb == out_iindex_1 | (9'hba == out_iindex_1 | (9'hb9 == out_iindex_1 | (9'hb8 == out_iindex_1 | (9'hb7
+     == out_iindex_1 | (9'hb6 == out_iindex_1 | (9'hb5 == out_iindex_1 | (9'hb4 == out_iindex_1 | (9'hb3 == out_iindex_1
+     | (9'hb2 == out_iindex_1 | (9'hb1 == out_iindex_1 | (9'hb0 == out_iindex_1 | (9'haf == out_iindex_1 | (9'hae ==
+    out_iindex_1 | (9'had == out_iindex_1 | _GEN_2694)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2714 = 9'hc0 == out_iindex_1 ? _out_T_1122 : 9'hbf == out_iindex_1 | (9'hbe == out_iindex_1 | (9'hbd ==
+    out_iindex_1 | (9'hbc == out_iindex_1 | _GEN_2709))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2728 = 9'hce == out_iindex_1 ? _out_T_1122 : 9'hcd == out_iindex_1 | (9'hcc == out_iindex_1 | (9'hcb ==
+    out_iindex_1 | (9'hca == out_iindex_1 | (9'hc9 == out_iindex_1 | (9'hc8 == out_iindex_1 | (9'hc7 == out_iindex_1 | (9'hc6
+     == out_iindex_1 | (9'hc5 == out_iindex_1 | (9'hc4 == out_iindex_1 | (9'hc3 == out_iindex_1 | (9'hc2 == out_iindex_1
+     | (9'hc1 == out_iindex_1 | _GEN_2714)))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2729 = 9'hcf == out_iindex_1 ? _out_T_1122 : _GEN_2728; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2730 = 9'hd0 == out_iindex_1 ? _out_T_1122 : _GEN_2729; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2731 = 9'hd1 == out_iindex_1 ? _out_T_1122 : _GEN_2730; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2732 = 9'hd2 == out_iindex_1 ? _out_T_1122 : _GEN_2731; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2733 = 9'hd3 == out_iindex_1 ? _out_T_1122 : _GEN_2732; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2734 = 9'hd4 == out_iindex_1 ? _out_T_1122 : _GEN_2733; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2735 = 9'hd5 == out_iindex_1 ? _out_T_1122 : _GEN_2734; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2736 = 9'hd6 == out_iindex_1 ? _out_T_1122 : _GEN_2735; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2737 = 9'hd7 == out_iindex_1 ? _out_T_1122 : _GEN_2736; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2738 = 9'hd8 == out_iindex_1 ? _out_T_1122 : _GEN_2737; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2739 = 9'hd9 == out_iindex_1 ? _out_T_1122 : _GEN_2738; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2740 = 9'hda == out_iindex_1 ? _out_T_1122 : _GEN_2739; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2741 = 9'hdb == out_iindex_1 ? _out_T_1122 : _GEN_2740; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2742 = 9'hdc == out_iindex_1 ? _out_T_1122 : _GEN_2741; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2743 = 9'hdd == out_iindex_1 ? _out_T_1122 : _GEN_2742; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2744 = 9'hde == out_iindex_1 ? _out_T_1122 : _GEN_2743; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2745 = 9'hdf == out_iindex_1 ? _out_T_1122 : _GEN_2744; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2746 = 9'he0 == out_iindex_1 ? _out_T_1122 : _GEN_2745; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2761 = 9'hef == out_iindex_1 | (9'hee == out_iindex_1 | (9'hed == out_iindex_1 | (9'hec == out_iindex_1 | (9'heb
+     == out_iindex_1 | (9'hea == out_iindex_1 | (9'he9 == out_iindex_1 | (9'he8 == out_iindex_1 | (9'he7 == out_iindex_1
+     | (9'he6 == out_iindex_1 | (9'he5 == out_iindex_1 | (9'he4 == out_iindex_1 | (9'he3 == out_iindex_1 | (9'he2 ==
+    out_iindex_1 | (9'he1 == out_iindex_1 | _GEN_2746)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2776 = 9'hfe == out_iindex_1 | (9'hfd == out_iindex_1 | (9'hfc == out_iindex_1 | (9'hfb == out_iindex_1 | (9'hfa
+     == out_iindex_1 | (9'hf9 == out_iindex_1 | (9'hf8 == out_iindex_1 | (9'hf7 == out_iindex_1 | (9'hf6 == out_iindex_1
+     | (9'hf5 == out_iindex_1 | (9'hf4 == out_iindex_1 | (9'hf3 == out_iindex_1 | (9'hf2 == out_iindex_1 | (9'hf1 ==
+    out_iindex_1 | (9'hf0 == out_iindex_1 | _GEN_2761)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2778 = 9'h100 == out_iindex_1 ? _out_T_1122 : 9'hff == out_iindex_1 | _GEN_2776; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2779 = 9'h101 == out_iindex_1 ? _out_T_1122 : _GEN_2778; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2780 = 9'h102 == out_iindex_1 ? _out_T_1122 : _GEN_2779; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2781 = 9'h103 == out_iindex_1 ? _out_T_1122 : _GEN_2780; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2782 = 9'h104 == out_iindex_1 ? _out_T_1122 : _GEN_2781; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2783 = 9'h105 == out_iindex_1 ? _out_T_1122 : _GEN_2782; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2784 = 9'h106 == out_iindex_1 ? _out_T_1122 : _GEN_2783; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2785 = 9'h107 == out_iindex_1 ? _out_T_1122 : _GEN_2784; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2786 = 9'h108 == out_iindex_1 ? _out_T_1122 : _GEN_2785; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2787 = 9'h109 == out_iindex_1 ? _out_T_1122 : _GEN_2786; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2788 = 9'h10a == out_iindex_1 ? _out_T_1122 : _GEN_2787; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2789 = 9'h10b == out_iindex_1 ? _out_T_1122 : _GEN_2788; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2790 = 9'h10c == out_iindex_1 ? _out_T_1122 : _GEN_2789; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2791 = 9'h10d == out_iindex_1 ? _out_T_1122 : _GEN_2790; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2792 = 9'h10e == out_iindex_1 ? _out_T_1122 : _GEN_2791; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2793 = 9'h10f == out_iindex_1 ? _out_T_1122 : _GEN_2792; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2794 = 9'h110 == out_iindex_1 ? _out_T_1122 : _GEN_2793; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2795 = 9'h111 == out_iindex_1 ? _out_T_1122 : _GEN_2794; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2796 = 9'h112 == out_iindex_1 ? _out_T_1122 : _GEN_2795; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2797 = 9'h113 == out_iindex_1 ? _out_T_1122 : _GEN_2796; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2798 = 9'h114 == out_iindex_1 ? _out_T_1122 : _GEN_2797; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2799 = 9'h115 == out_iindex_1 ? _out_T_1122 : _GEN_2798; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2800 = 9'h116 == out_iindex_1 ? _out_T_1122 : _GEN_2799; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2801 = 9'h117 == out_iindex_1 ? _out_T_1122 : _GEN_2800; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2802 = 9'h118 == out_iindex_1 ? _out_T_1122 : _GEN_2801; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2803 = 9'h119 == out_iindex_1 ? _out_T_1122 : _GEN_2802; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2804 = 9'h11a == out_iindex_1 ? _out_T_1122 : _GEN_2803; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2805 = 9'h11b == out_iindex_1 ? _out_T_1122 : _GEN_2804; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2806 = 9'h11c == out_iindex_1 ? _out_T_1122 : _GEN_2805; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2807 = 9'h11d == out_iindex_1 ? _out_T_1122 : _GEN_2806; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2808 = 9'h11e == out_iindex_1 ? _out_T_1122 : _GEN_2807; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2809 = 9'h11f == out_iindex_1 ? _out_T_1122 : _GEN_2808; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2810 = 9'h120 == out_iindex_1 ? _out_T_1122 : _GEN_2809; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2811 = 9'h121 == out_iindex_1 ? _out_T_1122 : _GEN_2810; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2812 = 9'h122 == out_iindex_1 ? _out_T_1122 : _GEN_2811; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2813 = 9'h123 == out_iindex_1 ? _out_T_1122 : _GEN_2812; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2814 = 9'h124 == out_iindex_1 ? _out_T_1122 : _GEN_2813; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2815 = 9'h125 == out_iindex_1 ? _out_T_1122 : _GEN_2814; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2816 = 9'h126 == out_iindex_1 ? _out_T_1122 : _GEN_2815; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2817 = 9'h127 == out_iindex_1 ? _out_T_1122 : _GEN_2816; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2818 = 9'h128 == out_iindex_1 ? _out_T_1122 : _GEN_2817; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2819 = 9'h129 == out_iindex_1 ? _out_T_1122 : _GEN_2818; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2820 = 9'h12a == out_iindex_1 ? _out_T_1122 : _GEN_2819; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2821 = 9'h12b == out_iindex_1 ? _out_T_1122 : _GEN_2820; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2822 = 9'h12c == out_iindex_1 ? _out_T_1122 : _GEN_2821; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2823 = 9'h12d == out_iindex_1 ? _out_T_1122 : _GEN_2822; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2824 = 9'h12e == out_iindex_1 ? _out_T_1122 : _GEN_2823; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2825 = 9'h12f == out_iindex_1 ? _out_T_1122 : _GEN_2824; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2826 = 9'h130 == out_iindex_1 ? _out_T_1122 : _GEN_2825; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2827 = 9'h131 == out_iindex_1 ? _out_T_1122 : _GEN_2826; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2828 = 9'h132 == out_iindex_1 ? _out_T_1122 : _GEN_2827; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2829 = 9'h133 == out_iindex_1 ? _out_T_1122 : _GEN_2828; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2830 = 9'h134 == out_iindex_1 ? _out_T_1122 : _GEN_2829; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2831 = 9'h135 == out_iindex_1 ? _out_T_1122 : _GEN_2830; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2832 = 9'h136 == out_iindex_1 ? _out_T_1122 : _GEN_2831; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2833 = 9'h137 == out_iindex_1 ? _out_T_1122 : _GEN_2832; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2834 = 9'h138 == out_iindex_1 ? _out_T_1122 : _GEN_2833; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2835 = 9'h139 == out_iindex_1 ? _out_T_1122 : _GEN_2834; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2836 = 9'h13a == out_iindex_1 ? _out_T_1122 : _GEN_2835; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2837 = 9'h13b == out_iindex_1 ? _out_T_1122 : _GEN_2836; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2838 = 9'h13c == out_iindex_1 ? _out_T_1122 : _GEN_2837; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2839 = 9'h13d == out_iindex_1 ? _out_T_1122 : _GEN_2838; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2840 = 9'h13e == out_iindex_1 ? _out_T_1122 : _GEN_2839; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2841 = 9'h13f == out_iindex_1 ? _out_T_1122 : _GEN_2840; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2842 = 9'h140 == out_iindex_1 ? _out_T_1122 : _GEN_2841; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2843 = 9'h141 == out_iindex_1 ? _out_T_1122 : _GEN_2842; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2844 = 9'h142 == out_iindex_1 ? _out_T_1122 : _GEN_2843; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2845 = 9'h143 == out_iindex_1 ? _out_T_1122 : _GEN_2844; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2846 = 9'h144 == out_iindex_1 ? _out_T_1122 : _GEN_2845; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2847 = 9'h145 == out_iindex_1 ? _out_T_1122 : _GEN_2846; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2848 = 9'h146 == out_iindex_1 ? _out_T_1122 : _GEN_2847; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2849 = 9'h147 == out_iindex_1 ? _out_T_1122 : _GEN_2848; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2850 = 9'h148 == out_iindex_1 ? _out_T_1122 : _GEN_2849; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2851 = 9'h149 == out_iindex_1 ? _out_T_1122 : _GEN_2850; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2852 = 9'h14a == out_iindex_1 ? _out_T_1122 : _GEN_2851; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2853 = 9'h14b == out_iindex_1 ? _out_T_1122 : _GEN_2852; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2854 = 9'h14c == out_iindex_1 ? _out_T_1122 : _GEN_2853; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2855 = 9'h14d == out_iindex_1 ? _out_T_1122 : _GEN_2854; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2856 = 9'h14e == out_iindex_1 ? _out_T_1122 : _GEN_2855; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2857 = 9'h14f == out_iindex_1 ? _out_T_1122 : _GEN_2856; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2858 = 9'h150 == out_iindex_1 ? _out_T_1122 : _GEN_2857; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2859 = 9'h151 == out_iindex_1 ? _out_T_1122 : _GEN_2858; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2860 = 9'h152 == out_iindex_1 ? _out_T_1122 : _GEN_2859; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2861 = 9'h153 == out_iindex_1 ? _out_T_1122 : _GEN_2860; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2862 = 9'h154 == out_iindex_1 ? _out_T_1122 : _GEN_2861; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2863 = 9'h155 == out_iindex_1 ? _out_T_1122 : _GEN_2862; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2864 = 9'h156 == out_iindex_1 ? _out_T_1122 : _GEN_2863; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2865 = 9'h157 == out_iindex_1 ? _out_T_1122 : _GEN_2864; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2866 = 9'h158 == out_iindex_1 ? _out_T_1122 : _GEN_2865; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2867 = 9'h159 == out_iindex_1 ? _out_T_1122 : _GEN_2866; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2868 = 9'h15a == out_iindex_1 ? _out_T_1122 : _GEN_2867; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2869 = 9'h15b == out_iindex_1 ? _out_T_1122 : _GEN_2868; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2870 = 9'h15c == out_iindex_1 ? _out_T_1122 : _GEN_2869; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2871 = 9'h15d == out_iindex_1 ? _out_T_1122 : _GEN_2870; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2872 = 9'h15e == out_iindex_1 ? _out_T_1122 : _GEN_2871; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2873 = 9'h15f == out_iindex_1 ? _out_T_1122 : _GEN_2872; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2874 = 9'h160 == out_iindex_1 ? _out_T_1122 : _GEN_2873; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2875 = 9'h161 == out_iindex_1 ? _out_T_1122 : _GEN_2874; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2876 = 9'h162 == out_iindex_1 ? _out_T_1122 : _GEN_2875; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2877 = 9'h163 == out_iindex_1 ? _out_T_1122 : _GEN_2876; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2878 = 9'h164 == out_iindex_1 ? _out_T_1122 : _GEN_2877; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2879 = 9'h165 == out_iindex_1 ? _out_T_1122 : _GEN_2878; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2880 = 9'h166 == out_iindex_1 ? _out_T_1122 : _GEN_2879; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2881 = 9'h167 == out_iindex_1 ? _out_T_1122 : _GEN_2880; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2882 = 9'h168 == out_iindex_1 ? _out_T_1122 : _GEN_2881; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2883 = 9'h169 == out_iindex_1 ? _out_T_1122 : _GEN_2882; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2884 = 9'h16a == out_iindex_1 ? _out_T_1122 : _GEN_2883; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2885 = 9'h16b == out_iindex_1 ? _out_T_1122 : _GEN_2884; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2886 = 9'h16c == out_iindex_1 ? _out_T_1122 : _GEN_2885; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2887 = 9'h16d == out_iindex_1 ? _out_T_1122 : _GEN_2886; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2888 = 9'h16e == out_iindex_1 ? _out_T_1122 : _GEN_2887; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2889 = 9'h16f == out_iindex_1 ? _out_T_1122 : _GEN_2888; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2890 = 9'h170 == out_iindex_1 ? _out_T_1122 : _GEN_2889; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2891 = 9'h171 == out_iindex_1 ? _out_T_1122 : _GEN_2890; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2892 = 9'h172 == out_iindex_1 ? _out_T_1122 : _GEN_2891; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2893 = 9'h173 == out_iindex_1 ? _out_T_1122 : _GEN_2892; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2894 = 9'h174 == out_iindex_1 ? _out_T_1122 : _GEN_2893; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2895 = 9'h175 == out_iindex_1 ? _out_T_1122 : _GEN_2894; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2896 = 9'h176 == out_iindex_1 ? _out_T_1122 : _GEN_2895; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2897 = 9'h177 == out_iindex_1 ? _out_T_1122 : _GEN_2896; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2898 = 9'h178 == out_iindex_1 ? _out_T_1122 : _GEN_2897; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2899 = 9'h179 == out_iindex_1 ? _out_T_1122 : _GEN_2898; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2900 = 9'h17a == out_iindex_1 ? _out_T_1122 : _GEN_2899; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2901 = 9'h17b == out_iindex_1 ? _out_T_1122 : _GEN_2900; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2902 = 9'h17c == out_iindex_1 ? _out_T_1122 : _GEN_2901; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2903 = 9'h17d == out_iindex_1 ? _out_T_1122 : _GEN_2902; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2904 = 9'h17e == out_iindex_1 ? _out_T_1122 : _GEN_2903; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2905 = 9'h17f == out_iindex_1 ? _out_T_1122 : _GEN_2904; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2906 = 9'h180 == out_iindex_1 ? _out_T_1122 : _GEN_2905; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2907 = 9'h181 == out_iindex_1 ? _out_T_1122 : _GEN_2906; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2908 = 9'h182 == out_iindex_1 ? _out_T_1122 : _GEN_2907; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2909 = 9'h183 == out_iindex_1 ? _out_T_1122 : _GEN_2908; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2910 = 9'h184 == out_iindex_1 ? _out_T_1122 : _GEN_2909; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2911 = 9'h185 == out_iindex_1 ? _out_T_1122 : _GEN_2910; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2912 = 9'h186 == out_iindex_1 ? _out_T_1122 : _GEN_2911; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2913 = 9'h187 == out_iindex_1 ? _out_T_1122 : _GEN_2912; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2914 = 9'h188 == out_iindex_1 ? _out_T_1122 : _GEN_2913; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2915 = 9'h189 == out_iindex_1 ? _out_T_1122 : _GEN_2914; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2916 = 9'h18a == out_iindex_1 ? _out_T_1122 : _GEN_2915; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2917 = 9'h18b == out_iindex_1 ? _out_T_1122 : _GEN_2916; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2918 = 9'h18c == out_iindex_1 ? _out_T_1122 : _GEN_2917; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2919 = 9'h18d == out_iindex_1 ? _out_T_1122 : _GEN_2918; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2920 = 9'h18e == out_iindex_1 ? _out_T_1122 : _GEN_2919; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2921 = 9'h18f == out_iindex_1 ? _out_T_1122 : _GEN_2920; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2922 = 9'h190 == out_iindex_1 ? _out_T_1122 : _GEN_2921; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2923 = 9'h191 == out_iindex_1 ? _out_T_1122 : _GEN_2922; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2924 = 9'h192 == out_iindex_1 ? _out_T_1122 : _GEN_2923; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2925 = 9'h193 == out_iindex_1 ? _out_T_1122 : _GEN_2924; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2926 = 9'h194 == out_iindex_1 ? _out_T_1122 : _GEN_2925; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2927 = 9'h195 == out_iindex_1 ? _out_T_1122 : _GEN_2926; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2928 = 9'h196 == out_iindex_1 ? _out_T_1122 : _GEN_2927; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2929 = 9'h197 == out_iindex_1 ? _out_T_1122 : _GEN_2928; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2930 = 9'h198 == out_iindex_1 ? _out_T_1122 : _GEN_2929; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2931 = 9'h199 == out_iindex_1 ? _out_T_1122 : _GEN_2930; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2932 = 9'h19a == out_iindex_1 ? _out_T_1122 : _GEN_2931; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2933 = 9'h19b == out_iindex_1 ? _out_T_1122 : _GEN_2932; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2934 = 9'h19c == out_iindex_1 ? _out_T_1122 : _GEN_2933; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2935 = 9'h19d == out_iindex_1 ? _out_T_1122 : _GEN_2934; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2936 = 9'h19e == out_iindex_1 ? _out_T_1122 : _GEN_2935; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2937 = 9'h19f == out_iindex_1 ? _out_T_1122 : _GEN_2936; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2938 = 9'h1a0 == out_iindex_1 ? _out_T_1122 : _GEN_2937; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2939 = 9'h1a1 == out_iindex_1 ? _out_T_1122 : _GEN_2938; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2940 = 9'h1a2 == out_iindex_1 ? _out_T_1122 : _GEN_2939; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2941 = 9'h1a3 == out_iindex_1 ? _out_T_1122 : _GEN_2940; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2942 = 9'h1a4 == out_iindex_1 ? _out_T_1122 : _GEN_2941; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2943 = 9'h1a5 == out_iindex_1 ? _out_T_1122 : _GEN_2942; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2944 = 9'h1a6 == out_iindex_1 ? _out_T_1122 : _GEN_2943; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2945 = 9'h1a7 == out_iindex_1 ? _out_T_1122 : _GEN_2944; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2946 = 9'h1a8 == out_iindex_1 ? _out_T_1122 : _GEN_2945; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2947 = 9'h1a9 == out_iindex_1 ? _out_T_1122 : _GEN_2946; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2948 = 9'h1aa == out_iindex_1 ? _out_T_1122 : _GEN_2947; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2949 = 9'h1ab == out_iindex_1 ? _out_T_1122 : _GEN_2948; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2950 = 9'h1ac == out_iindex_1 ? _out_T_1122 : _GEN_2949; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2951 = 9'h1ad == out_iindex_1 ? _out_T_1122 : _GEN_2950; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2952 = 9'h1ae == out_iindex_1 ? _out_T_1122 : _GEN_2951; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2953 = 9'h1af == out_iindex_1 ? _out_T_1122 : _GEN_2952; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2954 = 9'h1b0 == out_iindex_1 ? _out_T_1122 : _GEN_2953; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2955 = 9'h1b1 == out_iindex_1 ? _out_T_1122 : _GEN_2954; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2956 = 9'h1b2 == out_iindex_1 ? _out_T_1122 : _GEN_2955; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2957 = 9'h1b3 == out_iindex_1 ? _out_T_1122 : _GEN_2956; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2958 = 9'h1b4 == out_iindex_1 ? _out_T_1122 : _GEN_2957; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2959 = 9'h1b5 == out_iindex_1 ? _out_T_1122 : _GEN_2958; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2960 = 9'h1b6 == out_iindex_1 ? _out_T_1122 : _GEN_2959; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2961 = 9'h1b7 == out_iindex_1 ? _out_T_1122 : _GEN_2960; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2962 = 9'h1b8 == out_iindex_1 ? _out_T_1122 : _GEN_2961; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2963 = 9'h1b9 == out_iindex_1 ? _out_T_1122 : _GEN_2962; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2964 = 9'h1ba == out_iindex_1 ? _out_T_1122 : _GEN_2963; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2965 = 9'h1bb == out_iindex_1 ? _out_T_1122 : _GEN_2964; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2966 = 9'h1bc == out_iindex_1 ? _out_T_1122 : _GEN_2965; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2967 = 9'h1bd == out_iindex_1 ? _out_T_1122 : _GEN_2966; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2968 = 9'h1be == out_iindex_1 ? _out_T_1122 : _GEN_2967; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2969 = 9'h1bf == out_iindex_1 ? _out_T_1122 : _GEN_2968; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2970 = 9'h1c0 == out_iindex_1 ? _out_T_1122 : _GEN_2969; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2971 = 9'h1c1 == out_iindex_1 ? _out_T_1122 : _GEN_2970; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2972 = 9'h1c2 == out_iindex_1 ? _out_T_1122 : _GEN_2971; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2973 = 9'h1c3 == out_iindex_1 ? _out_T_1122 : _GEN_2972; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2974 = 9'h1c4 == out_iindex_1 ? _out_T_1122 : _GEN_2973; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2975 = 9'h1c5 == out_iindex_1 ? _out_T_1122 : _GEN_2974; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2976 = 9'h1c6 == out_iindex_1 ? _out_T_1122 : _GEN_2975; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2977 = 9'h1c7 == out_iindex_1 ? _out_T_1122 : _GEN_2976; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2978 = 9'h1c8 == out_iindex_1 ? _out_T_1122 : _GEN_2977; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2979 = 9'h1c9 == out_iindex_1 ? _out_T_1122 : _GEN_2978; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2980 = 9'h1ca == out_iindex_1 ? _out_T_1122 : _GEN_2979; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2981 = 9'h1cb == out_iindex_1 ? _out_T_1122 : _GEN_2980; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2982 = 9'h1cc == out_iindex_1 ? _out_T_1122 : _GEN_2981; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2983 = 9'h1cd == out_iindex_1 ? _out_T_1122 : _GEN_2982; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2984 = 9'h1ce == out_iindex_1 ? _out_T_1122 : _GEN_2983; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2985 = 9'h1cf == out_iindex_1 ? _out_T_1122 : _GEN_2984; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2986 = 9'h1d0 == out_iindex_1 ? _out_T_1122 : _GEN_2985; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2987 = 9'h1d1 == out_iindex_1 ? _out_T_1122 : _GEN_2986; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2988 = 9'h1d2 == out_iindex_1 ? _out_T_1122 : _GEN_2987; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2989 = 9'h1d3 == out_iindex_1 ? _out_T_1122 : _GEN_2988; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2990 = 9'h1d4 == out_iindex_1 ? _out_T_1122 : _GEN_2989; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2991 = 9'h1d5 == out_iindex_1 ? _out_T_1122 : _GEN_2990; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2992 = 9'h1d6 == out_iindex_1 ? _out_T_1122 : _GEN_2991; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2993 = 9'h1d7 == out_iindex_1 ? _out_T_1122 : _GEN_2992; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2994 = 9'h1d8 == out_iindex_1 ? _out_T_1122 : _GEN_2993; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2995 = 9'h1d9 == out_iindex_1 ? _out_T_1122 : _GEN_2994; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2996 = 9'h1da == out_iindex_1 ? _out_T_1122 : _GEN_2995; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2997 = 9'h1db == out_iindex_1 ? _out_T_1122 : _GEN_2996; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2998 = 9'h1dc == out_iindex_1 ? _out_T_1122 : _GEN_2997; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_2999 = 9'h1dd == out_iindex_1 ? _out_T_1122 : _GEN_2998; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3000 = 9'h1de == out_iindex_1 ? _out_T_1122 : _GEN_2999; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3001 = 9'h1df == out_iindex_1 ? _out_T_1122 : _GEN_3000; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3002 = 9'h1e0 == out_iindex_1 ? _out_T_1122 : _GEN_3001; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3003 = 9'h1e1 == out_iindex_1 ? _out_T_1122 : _GEN_3002; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3004 = 9'h1e2 == out_iindex_1 ? _out_T_1122 : _GEN_3003; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3005 = 9'h1e3 == out_iindex_1 ? _out_T_1122 : _GEN_3004; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3006 = 9'h1e4 == out_iindex_1 ? _out_T_1122 : _GEN_3005; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3007 = 9'h1e5 == out_iindex_1 ? _out_T_1122 : _GEN_3006; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3008 = 9'h1e6 == out_iindex_1 ? _out_T_1122 : _GEN_3007; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3009 = 9'h1e7 == out_iindex_1 ? _out_T_1122 : _GEN_3008; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3010 = 9'h1e8 == out_iindex_1 ? _out_T_1122 : _GEN_3009; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3011 = 9'h1e9 == out_iindex_1 ? _out_T_1122 : _GEN_3010; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3012 = 9'h1ea == out_iindex_1 ? _out_T_1122 : _GEN_3011; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3013 = 9'h1eb == out_iindex_1 ? _out_T_1122 : _GEN_3012; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3014 = 9'h1ec == out_iindex_1 ? _out_T_1122 : _GEN_3013; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3015 = 9'h1ed == out_iindex_1 ? _out_T_1122 : _GEN_3014; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3016 = 9'h1ee == out_iindex_1 ? _out_T_1122 : _GEN_3015; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3017 = 9'h1ef == out_iindex_1 ? _out_T_1122 : _GEN_3016; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3018 = 9'h1f0 == out_iindex_1 ? _out_T_1122 : _GEN_3017; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3019 = 9'h1f1 == out_iindex_1 ? _out_T_1122 : _GEN_3018; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3020 = 9'h1f2 == out_iindex_1 ? _out_T_1122 : _GEN_3019; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3021 = 9'h1f3 == out_iindex_1 ? _out_T_1122 : _GEN_3020; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3022 = 9'h1f4 == out_iindex_1 ? _out_T_1122 : _GEN_3021; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3023 = 9'h1f5 == out_iindex_1 ? _out_T_1122 : _GEN_3022; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3024 = 9'h1f6 == out_iindex_1 ? _out_T_1122 : _GEN_3023; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3025 = 9'h1f7 == out_iindex_1 ? _out_T_1122 : _GEN_3024; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3026 = 9'h1f8 == out_iindex_1 ? _out_T_1122 : _GEN_3025; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3027 = 9'h1f9 == out_iindex_1 ? _out_T_1122 : _GEN_3026; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3028 = 9'h1fa == out_iindex_1 ? _out_T_1122 : _GEN_3027; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3029 = 9'h1fb == out_iindex_1 ? _out_T_1122 : _GEN_3028; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3030 = 9'h1fc == out_iindex_1 ? _out_T_1122 : _GEN_3029; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3031 = 9'h1fd == out_iindex_1 ? _out_T_1122 : _GEN_3030; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3032 = 9'h1fe == out_iindex_1 ? _out_T_1122 : _GEN_3031; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_3033 = 9'h1ff == out_iindex_1 ? _out_T_1122 : _GEN_3032; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3035 = 9'h1 == out_iindex_1 ? 32'h380006f : 32'hc0006f; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3036 = 9'h2 == out_iindex_1 ? 32'h440006f : _GEN_3035; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3037 = 9'h3 == out_iindex_1 ? 32'hff0000f : _GEN_3036; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3038 = 9'h4 == out_iindex_1 ? 32'h7b241073 : _GEN_3037; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3039 = 9'h5 == out_iindex_1 ? 32'hf1402473 : _GEN_3038; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3040 = 9'h6 == out_iindex_1 ? 32'h10802023 : _GEN_3039; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3041 = 9'h7 == out_iindex_1 ? 32'h40044403 : _GEN_3040; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3042 = 9'h8 == out_iindex_1 ? 32'h347413 : _GEN_3041; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3043 = 9'h9 == out_iindex_1 ? 32'hfe0408e3 : _GEN_3042; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3044 = 9'ha == out_iindex_1 ? 32'h147413 : _GEN_3043; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3045 = 9'hb == out_iindex_1 ? 32'h40863 : _GEN_3044; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3046 = 9'hc == out_iindex_1 ? 32'h7b202473 : _GEN_3045; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3047 = 9'hd == out_iindex_1 ? 32'h10002223 : _GEN_3046; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3048 = 9'he == out_iindex_1 ? 32'h30000067 : _GEN_3047; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3049 = 9'hf == out_iindex_1 ? 32'hf1402473 : _GEN_3048; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3050 = 9'h10 == out_iindex_1 ? 32'h10802423 : _GEN_3049; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3051 = 9'h11 == out_iindex_1 ? 32'h7b202473 : _GEN_3050; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3052 = 9'h12 == out_iindex_1 ? 32'h7b200073 : _GEN_3051; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3053 = 9'h13 == out_iindex_1 ? 32'h10002623 : _GEN_3052; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3054 = 9'h14 == out_iindex_1 ? 32'h100073 : _GEN_3053; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3055 = 9'h15 == out_iindex_1 ? 32'h0 : _GEN_3054; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3056 = 9'h16 == out_iindex_1 ? 32'h0 : _GEN_3055; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3057 = 9'h17 == out_iindex_1 ? 32'h0 : _GEN_3056; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3058 = 9'h18 == out_iindex_1 ? 32'h0 : _GEN_3057; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3059 = 9'h19 == out_iindex_1 ? 32'h0 : _GEN_3058; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3060 = 9'h1a == out_iindex_1 ? 32'h0 : _GEN_3059; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3061 = 9'h1b == out_iindex_1 ? 32'h0 : _GEN_3060; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3062 = 9'h1c == out_iindex_1 ? 32'h0 : _GEN_3061; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3063 = 9'h1d == out_iindex_1 ? 32'h0 : _GEN_3062; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3064 = 9'h1e == out_iindex_1 ? 32'h0 : _GEN_3063; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3065 = 9'h1f == out_iindex_1 ? 32'h0 : _GEN_3064; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3066 = 9'h20 == out_iindex_1 ? 32'h0 : _GEN_3065; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3067 = 9'h21 == out_iindex_1 ? 32'h0 : _GEN_3066; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3068 = 9'h22 == out_iindex_1 ? 32'h0 : _GEN_3067; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3069 = 9'h23 == out_iindex_1 ? 32'h0 : _GEN_3068; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3070 = 9'h24 == out_iindex_1 ? 32'h0 : _GEN_3069; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3071 = 9'h25 == out_iindex_1 ? 32'h0 : _GEN_3070; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3072 = 9'h26 == out_iindex_1 ? 32'h0 : _GEN_3071; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3073 = 9'h27 == out_iindex_1 ? 32'h0 : _GEN_3072; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3074 = 9'h28 == out_iindex_1 ? 32'h0 : _GEN_3073; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3075 = 9'h29 == out_iindex_1 ? 32'h0 : _GEN_3074; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3076 = 9'h2a == out_iindex_1 ? 32'h0 : _GEN_3075; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3077 = 9'h2b == out_iindex_1 ? 32'h0 : _GEN_3076; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3078 = 9'h2c == out_iindex_1 ? 32'h0 : _GEN_3077; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3079 = 9'h2d == out_iindex_1 ? 32'h0 : _GEN_3078; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3080 = 9'h2e == out_iindex_1 ? 32'h0 : _GEN_3079; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3081 = 9'h2f == out_iindex_1 ? 32'h0 : _GEN_3080; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3082 = 9'h30 == out_iindex_1 ? 32'h0 : _GEN_3081; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3083 = 9'h31 == out_iindex_1 ? 32'h0 : _GEN_3082; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3084 = 9'h32 == out_iindex_1 ? 32'h0 : _GEN_3083; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3085 = 9'h33 == out_iindex_1 ? 32'h0 : _GEN_3084; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3086 = 9'h34 == out_iindex_1 ? 32'h0 : _GEN_3085; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3087 = 9'h35 == out_iindex_1 ? 32'h0 : _GEN_3086; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3088 = 9'h36 == out_iindex_1 ? 32'h0 : _GEN_3087; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3089 = 9'h37 == out_iindex_1 ? 32'h0 : _GEN_3088; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3090 = 9'h38 == out_iindex_1 ? 32'h0 : _GEN_3089; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3091 = 9'h39 == out_iindex_1 ? 32'h0 : _GEN_3090; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3092 = 9'h3a == out_iindex_1 ? 32'h0 : _GEN_3091; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3093 = 9'h3b == out_iindex_1 ? 32'h0 : _GEN_3092; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3094 = 9'h3c == out_iindex_1 ? 32'h0 : _GEN_3093; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3095 = 9'h3d == out_iindex_1 ? 32'h0 : _GEN_3094; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3096 = 9'h3e == out_iindex_1 ? 32'h0 : _GEN_3095; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3097 = 9'h3f == out_iindex_1 ? 32'h0 : _GEN_3096; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3098 = 9'h40 == out_iindex_1 ? 32'h0 : _GEN_3097; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3099 = 9'h41 == out_iindex_1 ? 32'h0 : _GEN_3098; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3100 = 9'h42 == out_iindex_1 ? 32'h0 : _GEN_3099; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3101 = 9'h43 == out_iindex_1 ? 32'h0 : _GEN_3100; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3102 = 9'h44 == out_iindex_1 ? 32'h0 : _GEN_3101; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3103 = 9'h45 == out_iindex_1 ? 32'h0 : _GEN_3102; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3104 = 9'h46 == out_iindex_1 ? 32'h0 : _GEN_3103; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3105 = 9'h47 == out_iindex_1 ? 32'h0 : _GEN_3104; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3106 = 9'h48 == out_iindex_1 ? 32'h0 : _GEN_3105; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3107 = 9'h49 == out_iindex_1 ? 32'h0 : _GEN_3106; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3108 = 9'h4a == out_iindex_1 ? 32'h0 : _GEN_3107; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3109 = 9'h4b == out_iindex_1 ? 32'h0 : _GEN_3108; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3110 = 9'h4c == out_iindex_1 ? 32'h0 : _GEN_3109; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3111 = 9'h4d == out_iindex_1 ? 32'h0 : _GEN_3110; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3112 = 9'h4e == out_iindex_1 ? 32'h0 : _GEN_3111; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3113 = 9'h4f == out_iindex_1 ? 32'h0 : _GEN_3112; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3114 = 9'h50 == out_iindex_1 ? 32'h0 : _GEN_3113; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3115 = 9'h51 == out_iindex_1 ? 32'h0 : _GEN_3114; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3116 = 9'h52 == out_iindex_1 ? 32'h0 : _GEN_3115; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3117 = 9'h53 == out_iindex_1 ? 32'h0 : _GEN_3116; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3118 = 9'h54 == out_iindex_1 ? 32'h0 : _GEN_3117; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3119 = 9'h55 == out_iindex_1 ? 32'h0 : _GEN_3118; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3120 = 9'h56 == out_iindex_1 ? 32'h0 : _GEN_3119; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3121 = 9'h57 == out_iindex_1 ? 32'h0 : _GEN_3120; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3122 = 9'h58 == out_iindex_1 ? 32'h0 : _GEN_3121; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3123 = 9'h59 == out_iindex_1 ? 32'h0 : _GEN_3122; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3124 = 9'h5a == out_iindex_1 ? 32'h0 : _GEN_3123; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3125 = 9'h5b == out_iindex_1 ? 32'h0 : _GEN_3124; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3126 = 9'h5c == out_iindex_1 ? 32'h0 : _GEN_3125; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3127 = 9'h5d == out_iindex_1 ? 32'h0 : _GEN_3126; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3128 = 9'h5e == out_iindex_1 ? 32'h0 : _GEN_3127; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3129 = 9'h5f == out_iindex_1 ? 32'h0 : _GEN_3128; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3130 = 9'h60 == out_iindex_1 ? 32'h0 : _GEN_3129; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3131 = 9'h61 == out_iindex_1 ? 32'h0 : _GEN_3130; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3132 = 9'h62 == out_iindex_1 ? 32'h0 : _GEN_3131; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3133 = 9'h63 == out_iindex_1 ? 32'h0 : _GEN_3132; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3134 = 9'h64 == out_iindex_1 ? 32'h0 : _GEN_3133; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3135 = 9'h65 == out_iindex_1 ? 32'h0 : _GEN_3134; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3136 = 9'h66 == out_iindex_1 ? 32'h0 : _GEN_3135; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3137 = 9'h67 == out_iindex_1 ? 32'h0 : _GEN_3136; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3138 = 9'h68 == out_iindex_1 ? 32'h0 : _GEN_3137; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3139 = 9'h69 == out_iindex_1 ? 32'h0 : _GEN_3138; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3140 = 9'h6a == out_iindex_1 ? 32'h0 : _GEN_3139; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3141 = 9'h6b == out_iindex_1 ? 32'h0 : _GEN_3140; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3142 = 9'h6c == out_iindex_1 ? 32'h0 : _GEN_3141; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3143 = 9'h6d == out_iindex_1 ? 32'h0 : _GEN_3142; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3144 = 9'h6e == out_iindex_1 ? 32'h0 : _GEN_3143; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3145 = 9'h6f == out_iindex_1 ? 32'h0 : _GEN_3144; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3146 = 9'h70 == out_iindex_1 ? 32'h0 : _GEN_3145; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3147 = 9'h71 == out_iindex_1 ? 32'h0 : _GEN_3146; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3148 = 9'h72 == out_iindex_1 ? 32'h0 : _GEN_3147; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3149 = 9'h73 == out_iindex_1 ? 32'h0 : _GEN_3148; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3150 = 9'h74 == out_iindex_1 ? 32'h0 : _GEN_3149; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3151 = 9'h75 == out_iindex_1 ? 32'h0 : _GEN_3150; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3152 = 9'h76 == out_iindex_1 ? 32'h0 : _GEN_3151; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3153 = 9'h77 == out_iindex_1 ? 32'h0 : _GEN_3152; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3154 = 9'h78 == out_iindex_1 ? 32'h0 : _GEN_3153; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3155 = 9'h79 == out_iindex_1 ? 32'h0 : _GEN_3154; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3156 = 9'h7a == out_iindex_1 ? 32'h0 : _GEN_3155; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3157 = 9'h7b == out_iindex_1 ? 32'h0 : _GEN_3156; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3158 = 9'h7c == out_iindex_1 ? 32'h0 : _GEN_3157; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3159 = 9'h7d == out_iindex_1 ? 32'h0 : _GEN_3158; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3160 = 9'h7e == out_iindex_1 ? 32'h0 : _GEN_3159; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3161 = 9'h7f == out_iindex_1 ? 32'h0 : _GEN_3160; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3162 = 9'h80 == out_iindex_1 ? 32'h0 : _GEN_3161; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3163 = 9'h81 == out_iindex_1 ? 32'h0 : _GEN_3162; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3164 = 9'h82 == out_iindex_1 ? 32'h0 : _GEN_3163; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3165 = 9'h83 == out_iindex_1 ? 32'h0 : _GEN_3164; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3166 = 9'h84 == out_iindex_1 ? 32'h0 : _GEN_3165; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3167 = 9'h85 == out_iindex_1 ? 32'h0 : _GEN_3166; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3168 = 9'h86 == out_iindex_1 ? 32'h0 : _GEN_3167; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3169 = 9'h87 == out_iindex_1 ? 32'h0 : _GEN_3168; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3170 = 9'h88 == out_iindex_1 ? 32'h0 : _GEN_3169; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3171 = 9'h89 == out_iindex_1 ? 32'h0 : _GEN_3170; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3172 = 9'h8a == out_iindex_1 ? 32'h0 : _GEN_3171; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3173 = 9'h8b == out_iindex_1 ? 32'h0 : _GEN_3172; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3174 = 9'h8c == out_iindex_1 ? 32'h0 : _GEN_3173; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3175 = 9'h8d == out_iindex_1 ? 32'h0 : _GEN_3174; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3176 = 9'h8e == out_iindex_1 ? 32'h0 : _GEN_3175; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3177 = 9'h8f == out_iindex_1 ? 32'h0 : _GEN_3176; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3178 = 9'h90 == out_iindex_1 ? 32'h0 : _GEN_3177; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3179 = 9'h91 == out_iindex_1 ? 32'h0 : _GEN_3178; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3180 = 9'h92 == out_iindex_1 ? 32'h0 : _GEN_3179; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3181 = 9'h93 == out_iindex_1 ? 32'h0 : _GEN_3180; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3182 = 9'h94 == out_iindex_1 ? 32'h0 : _GEN_3181; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3183 = 9'h95 == out_iindex_1 ? 32'h0 : _GEN_3182; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3184 = 9'h96 == out_iindex_1 ? 32'h0 : _GEN_3183; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3185 = 9'h97 == out_iindex_1 ? 32'h0 : _GEN_3184; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3186 = 9'h98 == out_iindex_1 ? 32'h0 : _GEN_3185; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3187 = 9'h99 == out_iindex_1 ? 32'h0 : _GEN_3186; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3188 = 9'h9a == out_iindex_1 ? 32'h0 : _GEN_3187; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3189 = 9'h9b == out_iindex_1 ? 32'h0 : _GEN_3188; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3190 = 9'h9c == out_iindex_1 ? 32'h0 : _GEN_3189; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3191 = 9'h9d == out_iindex_1 ? 32'h0 : _GEN_3190; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3192 = 9'h9e == out_iindex_1 ? 32'h0 : _GEN_3191; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3193 = 9'h9f == out_iindex_1 ? 32'h0 : _GEN_3192; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3194 = 9'ha0 == out_iindex_1 ? 32'h0 : _GEN_3193; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3195 = 9'ha1 == out_iindex_1 ? 32'h0 : _GEN_3194; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3196 = 9'ha2 == out_iindex_1 ? 32'h0 : _GEN_3195; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3197 = 9'ha3 == out_iindex_1 ? 32'h0 : _GEN_3196; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3198 = 9'ha4 == out_iindex_1 ? 32'h0 : _GEN_3197; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3199 = 9'ha5 == out_iindex_1 ? 32'h0 : _GEN_3198; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3200 = 9'ha6 == out_iindex_1 ? 32'h0 : _GEN_3199; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3201 = 9'ha7 == out_iindex_1 ? 32'h0 : _GEN_3200; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3202 = 9'ha8 == out_iindex_1 ? 32'h0 : _GEN_3201; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3203 = 9'ha9 == out_iindex_1 ? 32'h0 : _GEN_3202; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3204 = 9'haa == out_iindex_1 ? 32'h0 : _GEN_3203; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3205 = 9'hab == out_iindex_1 ? 32'h0 : _GEN_3204; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3206 = 9'hac == out_iindex_1 ? 32'h0 : _GEN_3205; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3207 = 9'had == out_iindex_1 ? 32'h0 : _GEN_3206; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3208 = 9'hae == out_iindex_1 ? 32'h0 : _GEN_3207; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3209 = 9'haf == out_iindex_1 ? 32'h0 : _GEN_3208; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3210 = 9'hb0 == out_iindex_1 ? 32'h0 : _GEN_3209; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3211 = 9'hb1 == out_iindex_1 ? 32'h0 : _GEN_3210; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3212 = 9'hb2 == out_iindex_1 ? 32'h0 : _GEN_3211; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3213 = 9'hb3 == out_iindex_1 ? 32'h0 : _GEN_3212; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3214 = 9'hb4 == out_iindex_1 ? 32'h0 : _GEN_3213; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3215 = 9'hb5 == out_iindex_1 ? 32'h0 : _GEN_3214; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3216 = 9'hb6 == out_iindex_1 ? 32'h0 : _GEN_3215; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3217 = 9'hb7 == out_iindex_1 ? 32'h0 : _GEN_3216; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3218 = 9'hb8 == out_iindex_1 ? 32'h0 : _GEN_3217; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3219 = 9'hb9 == out_iindex_1 ? 32'h0 : _GEN_3218; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3220 = 9'hba == out_iindex_1 ? 32'h0 : _GEN_3219; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3221 = 9'hbb == out_iindex_1 ? 32'h0 : _GEN_3220; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3222 = 9'hbc == out_iindex_1 ? 32'h0 : _GEN_3221; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3223 = 9'hbd == out_iindex_1 ? 32'h0 : _GEN_3222; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3224 = 9'hbe == out_iindex_1 ? 32'h0 : _GEN_3223; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3225 = 9'hbf == out_iindex_1 ? 32'h0 : _GEN_3224; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3226 = 9'hc0 == out_iindex_1 ? 32'h380006f : _GEN_3225; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3227 = 9'hc1 == out_iindex_1 ? 32'h0 : _GEN_3226; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3228 = 9'hc2 == out_iindex_1 ? 32'h0 : _GEN_3227; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3229 = 9'hc3 == out_iindex_1 ? 32'h0 : _GEN_3228; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3230 = 9'hc4 == out_iindex_1 ? 32'h0 : _GEN_3229; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3231 = 9'hc5 == out_iindex_1 ? 32'h0 : _GEN_3230; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3232 = 9'hc6 == out_iindex_1 ? 32'h0 : _GEN_3231; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3233 = 9'hc7 == out_iindex_1 ? 32'h0 : _GEN_3232; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3234 = 9'hc8 == out_iindex_1 ? 32'h0 : _GEN_3233; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3235 = 9'hc9 == out_iindex_1 ? 32'h0 : _GEN_3234; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3236 = 9'hca == out_iindex_1 ? 32'h0 : _GEN_3235; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3237 = 9'hcb == out_iindex_1 ? 32'h0 : _GEN_3236; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3238 = 9'hcc == out_iindex_1 ? 32'h0 : _GEN_3237; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3239 = 9'hcd == out_iindex_1 ? 32'h0 : _GEN_3238; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3240 = 9'hce == out_iindex_1 ? abstractGeneratedMem_0 : _GEN_3239; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3241 = 9'hcf == out_iindex_1 ? abstractGeneratedMem_1 : _GEN_3240; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3242 = 9'hd0 == out_iindex_1 ? out_prepend_22 : _GEN_3241; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3243 = 9'hd1 == out_iindex_1 ? out_prepend_16 : _GEN_3242; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3244 = 9'hd2 == out_iindex_1 ? out_prepend_25 : _GEN_3243; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3245 = 9'hd3 == out_iindex_1 ? out_prepend_61 : _GEN_3244; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3246 = 9'hd4 == out_iindex_1 ? out_prepend_70 : _GEN_3245; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3247 = 9'hd5 == out_iindex_1 ? out_prepend_7 : _GEN_3246; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3248 = 9'hd6 == out_iindex_1 ? out_prepend_13 : _GEN_3247; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3249 = 9'hd7 == out_iindex_1 ? out_prepend_58 : _GEN_3248; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3250 = 9'hd8 == out_iindex_1 ? out_prepend_67 : _GEN_3249; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3251 = 9'hd9 == out_iindex_1 ? out_prepend_19 : _GEN_3250; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3252 = 9'hda == out_iindex_1 ? out_prepend_2 : _GEN_3251; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3253 = 9'hdb == out_iindex_1 ? out_prepend_64 : _GEN_3252; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3254 = 9'hdc == out_iindex_1 ? out_prepend_55 : _GEN_3253; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3255 = 9'hdd == out_iindex_1 ? out_prepend_28 : _GEN_3254; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3256 = 9'hde == out_iindex_1 ? out_prepend_10 : _GEN_3255; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3257 = 9'hdf == out_iindex_1 ? out_prepend_76 : _GEN_3256; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3258 = 9'he0 == out_iindex_1 ? out_prepend_73 : _GEN_3257; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3259 = 9'he1 == out_iindex_1 ? 32'h0 : _GEN_3258; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3260 = 9'he2 == out_iindex_1 ? 32'h0 : _GEN_3259; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3261 = 9'he3 == out_iindex_1 ? 32'h0 : _GEN_3260; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3262 = 9'he4 == out_iindex_1 ? 32'h0 : _GEN_3261; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3263 = 9'he5 == out_iindex_1 ? 32'h0 : _GEN_3262; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3264 = 9'he6 == out_iindex_1 ? 32'h0 : _GEN_3263; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3265 = 9'he7 == out_iindex_1 ? 32'h0 : _GEN_3264; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3266 = 9'he8 == out_iindex_1 ? 32'h0 : _GEN_3265; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3267 = 9'he9 == out_iindex_1 ? 32'h0 : _GEN_3266; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3268 = 9'hea == out_iindex_1 ? 32'h0 : _GEN_3267; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3269 = 9'heb == out_iindex_1 ? 32'h0 : _GEN_3268; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3270 = 9'hec == out_iindex_1 ? 32'h0 : _GEN_3269; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3271 = 9'hed == out_iindex_1 ? 32'h0 : _GEN_3270; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3272 = 9'hee == out_iindex_1 ? 32'h0 : _GEN_3271; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3273 = 9'hef == out_iindex_1 ? 32'h0 : _GEN_3272; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3274 = 9'hf0 == out_iindex_1 ? 32'h0 : _GEN_3273; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3275 = 9'hf1 == out_iindex_1 ? 32'h0 : _GEN_3274; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3276 = 9'hf2 == out_iindex_1 ? 32'h0 : _GEN_3275; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3277 = 9'hf3 == out_iindex_1 ? 32'h0 : _GEN_3276; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3278 = 9'hf4 == out_iindex_1 ? 32'h0 : _GEN_3277; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3279 = 9'hf5 == out_iindex_1 ? 32'h0 : _GEN_3278; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3280 = 9'hf6 == out_iindex_1 ? 32'h0 : _GEN_3279; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3281 = 9'hf7 == out_iindex_1 ? 32'h0 : _GEN_3280; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3282 = 9'hf8 == out_iindex_1 ? 32'h0 : _GEN_3281; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3283 = 9'hf9 == out_iindex_1 ? 32'h0 : _GEN_3282; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3284 = 9'hfa == out_iindex_1 ? 32'h0 : _GEN_3283; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3285 = 9'hfb == out_iindex_1 ? 32'h0 : _GEN_3284; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3286 = 9'hfc == out_iindex_1 ? 32'h0 : _GEN_3285; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3287 = 9'hfd == out_iindex_1 ? 32'h0 : _GEN_3286; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3288 = 9'hfe == out_iindex_1 ? 32'h0 : _GEN_3287; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3289 = 9'hff == out_iindex_1 ? 32'h0 : _GEN_3288; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3290 = 9'h100 == out_iindex_1 ? out_prepend_79 : _GEN_3289; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3291 = 9'h101 == out_iindex_1 ? out_prepend_79 : _GEN_3290; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3292 = 9'h102 == out_iindex_1 ? out_prepend_79 : _GEN_3291; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3293 = 9'h103 == out_iindex_1 ? out_prepend_79 : _GEN_3292; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3294 = 9'h104 == out_iindex_1 ? out_prepend_79 : _GEN_3293; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3295 = 9'h105 == out_iindex_1 ? out_prepend_79 : _GEN_3294; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3296 = 9'h106 == out_iindex_1 ? out_prepend_79 : _GEN_3295; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3297 = 9'h107 == out_iindex_1 ? out_prepend_79 : _GEN_3296; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3298 = 9'h108 == out_iindex_1 ? out_prepend_79 : _GEN_3297; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3299 = 9'h109 == out_iindex_1 ? out_prepend_79 : _GEN_3298; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3300 = 9'h10a == out_iindex_1 ? out_prepend_79 : _GEN_3299; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3301 = 9'h10b == out_iindex_1 ? out_prepend_79 : _GEN_3300; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3302 = 9'h10c == out_iindex_1 ? out_prepend_79 : _GEN_3301; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3303 = 9'h10d == out_iindex_1 ? out_prepend_79 : _GEN_3302; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3304 = 9'h10e == out_iindex_1 ? out_prepend_79 : _GEN_3303; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3305 = 9'h10f == out_iindex_1 ? out_prepend_79 : _GEN_3304; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3306 = 9'h110 == out_iindex_1 ? out_prepend_79 : _GEN_3305; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3307 = 9'h111 == out_iindex_1 ? out_prepend_79 : _GEN_3306; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3308 = 9'h112 == out_iindex_1 ? out_prepend_79 : _GEN_3307; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3309 = 9'h113 == out_iindex_1 ? out_prepend_79 : _GEN_3308; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3310 = 9'h114 == out_iindex_1 ? out_prepend_79 : _GEN_3309; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3311 = 9'h115 == out_iindex_1 ? out_prepend_79 : _GEN_3310; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3312 = 9'h116 == out_iindex_1 ? out_prepend_79 : _GEN_3311; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3313 = 9'h117 == out_iindex_1 ? out_prepend_79 : _GEN_3312; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3314 = 9'h118 == out_iindex_1 ? out_prepend_79 : _GEN_3313; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3315 = 9'h119 == out_iindex_1 ? out_prepend_79 : _GEN_3314; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3316 = 9'h11a == out_iindex_1 ? out_prepend_79 : _GEN_3315; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3317 = 9'h11b == out_iindex_1 ? out_prepend_79 : _GEN_3316; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3318 = 9'h11c == out_iindex_1 ? out_prepend_79 : _GEN_3317; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3319 = 9'h11d == out_iindex_1 ? out_prepend_79 : _GEN_3318; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3320 = 9'h11e == out_iindex_1 ? out_prepend_79 : _GEN_3319; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3321 = 9'h11f == out_iindex_1 ? out_prepend_79 : _GEN_3320; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3322 = 9'h120 == out_iindex_1 ? out_prepend_79 : _GEN_3321; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3323 = 9'h121 == out_iindex_1 ? out_prepend_79 : _GEN_3322; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3324 = 9'h122 == out_iindex_1 ? out_prepend_79 : _GEN_3323; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3325 = 9'h123 == out_iindex_1 ? out_prepend_79 : _GEN_3324; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3326 = 9'h124 == out_iindex_1 ? out_prepend_79 : _GEN_3325; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3327 = 9'h125 == out_iindex_1 ? out_prepend_79 : _GEN_3326; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3328 = 9'h126 == out_iindex_1 ? out_prepend_79 : _GEN_3327; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3329 = 9'h127 == out_iindex_1 ? out_prepend_79 : _GEN_3328; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3330 = 9'h128 == out_iindex_1 ? out_prepend_79 : _GEN_3329; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3331 = 9'h129 == out_iindex_1 ? out_prepend_79 : _GEN_3330; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3332 = 9'h12a == out_iindex_1 ? out_prepend_79 : _GEN_3331; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3333 = 9'h12b == out_iindex_1 ? out_prepend_79 : _GEN_3332; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3334 = 9'h12c == out_iindex_1 ? out_prepend_79 : _GEN_3333; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3335 = 9'h12d == out_iindex_1 ? out_prepend_79 : _GEN_3334; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3336 = 9'h12e == out_iindex_1 ? out_prepend_79 : _GEN_3335; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3337 = 9'h12f == out_iindex_1 ? out_prepend_79 : _GEN_3336; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3338 = 9'h130 == out_iindex_1 ? out_prepend_79 : _GEN_3337; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3339 = 9'h131 == out_iindex_1 ? out_prepend_79 : _GEN_3338; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3340 = 9'h132 == out_iindex_1 ? out_prepend_79 : _GEN_3339; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3341 = 9'h133 == out_iindex_1 ? out_prepend_79 : _GEN_3340; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3342 = 9'h134 == out_iindex_1 ? out_prepend_79 : _GEN_3341; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3343 = 9'h135 == out_iindex_1 ? out_prepend_79 : _GEN_3342; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3344 = 9'h136 == out_iindex_1 ? out_prepend_79 : _GEN_3343; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3345 = 9'h137 == out_iindex_1 ? out_prepend_79 : _GEN_3344; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3346 = 9'h138 == out_iindex_1 ? out_prepend_79 : _GEN_3345; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3347 = 9'h139 == out_iindex_1 ? out_prepend_79 : _GEN_3346; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3348 = 9'h13a == out_iindex_1 ? out_prepend_79 : _GEN_3347; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3349 = 9'h13b == out_iindex_1 ? out_prepend_79 : _GEN_3348; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3350 = 9'h13c == out_iindex_1 ? out_prepend_79 : _GEN_3349; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3351 = 9'h13d == out_iindex_1 ? out_prepend_79 : _GEN_3350; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3352 = 9'h13e == out_iindex_1 ? out_prepend_79 : _GEN_3351; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3353 = 9'h13f == out_iindex_1 ? out_prepend_79 : _GEN_3352; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3354 = 9'h140 == out_iindex_1 ? out_prepend_79 : _GEN_3353; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3355 = 9'h141 == out_iindex_1 ? out_prepend_79 : _GEN_3354; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3356 = 9'h142 == out_iindex_1 ? out_prepend_79 : _GEN_3355; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3357 = 9'h143 == out_iindex_1 ? out_prepend_79 : _GEN_3356; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3358 = 9'h144 == out_iindex_1 ? out_prepend_79 : _GEN_3357; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3359 = 9'h145 == out_iindex_1 ? out_prepend_79 : _GEN_3358; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3360 = 9'h146 == out_iindex_1 ? out_prepend_79 : _GEN_3359; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3361 = 9'h147 == out_iindex_1 ? out_prepend_79 : _GEN_3360; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3362 = 9'h148 == out_iindex_1 ? out_prepend_79 : _GEN_3361; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3363 = 9'h149 == out_iindex_1 ? out_prepend_79 : _GEN_3362; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3364 = 9'h14a == out_iindex_1 ? out_prepend_79 : _GEN_3363; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3365 = 9'h14b == out_iindex_1 ? out_prepend_79 : _GEN_3364; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3366 = 9'h14c == out_iindex_1 ? out_prepend_79 : _GEN_3365; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3367 = 9'h14d == out_iindex_1 ? out_prepend_79 : _GEN_3366; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3368 = 9'h14e == out_iindex_1 ? out_prepend_79 : _GEN_3367; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3369 = 9'h14f == out_iindex_1 ? out_prepend_79 : _GEN_3368; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3370 = 9'h150 == out_iindex_1 ? out_prepend_79 : _GEN_3369; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3371 = 9'h151 == out_iindex_1 ? out_prepend_79 : _GEN_3370; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3372 = 9'h152 == out_iindex_1 ? out_prepend_79 : _GEN_3371; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3373 = 9'h153 == out_iindex_1 ? out_prepend_79 : _GEN_3372; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3374 = 9'h154 == out_iindex_1 ? out_prepend_79 : _GEN_3373; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3375 = 9'h155 == out_iindex_1 ? out_prepend_79 : _GEN_3374; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3376 = 9'h156 == out_iindex_1 ? out_prepend_79 : _GEN_3375; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3377 = 9'h157 == out_iindex_1 ? out_prepend_79 : _GEN_3376; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3378 = 9'h158 == out_iindex_1 ? out_prepend_79 : _GEN_3377; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3379 = 9'h159 == out_iindex_1 ? out_prepend_79 : _GEN_3378; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3380 = 9'h15a == out_iindex_1 ? out_prepend_79 : _GEN_3379; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3381 = 9'h15b == out_iindex_1 ? out_prepend_79 : _GEN_3380; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3382 = 9'h15c == out_iindex_1 ? out_prepend_79 : _GEN_3381; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3383 = 9'h15d == out_iindex_1 ? out_prepend_79 : _GEN_3382; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3384 = 9'h15e == out_iindex_1 ? out_prepend_79 : _GEN_3383; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3385 = 9'h15f == out_iindex_1 ? out_prepend_79 : _GEN_3384; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3386 = 9'h160 == out_iindex_1 ? out_prepend_79 : _GEN_3385; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3387 = 9'h161 == out_iindex_1 ? out_prepend_79 : _GEN_3386; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3388 = 9'h162 == out_iindex_1 ? out_prepend_79 : _GEN_3387; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3389 = 9'h163 == out_iindex_1 ? out_prepend_79 : _GEN_3388; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3390 = 9'h164 == out_iindex_1 ? out_prepend_79 : _GEN_3389; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3391 = 9'h165 == out_iindex_1 ? out_prepend_79 : _GEN_3390; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3392 = 9'h166 == out_iindex_1 ? out_prepend_79 : _GEN_3391; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3393 = 9'h167 == out_iindex_1 ? out_prepend_79 : _GEN_3392; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3394 = 9'h168 == out_iindex_1 ? out_prepend_79 : _GEN_3393; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3395 = 9'h169 == out_iindex_1 ? out_prepend_79 : _GEN_3394; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3396 = 9'h16a == out_iindex_1 ? out_prepend_79 : _GEN_3395; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3397 = 9'h16b == out_iindex_1 ? out_prepend_79 : _GEN_3396; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3398 = 9'h16c == out_iindex_1 ? out_prepend_79 : _GEN_3397; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3399 = 9'h16d == out_iindex_1 ? out_prepend_79 : _GEN_3398; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3400 = 9'h16e == out_iindex_1 ? out_prepend_79 : _GEN_3399; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3401 = 9'h16f == out_iindex_1 ? out_prepend_79 : _GEN_3400; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3402 = 9'h170 == out_iindex_1 ? out_prepend_79 : _GEN_3401; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3403 = 9'h171 == out_iindex_1 ? out_prepend_79 : _GEN_3402; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3404 = 9'h172 == out_iindex_1 ? out_prepend_79 : _GEN_3403; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3405 = 9'h173 == out_iindex_1 ? out_prepend_79 : _GEN_3404; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3406 = 9'h174 == out_iindex_1 ? out_prepend_79 : _GEN_3405; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3407 = 9'h175 == out_iindex_1 ? out_prepend_79 : _GEN_3406; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3408 = 9'h176 == out_iindex_1 ? out_prepend_79 : _GEN_3407; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3409 = 9'h177 == out_iindex_1 ? out_prepend_79 : _GEN_3408; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3410 = 9'h178 == out_iindex_1 ? out_prepend_79 : _GEN_3409; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3411 = 9'h179 == out_iindex_1 ? out_prepend_79 : _GEN_3410; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3412 = 9'h17a == out_iindex_1 ? out_prepend_79 : _GEN_3411; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3413 = 9'h17b == out_iindex_1 ? out_prepend_79 : _GEN_3412; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3414 = 9'h17c == out_iindex_1 ? out_prepend_79 : _GEN_3413; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3415 = 9'h17d == out_iindex_1 ? out_prepend_79 : _GEN_3414; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3416 = 9'h17e == out_iindex_1 ? out_prepend_79 : _GEN_3415; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3417 = 9'h17f == out_iindex_1 ? out_prepend_79 : _GEN_3416; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3418 = 9'h180 == out_iindex_1 ? out_prepend_79 : _GEN_3417; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3419 = 9'h181 == out_iindex_1 ? out_prepend_79 : _GEN_3418; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3420 = 9'h182 == out_iindex_1 ? out_prepend_79 : _GEN_3419; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3421 = 9'h183 == out_iindex_1 ? out_prepend_79 : _GEN_3420; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3422 = 9'h184 == out_iindex_1 ? out_prepend_79 : _GEN_3421; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3423 = 9'h185 == out_iindex_1 ? out_prepend_79 : _GEN_3422; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3424 = 9'h186 == out_iindex_1 ? out_prepend_79 : _GEN_3423; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3425 = 9'h187 == out_iindex_1 ? out_prepend_79 : _GEN_3424; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3426 = 9'h188 == out_iindex_1 ? out_prepend_79 : _GEN_3425; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3427 = 9'h189 == out_iindex_1 ? out_prepend_79 : _GEN_3426; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3428 = 9'h18a == out_iindex_1 ? out_prepend_79 : _GEN_3427; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3429 = 9'h18b == out_iindex_1 ? out_prepend_79 : _GEN_3428; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3430 = 9'h18c == out_iindex_1 ? out_prepend_79 : _GEN_3429; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3431 = 9'h18d == out_iindex_1 ? out_prepend_79 : _GEN_3430; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3432 = 9'h18e == out_iindex_1 ? out_prepend_79 : _GEN_3431; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3433 = 9'h18f == out_iindex_1 ? out_prepend_79 : _GEN_3432; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3434 = 9'h190 == out_iindex_1 ? out_prepend_79 : _GEN_3433; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3435 = 9'h191 == out_iindex_1 ? out_prepend_79 : _GEN_3434; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3436 = 9'h192 == out_iindex_1 ? out_prepend_79 : _GEN_3435; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3437 = 9'h193 == out_iindex_1 ? out_prepend_79 : _GEN_3436; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3438 = 9'h194 == out_iindex_1 ? out_prepend_79 : _GEN_3437; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3439 = 9'h195 == out_iindex_1 ? out_prepend_79 : _GEN_3438; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3440 = 9'h196 == out_iindex_1 ? out_prepend_79 : _GEN_3439; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3441 = 9'h197 == out_iindex_1 ? out_prepend_79 : _GEN_3440; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3442 = 9'h198 == out_iindex_1 ? out_prepend_79 : _GEN_3441; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3443 = 9'h199 == out_iindex_1 ? out_prepend_79 : _GEN_3442; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3444 = 9'h19a == out_iindex_1 ? out_prepend_79 : _GEN_3443; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3445 = 9'h19b == out_iindex_1 ? out_prepend_79 : _GEN_3444; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3446 = 9'h19c == out_iindex_1 ? out_prepend_79 : _GEN_3445; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3447 = 9'h19d == out_iindex_1 ? out_prepend_79 : _GEN_3446; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3448 = 9'h19e == out_iindex_1 ? out_prepend_79 : _GEN_3447; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3449 = 9'h19f == out_iindex_1 ? out_prepend_79 : _GEN_3448; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3450 = 9'h1a0 == out_iindex_1 ? out_prepend_79 : _GEN_3449; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3451 = 9'h1a1 == out_iindex_1 ? out_prepend_79 : _GEN_3450; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3452 = 9'h1a2 == out_iindex_1 ? out_prepend_79 : _GEN_3451; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3453 = 9'h1a3 == out_iindex_1 ? out_prepend_79 : _GEN_3452; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3454 = 9'h1a4 == out_iindex_1 ? out_prepend_79 : _GEN_3453; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3455 = 9'h1a5 == out_iindex_1 ? out_prepend_79 : _GEN_3454; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3456 = 9'h1a6 == out_iindex_1 ? out_prepend_79 : _GEN_3455; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3457 = 9'h1a7 == out_iindex_1 ? out_prepend_79 : _GEN_3456; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3458 = 9'h1a8 == out_iindex_1 ? out_prepend_79 : _GEN_3457; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3459 = 9'h1a9 == out_iindex_1 ? out_prepend_79 : _GEN_3458; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3460 = 9'h1aa == out_iindex_1 ? out_prepend_79 : _GEN_3459; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3461 = 9'h1ab == out_iindex_1 ? out_prepend_79 : _GEN_3460; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3462 = 9'h1ac == out_iindex_1 ? out_prepend_79 : _GEN_3461; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3463 = 9'h1ad == out_iindex_1 ? out_prepend_79 : _GEN_3462; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3464 = 9'h1ae == out_iindex_1 ? out_prepend_79 : _GEN_3463; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3465 = 9'h1af == out_iindex_1 ? out_prepend_79 : _GEN_3464; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3466 = 9'h1b0 == out_iindex_1 ? out_prepend_79 : _GEN_3465; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3467 = 9'h1b1 == out_iindex_1 ? out_prepend_79 : _GEN_3466; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3468 = 9'h1b2 == out_iindex_1 ? out_prepend_79 : _GEN_3467; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3469 = 9'h1b3 == out_iindex_1 ? out_prepend_79 : _GEN_3468; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3470 = 9'h1b4 == out_iindex_1 ? out_prepend_79 : _GEN_3469; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3471 = 9'h1b5 == out_iindex_1 ? out_prepend_79 : _GEN_3470; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3472 = 9'h1b6 == out_iindex_1 ? out_prepend_79 : _GEN_3471; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3473 = 9'h1b7 == out_iindex_1 ? out_prepend_79 : _GEN_3472; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3474 = 9'h1b8 == out_iindex_1 ? out_prepend_79 : _GEN_3473; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3475 = 9'h1b9 == out_iindex_1 ? out_prepend_79 : _GEN_3474; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3476 = 9'h1ba == out_iindex_1 ? out_prepend_79 : _GEN_3475; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3477 = 9'h1bb == out_iindex_1 ? out_prepend_79 : _GEN_3476; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3478 = 9'h1bc == out_iindex_1 ? out_prepend_79 : _GEN_3477; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3479 = 9'h1bd == out_iindex_1 ? out_prepend_79 : _GEN_3478; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3480 = 9'h1be == out_iindex_1 ? out_prepend_79 : _GEN_3479; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3481 = 9'h1bf == out_iindex_1 ? out_prepend_79 : _GEN_3480; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3482 = 9'h1c0 == out_iindex_1 ? out_prepend_79 : _GEN_3481; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3483 = 9'h1c1 == out_iindex_1 ? out_prepend_79 : _GEN_3482; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3484 = 9'h1c2 == out_iindex_1 ? out_prepend_79 : _GEN_3483; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3485 = 9'h1c3 == out_iindex_1 ? out_prepend_79 : _GEN_3484; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3486 = 9'h1c4 == out_iindex_1 ? out_prepend_79 : _GEN_3485; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3487 = 9'h1c5 == out_iindex_1 ? out_prepend_79 : _GEN_3486; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3488 = 9'h1c6 == out_iindex_1 ? out_prepend_79 : _GEN_3487; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3489 = 9'h1c7 == out_iindex_1 ? out_prepend_79 : _GEN_3488; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3490 = 9'h1c8 == out_iindex_1 ? out_prepend_79 : _GEN_3489; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3491 = 9'h1c9 == out_iindex_1 ? out_prepend_79 : _GEN_3490; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3492 = 9'h1ca == out_iindex_1 ? out_prepend_79 : _GEN_3491; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3493 = 9'h1cb == out_iindex_1 ? out_prepend_79 : _GEN_3492; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3494 = 9'h1cc == out_iindex_1 ? out_prepend_79 : _GEN_3493; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3495 = 9'h1cd == out_iindex_1 ? out_prepend_79 : _GEN_3494; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3496 = 9'h1ce == out_iindex_1 ? out_prepend_79 : _GEN_3495; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3497 = 9'h1cf == out_iindex_1 ? out_prepend_79 : _GEN_3496; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3498 = 9'h1d0 == out_iindex_1 ? out_prepend_79 : _GEN_3497; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3499 = 9'h1d1 == out_iindex_1 ? out_prepend_79 : _GEN_3498; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3500 = 9'h1d2 == out_iindex_1 ? out_prepend_79 : _GEN_3499; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3501 = 9'h1d3 == out_iindex_1 ? out_prepend_79 : _GEN_3500; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3502 = 9'h1d4 == out_iindex_1 ? out_prepend_79 : _GEN_3501; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3503 = 9'h1d5 == out_iindex_1 ? out_prepend_79 : _GEN_3502; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3504 = 9'h1d6 == out_iindex_1 ? out_prepend_79 : _GEN_3503; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3505 = 9'h1d7 == out_iindex_1 ? out_prepend_79 : _GEN_3504; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3506 = 9'h1d8 == out_iindex_1 ? out_prepend_79 : _GEN_3505; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3507 = 9'h1d9 == out_iindex_1 ? out_prepend_79 : _GEN_3506; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3508 = 9'h1da == out_iindex_1 ? out_prepend_79 : _GEN_3507; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3509 = 9'h1db == out_iindex_1 ? out_prepend_79 : _GEN_3508; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3510 = 9'h1dc == out_iindex_1 ? out_prepend_79 : _GEN_3509; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3511 = 9'h1dd == out_iindex_1 ? out_prepend_79 : _GEN_3510; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3512 = 9'h1de == out_iindex_1 ? out_prepend_79 : _GEN_3511; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3513 = 9'h1df == out_iindex_1 ? out_prepend_79 : _GEN_3512; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3514 = 9'h1e0 == out_iindex_1 ? out_prepend_79 : _GEN_3513; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3515 = 9'h1e1 == out_iindex_1 ? out_prepend_79 : _GEN_3514; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3516 = 9'h1e2 == out_iindex_1 ? out_prepend_79 : _GEN_3515; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3517 = 9'h1e3 == out_iindex_1 ? out_prepend_79 : _GEN_3516; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3518 = 9'h1e4 == out_iindex_1 ? out_prepend_79 : _GEN_3517; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3519 = 9'h1e5 == out_iindex_1 ? out_prepend_79 : _GEN_3518; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3520 = 9'h1e6 == out_iindex_1 ? out_prepend_79 : _GEN_3519; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3521 = 9'h1e7 == out_iindex_1 ? out_prepend_79 : _GEN_3520; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3522 = 9'h1e8 == out_iindex_1 ? out_prepend_79 : _GEN_3521; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3523 = 9'h1e9 == out_iindex_1 ? out_prepend_79 : _GEN_3522; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3524 = 9'h1ea == out_iindex_1 ? out_prepend_79 : _GEN_3523; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3525 = 9'h1eb == out_iindex_1 ? out_prepend_79 : _GEN_3524; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3526 = 9'h1ec == out_iindex_1 ? out_prepend_79 : _GEN_3525; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3527 = 9'h1ed == out_iindex_1 ? out_prepend_79 : _GEN_3526; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3528 = 9'h1ee == out_iindex_1 ? out_prepend_79 : _GEN_3527; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3529 = 9'h1ef == out_iindex_1 ? out_prepend_79 : _GEN_3528; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3530 = 9'h1f0 == out_iindex_1 ? out_prepend_79 : _GEN_3529; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3531 = 9'h1f1 == out_iindex_1 ? out_prepend_79 : _GEN_3530; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3532 = 9'h1f2 == out_iindex_1 ? out_prepend_79 : _GEN_3531; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3533 = 9'h1f3 == out_iindex_1 ? out_prepend_79 : _GEN_3532; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3534 = 9'h1f4 == out_iindex_1 ? out_prepend_79 : _GEN_3533; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3535 = 9'h1f5 == out_iindex_1 ? out_prepend_79 : _GEN_3534; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3536 = 9'h1f6 == out_iindex_1 ? out_prepend_79 : _GEN_3535; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3537 = 9'h1f7 == out_iindex_1 ? out_prepend_79 : _GEN_3536; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3538 = 9'h1f8 == out_iindex_1 ? out_prepend_79 : _GEN_3537; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3539 = 9'h1f9 == out_iindex_1 ? out_prepend_79 : _GEN_3538; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3540 = 9'h1fa == out_iindex_1 ? out_prepend_79 : _GEN_3539; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3541 = 9'h1fb == out_iindex_1 ? out_prepend_79 : _GEN_3540; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3542 = 9'h1fc == out_iindex_1 ? out_prepend_79 : _GEN_3541; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3543 = 9'h1fd == out_iindex_1 ? out_prepend_79 : _GEN_3542; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3544 = 9'h1fe == out_iindex_1 ? out_prepend_79 : _GEN_3543; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_3545 = 9'h1ff == out_iindex_1 ? out_prepend_79 : _GEN_3544; // @[MuxLiteral.scala 48:{10,10}]
+  wire [1:0] _GEN_3627 = commandRegBadHaltResume ? 2'h0 : 2'h2; // @[Debug.scala 1691:43 1693:22]
+  wire [1:0] _GEN_3633 = ~goReg & out_f_woready_647 ? 2'h0 : ctrlStateReg; // @[Debug.scala 1707:116 1708:22]
+  wire [1:0] _GEN_3634 = out_f_woready_941 ? 2'h0 : _GEN_3633; // @[Debug.scala 1710:31 1712:24]
+  wire  _T_1393 = ctrlStateReg == 2'h3; // @[Debug.scala 1715:30]
+  wire  _GEN_3892 = _errorBusy_T & ~_T_1383; // @[Debug.scala 1711:15]
+  TLMonitor_53 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  TLMonitor_54 monitor_1 ( // @[Nodes.scala 24:25]
+    .clock(monitor_1_clock),
+    .io_in_a_ready(monitor_1_io_in_a_ready),
+    .io_in_a_valid(monitor_1_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_1_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_1_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_1_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_1_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_1_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_1_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_1_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_1_io_in_d_ready),
+    .io_in_d_valid(monitor_1_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_1_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_1_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_1_io_in_d_bits_source)
+  );
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 hartIsInResetSync_0_debug_hartReset_0 ( // @[ShiftReg.scala 45:23]
+    .clock(hartIsInResetSync_0_debug_hartReset_0_clock),
+    .reset(hartIsInResetSync_0_debug_hartReset_0_reset),
+    .io_d(hartIsInResetSync_0_debug_hartReset_0_io_d),
+    .io_q(hartIsInResetSync_0_debug_hartReset_0_io_q)
+  );
+  assign auto_tl_in_a_ready = auto_tl_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign auto_tl_in_d_valid = auto_tl_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign auto_tl_in_d_bits_opcode = {{2'd0}, in_1_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign auto_tl_in_d_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_in_d_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_in_d_bits_data = _GEN_3033 ? _GEN_3545 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign auto_dmi_in_a_ready = auto_dmi_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign auto_dmi_in_d_valid = auto_dmi_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign auto_dmi_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign auto_dmi_in_d_bits_size = auto_dmi_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_dmi_in_d_bits_source = auto_dmi_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_dmi_in_d_bits_data = _GEN_296 ? _GEN_328 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign io_innerCtrl_ready = 1'h1; // @[Debug.scala 836:24]
+  assign io_hgDebugInt_0 = hrDebugIntReg_0; // @[package.scala 66:75]
+  assign monitor_clock = clock;
+  assign monitor_io_in_a_ready = auto_dmi_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = auto_dmi_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_dmi_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_dmi_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_dmi_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_dmi_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_dmi_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_dmi_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_dmi_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_dmi_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_dmi_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = auto_dmi_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_bits_source = auto_dmi_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_clock = clock;
+  assign monitor_1_io_in_a_ready = auto_tl_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign monitor_1_io_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_d_valid = auto_tl_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign monitor_1_io_in_d_bits_opcode = {{2'd0}, in_1_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_1_io_in_d_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_d_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign hartIsInResetSync_0_debug_hartReset_0_clock = clock;
+  assign hartIsInResetSync_0_debug_hartReset_0_reset = 1'h0;
+  assign hartIsInResetSync_0_debug_hartReset_0_io_d = 1'h0; // @[ShiftReg.scala 47:16]
+  always @(posedge clock) begin
+    haltedBitRegs <= _GEN_65[0];
+    resumeReqRegs <= _GEN_66[0];
+    if (_T_1) begin // @[Debug.scala 919:44]
+      haveResetBitRegs <= 1'h0; // @[Debug.scala 920:24]
+    end else if (_T_4 & io_innerCtrl_bits_ackhavereset) begin // @[Debug.scala 922:68]
+      haveResetBitRegs <= haveResetBitRegs & _resumeAcks_T_1 | hartIsInResetSync_0; // @[Debug.scala 923:26]
+    end else begin
+      haveResetBitRegs <= haveResetBitRegs | hartIsInResetSync_0; // @[Debug.scala 925:26]
+    end
+    if (~io_dmactive) begin // @[Debug.scala 861:45]
+      hrmaskReg_0 <= 1'h0; // @[Debug.scala 862:17]
+    end else if (_T_4) begin // @[Debug.scala 863:37]
+      hrmaskReg_0 <= io_innerCtrl_bits_hrmask_0; // @[Debug.scala 864:17]
+    end
+    if (_T_1) begin // @[Debug.scala 1102:45]
+      ABSTRACTCSReg_cmderr <= 3'h0; // @[Debug.scala 1103:21]
+    end else if (errorBusy) begin // @[Debug.scala 1105:23]
+      ABSTRACTCSReg_cmderr <= 3'h1; // @[Debug.scala 1106:30]
+    end else if (errorException) begin // @[Debug.scala 1107:35]
+      ABSTRACTCSReg_cmderr <= 3'h3; // @[Debug.scala 1108:30]
+    end else if (errorUnsupported) begin // @[Debug.scala 1109:37]
+      ABSTRACTCSReg_cmderr <= 3'h2; // @[Debug.scala 1110:30]
+    end else begin
+      ABSTRACTCSReg_cmderr <= _GEN_38;
+    end
+    if (_T_1) begin // @[Debug.scala 1724:45]
+      ctrlStateReg <= 2'h0; // @[Debug.scala 1725:20]
+    end else if (ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1673:47]
+      if (wrAccessRegisterCommand | regAccessRegisterCommand) begin // @[Debug.scala 1674:66]
+        ctrlStateReg <= 2'h1; // @[Debug.scala 1675:22]
+      end
+    end else if (ctrlStateReg == 2'h1) begin // @[Debug.scala 1681:59]
+      if (commandRegIsUnsupported) begin // @[Debug.scala 1688:38]
+        ctrlStateReg <= 2'h0; // @[Debug.scala 1690:22]
+      end else begin
+        ctrlStateReg <= _GEN_3627;
+      end
+    end else if (ctrlStateReg == 2'h2) begin // @[Debug.scala 1702:51]
+      ctrlStateReg <= _GEN_3634;
+    end
+    if (_T_1) begin // @[Debug.scala 1183:45]
+      COMMANDRdData_cmdtype <= 8'h0; // @[Debug.scala 1184:18]
+    end else if (COMMANDWrEn) begin // @[Debug.scala 1186:26]
+      COMMANDRdData_cmdtype <= COMMANDWrData_cmdtype; // @[Debug.scala 1187:20]
+    end
+    if (_T_1) begin // @[Debug.scala 1183:45]
+      COMMANDRdData_control <= 24'h0; // @[Debug.scala 1184:18]
+    end else if (COMMANDWrEn) begin // @[Debug.scala 1186:26]
+      COMMANDRdData_control <= COMMANDWrData_control; // @[Debug.scala 1187:20]
+    end
+    if (_T_1) begin // @[Debug.scala 1141:45]
+      ABSTRACTAUTOReg_autoexecdata <= 12'h0; // @[Debug.scala 1142:23]
+    end else if (out_f_woready_4 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1147:61]
+      ABSTRACTAUTOReg_autoexecdata <= _ABSTRACTAUTOReg_autoexecdata_T; // @[Debug.scala 1148:38]
+    end
+    if (_T_1) begin // @[Debug.scala 1141:45]
+      ABSTRACTAUTOReg_autoexecprogbuf <= 16'h0; // @[Debug.scala 1142:23]
+    end else if (out_f_woready_6 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1144:64]
+      ABSTRACTAUTOReg_autoexecprogbuf <= ABSTRACTAUTOWrData_autoexecprogbuf; // @[Debug.scala 1145:41]
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      abstractDataMem_0 <= 8'h0; // @[Debug.scala 1597:40]
+    end else if (out_f_wivalid_503) begin // @[RegField.scala 74:88]
+      abstractDataMem_0 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_92 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_92) begin // @[Debug.scala 265:24]
+        abstractDataMem_0 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      abstractDataMem_1 <= 8'h0; // @[Debug.scala 1597:40]
+    end else if (out_f_wivalid_504) begin // @[RegField.scala 74:88]
+      abstractDataMem_1 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_93 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_93) begin // @[Debug.scala 265:24]
+        abstractDataMem_1 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      abstractDataMem_2 <= 8'h0; // @[Debug.scala 1597:40]
+    end else if (out_f_wivalid_505) begin // @[RegField.scala 74:88]
+      abstractDataMem_2 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_94 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_94) begin // @[Debug.scala 265:24]
+        abstractDataMem_2 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      abstractDataMem_3 <= 8'h0; // @[Debug.scala 1597:40]
+    end else if (out_f_wivalid_506) begin // @[RegField.scala 74:88]
+      abstractDataMem_3 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_95 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_95) begin // @[Debug.scala 265:24]
+        abstractDataMem_3 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_0 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_768) begin // @[RegField.scala 74:88]
+      programBufferMem_0 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_27 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_27) begin // @[Debug.scala 265:24]
+        programBufferMem_0 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_1 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_769) begin // @[RegField.scala 74:88]
+      programBufferMem_1 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_28 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_28) begin // @[Debug.scala 265:24]
+        programBufferMem_1 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_2 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_770) begin // @[RegField.scala 74:88]
+      programBufferMem_2 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_29 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_29) begin // @[Debug.scala 265:24]
+        programBufferMem_2 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_3 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_771) begin // @[RegField.scala 74:88]
+      programBufferMem_3 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_30 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_30) begin // @[Debug.scala 265:24]
+        programBufferMem_3 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_4 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_885) begin // @[RegField.scala 74:88]
+      programBufferMem_4 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_19 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_19) begin // @[Debug.scala 265:24]
+        programBufferMem_4 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_5 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_886) begin // @[RegField.scala 74:88]
+      programBufferMem_5 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_20 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_20) begin // @[Debug.scala 265:24]
+        programBufferMem_5 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_6 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_887) begin // @[RegField.scala 74:88]
+      programBufferMem_6 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_21 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_21) begin // @[Debug.scala 265:24]
+        programBufferMem_6 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_7 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_888) begin // @[RegField.scala 74:88]
+      programBufferMem_7 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_22 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_22) begin // @[Debug.scala 265:24]
+        programBufferMem_7 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_8 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1143) begin // @[RegField.scala 74:88]
+      programBufferMem_8 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_31 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_31) begin // @[Debug.scala 265:24]
+        programBufferMem_8 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_9 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1144) begin // @[RegField.scala 74:88]
+      programBufferMem_9 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_32 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_32) begin // @[Debug.scala 265:24]
+        programBufferMem_9 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_10 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1145) begin // @[RegField.scala 74:88]
+      programBufferMem_10 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_33 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_33) begin // @[Debug.scala 265:24]
+        programBufferMem_10 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_11 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1146) begin // @[RegField.scala 74:88]
+      programBufferMem_11 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_34 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_34) begin // @[Debug.scala 265:24]
+        programBufferMem_11 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_12 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_300) begin // @[RegField.scala 74:88]
+      programBufferMem_12 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_74 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_74) begin // @[Debug.scala 265:24]
+        programBufferMem_12 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_13 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_301) begin // @[RegField.scala 74:88]
+      programBufferMem_13 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_75 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_75) begin // @[Debug.scala 265:24]
+        programBufferMem_13 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_14 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_302) begin // @[RegField.scala 74:88]
+      programBufferMem_14 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_76 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_76) begin // @[Debug.scala 265:24]
+        programBufferMem_14 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_15 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_303) begin // @[RegField.scala 74:88]
+      programBufferMem_15 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_77 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_77) begin // @[Debug.scala 265:24]
+        programBufferMem_15 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_16 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_567) begin // @[RegField.scala 74:88]
+      programBufferMem_16 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_87 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_87) begin // @[Debug.scala 265:24]
+        programBufferMem_16 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_17 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_568) begin // @[RegField.scala 74:88]
+      programBufferMem_17 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_88 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_88) begin // @[Debug.scala 265:24]
+        programBufferMem_17 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_18 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_569) begin // @[RegField.scala 74:88]
+      programBufferMem_18 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_89 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_89) begin // @[Debug.scala 265:24]
+        programBufferMem_18 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_19 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_570) begin // @[RegField.scala 74:88]
+      programBufferMem_19 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_90 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_90) begin // @[Debug.scala 265:24]
+        programBufferMem_19 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_20 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_796) begin // @[RegField.scala 74:88]
+      programBufferMem_20 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_7 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_7) begin // @[Debug.scala 265:24]
+        programBufferMem_20 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_21 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_797) begin // @[RegField.scala 74:88]
+      programBufferMem_21 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_8 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_8) begin // @[Debug.scala 265:24]
+        programBufferMem_21 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_22 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_798) begin // @[RegField.scala 74:88]
+      programBufferMem_22 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_9 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_9) begin // @[Debug.scala 265:24]
+        programBufferMem_22 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_23 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_799) begin // @[RegField.scala 74:88]
+      programBufferMem_23 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_10 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_10) begin // @[Debug.scala 265:24]
+        programBufferMem_23 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_24 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1091) begin // @[RegField.scala 74:88]
+      programBufferMem_24 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_15 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_15) begin // @[Debug.scala 265:24]
+        programBufferMem_24 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_25 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1092) begin // @[RegField.scala 74:88]
+      programBufferMem_25 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_16 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_16) begin // @[Debug.scala 265:24]
+        programBufferMem_25 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_26 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1093) begin // @[RegField.scala 74:88]
+      programBufferMem_26 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_17 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_17) begin // @[Debug.scala 265:24]
+        programBufferMem_26 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_27 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1094) begin // @[RegField.scala 74:88]
+      programBufferMem_27 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_18 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_18) begin // @[Debug.scala 265:24]
+        programBufferMem_27 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_28 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1259) begin // @[RegField.scala 74:88]
+      programBufferMem_28 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_70 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_70) begin // @[Debug.scala 265:24]
+        programBufferMem_28 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_29 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1260) begin // @[RegField.scala 74:88]
+      programBufferMem_29 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_71 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_71) begin // @[Debug.scala 265:24]
+        programBufferMem_29 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_30 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1261) begin // @[RegField.scala 74:88]
+      programBufferMem_30 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_72 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_72) begin // @[Debug.scala 265:24]
+        programBufferMem_30 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_31 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1262) begin // @[RegField.scala 74:88]
+      programBufferMem_31 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_73 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_73) begin // @[Debug.scala 265:24]
+        programBufferMem_31 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_32 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_276) begin // @[RegField.scala 74:88]
+      programBufferMem_32 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_82 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_82) begin // @[Debug.scala 265:24]
+        programBufferMem_32 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_33 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_277) begin // @[RegField.scala 74:88]
+      programBufferMem_33 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_83 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_83) begin // @[Debug.scala 265:24]
+        programBufferMem_33 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_34 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_278) begin // @[RegField.scala 74:88]
+      programBufferMem_34 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_84 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_84) begin // @[Debug.scala 265:24]
+        programBufferMem_34 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_35 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_279) begin // @[RegField.scala 74:88]
+      programBufferMem_35 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_85 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_85) begin // @[Debug.scala 265:24]
+        programBufferMem_35 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_36 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_140) begin // @[RegField.scala 74:88]
+      programBufferMem_36 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_23 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_23) begin // @[Debug.scala 265:24]
+        programBufferMem_36 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_37 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_141) begin // @[RegField.scala 74:88]
+      programBufferMem_37 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_24 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_24) begin // @[Debug.scala 265:24]
+        programBufferMem_37 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_38 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_142) begin // @[RegField.scala 74:88]
+      programBufferMem_38 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_25 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_25) begin // @[Debug.scala 265:24]
+        programBufferMem_38 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_39 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_143) begin // @[RegField.scala 74:88]
+      programBufferMem_39 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_26 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_26) begin // @[Debug.scala 265:24]
+        programBufferMem_39 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_40 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1018) begin // @[RegField.scala 74:88]
+      programBufferMem_40 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready) begin // @[Debug.scala 265:24]
+        programBufferMem_40 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_41 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1019) begin // @[RegField.scala 74:88]
+      programBufferMem_41 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_1 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_1) begin // @[Debug.scala 265:24]
+        programBufferMem_41 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_42 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1020) begin // @[RegField.scala 74:88]
+      programBufferMem_42 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_2 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_2) begin // @[Debug.scala 265:24]
+        programBufferMem_42 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_43 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1021) begin // @[RegField.scala 74:88]
+      programBufferMem_43 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_3 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_3) begin // @[Debug.scala 265:24]
+        programBufferMem_43 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_44 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_724) begin // @[RegField.scala 74:88]
+      programBufferMem_44 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_78 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_78) begin // @[Debug.scala 265:24]
+        programBufferMem_44 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_45 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_725) begin // @[RegField.scala 74:88]
+      programBufferMem_45 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_79 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_79) begin // @[Debug.scala 265:24]
+        programBufferMem_45 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_46 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_726) begin // @[RegField.scala 74:88]
+      programBufferMem_46 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_80 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_80) begin // @[Debug.scala 265:24]
+        programBufferMem_46 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_47 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_727) begin // @[RegField.scala 74:88]
+      programBufferMem_47 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_81 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_81) begin // @[Debug.scala 265:24]
+        programBufferMem_47 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_48 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_409) begin // @[RegField.scala 74:88]
+      programBufferMem_48 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_66 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_66) begin // @[Debug.scala 265:24]
+        programBufferMem_48 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_49 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_410) begin // @[RegField.scala 74:88]
+      programBufferMem_49 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_67 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_67) begin // @[Debug.scala 265:24]
+        programBufferMem_49 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_50 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_411) begin // @[RegField.scala 74:88]
+      programBufferMem_50 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_68 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_68) begin // @[Debug.scala 265:24]
+        programBufferMem_50 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_51 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_412) begin // @[RegField.scala 74:88]
+      programBufferMem_51 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_69 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_69) begin // @[Debug.scala 265:24]
+        programBufferMem_51 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_52 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_332) begin // @[RegField.scala 74:88]
+      programBufferMem_52 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_35 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_35) begin // @[Debug.scala 265:24]
+        programBufferMem_52 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_53 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_333) begin // @[RegField.scala 74:88]
+      programBufferMem_53 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_36 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_36) begin // @[Debug.scala 265:24]
+        programBufferMem_53 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_54 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_334) begin // @[RegField.scala 74:88]
+      programBufferMem_54 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_37 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_37) begin // @[Debug.scala 265:24]
+        programBufferMem_54 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_55 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_335) begin // @[RegField.scala 74:88]
+      programBufferMem_55 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_38 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_38) begin // @[Debug.scala 265:24]
+        programBufferMem_55 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_56 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1267) begin // @[RegField.scala 74:88]
+      programBufferMem_56 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_11 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_11) begin // @[Debug.scala 265:24]
+        programBufferMem_56 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_57 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1268) begin // @[RegField.scala 74:88]
+      programBufferMem_57 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_12 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_12) begin // @[Debug.scala 265:24]
+        programBufferMem_57 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_58 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1269) begin // @[RegField.scala 74:88]
+      programBufferMem_58 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_13 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_13) begin // @[Debug.scala 265:24]
+        programBufferMem_58 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_59 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_1270) begin // @[RegField.scala 74:88]
+      programBufferMem_59 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_14 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_14) begin // @[Debug.scala 265:24]
+        programBufferMem_59 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_60 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_833) begin // @[RegField.scala 74:88]
+      programBufferMem_60 <= auto_tl_in_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_96 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_96) begin // @[Debug.scala 265:24]
+        programBufferMem_60 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_61 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_834) begin // @[RegField.scala 74:88]
+      programBufferMem_61 <= auto_tl_in_a_bits_data[15:8]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_97 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_97) begin // @[Debug.scala 265:24]
+        programBufferMem_61 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_62 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_835) begin // @[RegField.scala 74:88]
+      programBufferMem_62 <= auto_tl_in_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_98 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_98) begin // @[Debug.scala 265:24]
+        programBufferMem_62 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      programBufferMem_63 <= 8'h0; // @[Debug.scala 1598:40]
+    end else if (out_f_wivalid_836) begin // @[RegField.scala 74:88]
+      programBufferMem_63 <= auto_tl_in_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_99 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_99) begin // @[Debug.scala 265:24]
+        programBufferMem_63 <= auto_dmi_in_a_bits_data[31:24]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1385:24]
+      goReg <= 1'h0; // @[Debug.scala 1386:13]
+    end else begin
+      goReg <= _GEN_398;
+    end
+    if (goAbstract) begin // @[Debug.scala 1520:23]
+      if (accessRegisterCommandReg_transfer) begin // @[Debug.scala 1524:39]
+        if (accessRegisterCommandReg_write) begin // @[Debug.scala 1525:14]
+          abstractGeneratedMem_0 <= _abstractGeneratedMem_0_T;
+        end else begin
+          abstractGeneratedMem_0 <= _abstractGeneratedMem_0_T_1;
+        end
+      end else begin
+        abstractGeneratedMem_0 <= 32'h13;
+      end
+    end
+    if (goAbstract) begin // @[Debug.scala 1520:23]
+      if (accessRegisterCommandReg_postexec) begin // @[Debug.scala 1528:39]
+        abstractGeneratedMem_1 <= 32'h13;
+      end else begin
+        abstractGeneratedMem_1 <= 32'h100073;
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(hartGoingId == 10'h0) & (~_T_1 & ~goAbstract & out_f_woready_470)) begin
+          $fatal; // @[Debug.scala 1391:15]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~_T_1 & ~goAbstract & out_f_woready_470 & ~(hartGoingId == 10'h0)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: Unexpected 'GOING' hart.\n    at Debug.scala:1391 assert(hartGoingId === 0.U, \"Unexpected 'GOING' hart.\")//Chisel3 #540 %%x, expected %%x\", hartGoingId, 0.U)\n"
+            ); // @[Debug.scala 1391:15]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_342 & (_errorBusy_T & ~_T_1383 & _T_1384 & out_f_woready_941)) begin
+          $fatal; // @[Debug.scala 1711:15]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_errorBusy_T & ~_T_1383 & _T_1384 & out_f_woready_941 & _T_342) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: Unexpected 'EXCEPTION' hart\n    at Debug.scala:1711 assert(hartExceptionId === 0.U, \"Unexpected 'EXCEPTION' hart\")//Chisel3 #540, %%x, expected %%x\", hartExceptionId, 0.U)\n"
+            ); // @[Debug.scala 1711:15]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_GEN_3892 & ~_T_1384 & _T_1393) begin
+          $fatal; // @[Debug.scala 1716:13]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_GEN_3892 & ~_T_1384 & _T_1393) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: Should not be in custom state unless we need it.\n    at Debug.scala:1716 assert(needCustom.B, \"Should not be in custom state unless we need it.\")\n"
+            ); // @[Debug.scala 1716:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_1 | ~out_f_woready_941 | _T_1384)) begin
+          $fatal; // @[Debug.scala 1729:12]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~(_T_1 | ~out_f_woready_941 | _T_1384)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: Unexpected EXCEPTION write: should only get it in Debug Module EXEC state\n    at Debug.scala:1729 assert ((!io.dmactive || !hartExceptionWrEn || ctrlStateReg === CtrlState(Exec)),\n"
+            ); // @[Debug.scala 1729:12]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+  always @(posedge clock or posedge _GEN_0) begin
+    if (_GEN_0) begin // @[Debug.scala 869:47]
+      hrDebugIntReg_0 <= 1'h0; // @[Debug.scala 870:23]
+    end else if (_T_1) begin // @[Debug.scala 872:23]
+      hrDebugIntReg_0 <= 1'h0;
+    end else begin
+      hrDebugIntReg_0 <= _T_13;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  haltedBitRegs = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  resumeReqRegs = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  haveResetBitRegs = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  hrmaskReg_0 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  hrDebugIntReg_0 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  ABSTRACTCSReg_cmderr = _RAND_5[2:0];
+  _RAND_6 = {1{`RANDOM}};
+  ctrlStateReg = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  COMMANDRdData_cmdtype = _RAND_7[7:0];
+  _RAND_8 = {1{`RANDOM}};
+  COMMANDRdData_control = _RAND_8[23:0];
+  _RAND_9 = {1{`RANDOM}};
+  ABSTRACTAUTOReg_autoexecdata = _RAND_9[11:0];
+  _RAND_10 = {1{`RANDOM}};
+  ABSTRACTAUTOReg_autoexecprogbuf = _RAND_10[15:0];
+  _RAND_11 = {1{`RANDOM}};
+  abstractDataMem_0 = _RAND_11[7:0];
+  _RAND_12 = {1{`RANDOM}};
+  abstractDataMem_1 = _RAND_12[7:0];
+  _RAND_13 = {1{`RANDOM}};
+  abstractDataMem_2 = _RAND_13[7:0];
+  _RAND_14 = {1{`RANDOM}};
+  abstractDataMem_3 = _RAND_14[7:0];
+  _RAND_15 = {1{`RANDOM}};
+  programBufferMem_0 = _RAND_15[7:0];
+  _RAND_16 = {1{`RANDOM}};
+  programBufferMem_1 = _RAND_16[7:0];
+  _RAND_17 = {1{`RANDOM}};
+  programBufferMem_2 = _RAND_17[7:0];
+  _RAND_18 = {1{`RANDOM}};
+  programBufferMem_3 = _RAND_18[7:0];
+  _RAND_19 = {1{`RANDOM}};
+  programBufferMem_4 = _RAND_19[7:0];
+  _RAND_20 = {1{`RANDOM}};
+  programBufferMem_5 = _RAND_20[7:0];
+  _RAND_21 = {1{`RANDOM}};
+  programBufferMem_6 = _RAND_21[7:0];
+  _RAND_22 = {1{`RANDOM}};
+  programBufferMem_7 = _RAND_22[7:0];
+  _RAND_23 = {1{`RANDOM}};
+  programBufferMem_8 = _RAND_23[7:0];
+  _RAND_24 = {1{`RANDOM}};
+  programBufferMem_9 = _RAND_24[7:0];
+  _RAND_25 = {1{`RANDOM}};
+  programBufferMem_10 = _RAND_25[7:0];
+  _RAND_26 = {1{`RANDOM}};
+  programBufferMem_11 = _RAND_26[7:0];
+  _RAND_27 = {1{`RANDOM}};
+  programBufferMem_12 = _RAND_27[7:0];
+  _RAND_28 = {1{`RANDOM}};
+  programBufferMem_13 = _RAND_28[7:0];
+  _RAND_29 = {1{`RANDOM}};
+  programBufferMem_14 = _RAND_29[7:0];
+  _RAND_30 = {1{`RANDOM}};
+  programBufferMem_15 = _RAND_30[7:0];
+  _RAND_31 = {1{`RANDOM}};
+  programBufferMem_16 = _RAND_31[7:0];
+  _RAND_32 = {1{`RANDOM}};
+  programBufferMem_17 = _RAND_32[7:0];
+  _RAND_33 = {1{`RANDOM}};
+  programBufferMem_18 = _RAND_33[7:0];
+  _RAND_34 = {1{`RANDOM}};
+  programBufferMem_19 = _RAND_34[7:0];
+  _RAND_35 = {1{`RANDOM}};
+  programBufferMem_20 = _RAND_35[7:0];
+  _RAND_36 = {1{`RANDOM}};
+  programBufferMem_21 = _RAND_36[7:0];
+  _RAND_37 = {1{`RANDOM}};
+  programBufferMem_22 = _RAND_37[7:0];
+  _RAND_38 = {1{`RANDOM}};
+  programBufferMem_23 = _RAND_38[7:0];
+  _RAND_39 = {1{`RANDOM}};
+  programBufferMem_24 = _RAND_39[7:0];
+  _RAND_40 = {1{`RANDOM}};
+  programBufferMem_25 = _RAND_40[7:0];
+  _RAND_41 = {1{`RANDOM}};
+  programBufferMem_26 = _RAND_41[7:0];
+  _RAND_42 = {1{`RANDOM}};
+  programBufferMem_27 = _RAND_42[7:0];
+  _RAND_43 = {1{`RANDOM}};
+  programBufferMem_28 = _RAND_43[7:0];
+  _RAND_44 = {1{`RANDOM}};
+  programBufferMem_29 = _RAND_44[7:0];
+  _RAND_45 = {1{`RANDOM}};
+  programBufferMem_30 = _RAND_45[7:0];
+  _RAND_46 = {1{`RANDOM}};
+  programBufferMem_31 = _RAND_46[7:0];
+  _RAND_47 = {1{`RANDOM}};
+  programBufferMem_32 = _RAND_47[7:0];
+  _RAND_48 = {1{`RANDOM}};
+  programBufferMem_33 = _RAND_48[7:0];
+  _RAND_49 = {1{`RANDOM}};
+  programBufferMem_34 = _RAND_49[7:0];
+  _RAND_50 = {1{`RANDOM}};
+  programBufferMem_35 = _RAND_50[7:0];
+  _RAND_51 = {1{`RANDOM}};
+  programBufferMem_36 = _RAND_51[7:0];
+  _RAND_52 = {1{`RANDOM}};
+  programBufferMem_37 = _RAND_52[7:0];
+  _RAND_53 = {1{`RANDOM}};
+  programBufferMem_38 = _RAND_53[7:0];
+  _RAND_54 = {1{`RANDOM}};
+  programBufferMem_39 = _RAND_54[7:0];
+  _RAND_55 = {1{`RANDOM}};
+  programBufferMem_40 = _RAND_55[7:0];
+  _RAND_56 = {1{`RANDOM}};
+  programBufferMem_41 = _RAND_56[7:0];
+  _RAND_57 = {1{`RANDOM}};
+  programBufferMem_42 = _RAND_57[7:0];
+  _RAND_58 = {1{`RANDOM}};
+  programBufferMem_43 = _RAND_58[7:0];
+  _RAND_59 = {1{`RANDOM}};
+  programBufferMem_44 = _RAND_59[7:0];
+  _RAND_60 = {1{`RANDOM}};
+  programBufferMem_45 = _RAND_60[7:0];
+  _RAND_61 = {1{`RANDOM}};
+  programBufferMem_46 = _RAND_61[7:0];
+  _RAND_62 = {1{`RANDOM}};
+  programBufferMem_47 = _RAND_62[7:0];
+  _RAND_63 = {1{`RANDOM}};
+  programBufferMem_48 = _RAND_63[7:0];
+  _RAND_64 = {1{`RANDOM}};
+  programBufferMem_49 = _RAND_64[7:0];
+  _RAND_65 = {1{`RANDOM}};
+  programBufferMem_50 = _RAND_65[7:0];
+  _RAND_66 = {1{`RANDOM}};
+  programBufferMem_51 = _RAND_66[7:0];
+  _RAND_67 = {1{`RANDOM}};
+  programBufferMem_52 = _RAND_67[7:0];
+  _RAND_68 = {1{`RANDOM}};
+  programBufferMem_53 = _RAND_68[7:0];
+  _RAND_69 = {1{`RANDOM}};
+  programBufferMem_54 = _RAND_69[7:0];
+  _RAND_70 = {1{`RANDOM}};
+  programBufferMem_55 = _RAND_70[7:0];
+  _RAND_71 = {1{`RANDOM}};
+  programBufferMem_56 = _RAND_71[7:0];
+  _RAND_72 = {1{`RANDOM}};
+  programBufferMem_57 = _RAND_72[7:0];
+  _RAND_73 = {1{`RANDOM}};
+  programBufferMem_58 = _RAND_73[7:0];
+  _RAND_74 = {1{`RANDOM}};
+  programBufferMem_59 = _RAND_74[7:0];
+  _RAND_75 = {1{`RANDOM}};
+  programBufferMem_60 = _RAND_75[7:0];
+  _RAND_76 = {1{`RANDOM}};
+  programBufferMem_61 = _RAND_76[7:0];
+  _RAND_77 = {1{`RANDOM}};
+  programBufferMem_62 = _RAND_77[7:0];
+  _RAND_78 = {1{`RANDOM}};
+  programBufferMem_63 = _RAND_78[7:0];
+  _RAND_79 = {1{`RANDOM}};
+  goReg = _RAND_79[0:0];
+  _RAND_80 = {1{`RANDOM}};
+  abstractGeneratedMem_0 = _RAND_80[31:0];
+  _RAND_81 = {1{`RANDOM}};
+  abstractGeneratedMem_1 = _RAND_81[31:0];
+`endif // RANDOMIZE_REG_INIT
+  if (_GEN_0) begin
+    hrDebugIntReg_0 = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockCrossingReg_w55(
+  input         clock,
+  input  [54:0] io_d,
+  output [54:0] io_q,
+  input         io_en
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [63:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [54:0] cdc_reg; // @[Reg.scala 16:16]
+  assign io_q = cdc_reg; // @[SynchronizerReg.scala 202:8]
+  always @(posedge clock) begin
+    if (io_en) begin // @[Reg.scala 17:18]
+      cdc_reg <= io_d; // @[Reg.scala 17:22]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {2{`RANDOM}};
+  cdc_reg = _RAND_0[54:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncQueueSink_2(
+  input         clock,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [1:0]  io_deq_bits_size,
+  output        io_deq_bits_source,
+  output [8:0]  io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt,
+  input  [2:0]  io_async_mem_0_opcode,
+  input  [8:0]  io_async_mem_0_address,
+  input  [31:0] io_async_mem_0_data,
+  output        io_async_ridx,
+  input         io_async_widx,
+  output        io_async_safe_ridx_valid,
+  input         io_async_safe_widx_valid,
+  input         io_async_safe_source_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  wire  widx_widx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  io_deq_bits_deq_bits_reg_clock; // @[SynchronizerReg.scala 207:25]
+  wire [54:0] io_deq_bits_deq_bits_reg_io_d; // @[SynchronizerReg.scala 207:25]
+  wire [54:0] io_deq_bits_deq_bits_reg_io_q; // @[SynchronizerReg.scala 207:25]
+  wire  io_deq_bits_deq_bits_reg_io_en; // @[SynchronizerReg.scala 207:25]
+  wire  sink_valid_0_io_in; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_io_out; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_clock; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_reset; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_1_io_in; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_io_out; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_clock; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_reset; // @[AsyncQueue.scala 169:33]
+  wire  source_extend_io_in; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_io_out; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_clock; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_reset; // @[AsyncQueue.scala 171:31]
+  wire  source_valid_io_in; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_io_out; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_clock; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_reset; // @[AsyncQueue.scala 172:31]
+  wire  _ridx_T_1 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  wire  source_ready = source_valid_io_out;
+  wire  _ridx_T_2 = ~source_ready; // @[AsyncQueue.scala 144:79]
+  wire  _GEN_0 = 1'h0; // @[AsyncQueue.scala 52:25]
+  reg  ridx_ridx_bin; // @[AsyncQueue.scala 52:25]
+  wire  ridx_incremented = _ridx_T_2 ? 1'h0 : ridx_ridx_bin + _ridx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  widx = widx_widx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [45:0] io_deq_bits_deq_bits_reg_io_d_lo = {io_async_mem_0_address,4'hf,io_async_mem_0_data,1'h0}; // @[SynchronizerReg.scala 209:24]
+  wire [8:0] io_deq_bits_deq_bits_reg_io_d_hi = {io_async_mem_0_opcode,3'h0,3'h4}; // @[SynchronizerReg.scala 209:24]
+  wire [54:0] _io_deq_bits_WIRE_1 = io_deq_bits_deq_bits_reg_io_q;
+  wire  _GEN_1 = 1'h0; // @[AsyncQueue.scala 161:56]
+  reg  valid_reg; // @[AsyncQueue.scala 161:56]
+  wire  _GEN_2 = 1'h0; // @[AsyncQueue.scala 164:55]
+  reg  ridx_gray; // @[AsyncQueue.scala 164:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 widx_widx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(widx_widx_gray_clock),
+    .reset(widx_widx_gray_reset),
+    .io_d(widx_widx_gray_io_d),
+    .io_q(widx_widx_gray_io_q)
+  );
+  ClockCrossingReg_w55 io_deq_bits_deq_bits_reg ( // @[SynchronizerReg.scala 207:25]
+    .clock(io_deq_bits_deq_bits_reg_clock),
+    .io_d(io_deq_bits_deq_bits_reg_io_d),
+    .io_q(io_deq_bits_deq_bits_reg_io_q),
+    .io_en(io_deq_bits_deq_bits_reg_io_en)
+  );
+  AsyncValidSync sink_valid_0 ( // @[AsyncQueue.scala 168:33]
+    .io_in(sink_valid_0_io_in),
+    .io_out(sink_valid_0_io_out),
+    .clock(sink_valid_0_clock),
+    .reset(sink_valid_0_reset)
+  );
+  AsyncValidSync sink_valid_1 ( // @[AsyncQueue.scala 169:33]
+    .io_in(sink_valid_1_io_in),
+    .io_out(sink_valid_1_io_out),
+    .clock(sink_valid_1_clock),
+    .reset(sink_valid_1_reset)
+  );
+  AsyncValidSync source_extend ( // @[AsyncQueue.scala 171:31]
+    .io_in(source_extend_io_in),
+    .io_out(source_extend_io_out),
+    .clock(source_extend_clock),
+    .reset(source_extend_reset)
+  );
+  AsyncValidSync source_valid ( // @[AsyncQueue.scala 172:31]
+    .io_in(source_valid_io_in),
+    .io_out(source_valid_io_out),
+    .clock(source_valid_clock),
+    .reset(source_valid_reset)
+  );
+  assign io_deq_valid = valid_reg & source_ready; // @[AsyncQueue.scala 162:29]
+  assign io_deq_bits_opcode = _io_deq_bits_WIRE_1[54:52]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_param = _io_deq_bits_WIRE_1[51:49]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_size = _io_deq_bits_WIRE_1[48:47]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_source = _io_deq_bits_WIRE_1[46]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_address = _io_deq_bits_WIRE_1[45:37]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_mask = _io_deq_bits_WIRE_1[36:33]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_data = _io_deq_bits_WIRE_1[32:1]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_corrupt = _io_deq_bits_WIRE_1[0]; // @[SynchronizerReg.scala 211:26]
+  assign io_async_ridx = ridx_gray; // @[AsyncQueue.scala 165:17]
+  assign io_async_safe_ridx_valid = sink_valid_1_io_out; // @[AsyncQueue.scala 185:20]
+  assign widx_widx_gray_clock = clock;
+  assign widx_widx_gray_reset = 1'h0;
+  assign widx_widx_gray_io_d = io_async_widx; // @[ShiftReg.scala 47:16]
+  assign io_deq_bits_deq_bits_reg_clock = clock;
+  assign io_deq_bits_deq_bits_reg_io_d = {io_deq_bits_deq_bits_reg_io_d_hi,io_deq_bits_deq_bits_reg_io_d_lo}; // @[SynchronizerReg.scala 209:24]
+  assign io_deq_bits_deq_bits_reg_io_en = source_ready & ridx_incremented != widx; // @[AsyncQueue.scala 146:28]
+  assign sink_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 183:24]
+  assign sink_valid_0_clock = clock; // @[AsyncQueue.scala 178:25]
+  assign sink_valid_0_reset = ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 173:66]
+  assign sink_valid_1_io_in = sink_valid_0_io_out; // @[AsyncQueue.scala 184:24]
+  assign sink_valid_1_clock = clock; // @[AsyncQueue.scala 179:25]
+  assign sink_valid_1_reset = ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 174:66]
+  assign source_extend_io_in = io_async_safe_widx_valid; // @[AsyncQueue.scala 186:25]
+  assign source_extend_clock = clock; // @[AsyncQueue.scala 180:25]
+  assign source_extend_reset = ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 175:66]
+  assign source_valid_io_in = source_extend_io_out; // @[AsyncQueue.scala 187:24]
+  assign source_valid_clock = clock; // @[AsyncQueue.scala 181:25]
+  assign source_valid_reset = 1'h0; // @[AsyncQueue.scala 176:34]
+  always @(posedge clock or posedge _GEN_0) begin
+    if (_GEN_0) begin // @[AsyncQueue.scala 53:23]
+      ridx_ridx_bin <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_ridx_bin <= 1'h0;
+    end else begin
+      ridx_ridx_bin <= ridx_ridx_bin + _ridx_T_1;
+    end
+  end
+  always @(posedge clock or posedge _GEN_1) begin
+    if (_GEN_1) begin // @[AsyncQueue.scala 146:28]
+      valid_reg <= 1'h0;
+    end else begin
+      valid_reg <= source_ready & ridx_incremented != widx;
+    end
+  end
+  always @(posedge clock or posedge _GEN_2) begin
+    if (_GEN_2) begin // @[AsyncQueue.scala 53:23]
+      ridx_gray <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_gray <= 1'h0;
+    end else begin
+      ridx_gray <= ridx_ridx_bin + _ridx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ridx_ridx_bin = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  valid_reg = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ridx_gray = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (_GEN_0) begin
+    ridx_ridx_bin = 1'h0;
+  end
+  if (_GEN_1) begin
+    valid_reg = 1'h0;
+  end
+  if (_GEN_2) begin
+    ridx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncQueueSource_3(
+  input         clock,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [1:0]  io_enq_bits_size,
+  input         io_enq_bits_source,
+  input  [31:0] io_enq_bits_data,
+  output [2:0]  io_async_mem_0_opcode,
+  output [1:0]  io_async_mem_0_size,
+  output        io_async_mem_0_source,
+  output [31:0] io_async_mem_0_data,
+  input         io_async_ridx,
+  output        io_async_widx,
+  input         io_async_safe_ridx_valid,
+  output        io_async_safe_widx_valid,
+  input         io_async_safe_sink_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_REG_INIT
+  wire  ridx_ridx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  source_valid_0_io_in; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_io_out; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_clock; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_reset; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_1_io_in; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_io_out; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_clock; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_reset; // @[AsyncQueue.scala 101:32]
+  wire  sink_extend_io_in; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_io_out; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_clock; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_reset; // @[AsyncQueue.scala 103:30]
+  wire  sink_valid_io_in; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_io_out; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_clock; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_reset; // @[AsyncQueue.scala 104:30]
+  reg [2:0] mem_0_opcode; // @[AsyncQueue.scala 80:16]
+  reg [1:0] mem_0_size; // @[AsyncQueue.scala 80:16]
+  reg  mem_0_source; // @[AsyncQueue.scala 80:16]
+  reg [31:0] mem_0_data; // @[AsyncQueue.scala 80:16]
+  wire  _widx_T_1 = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  sink_ready = sink_valid_io_out;
+  wire  _widx_T_2 = ~sink_ready; // @[AsyncQueue.scala 81:79]
+  wire  _GEN_0 = 1'h0; // @[AsyncQueue.scala 52:25]
+  reg  widx_widx_bin; // @[AsyncQueue.scala 52:25]
+  wire  widx_incremented = _widx_T_2 ? 1'h0 : widx_widx_bin + _widx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  ridx = ridx_ridx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  _GEN_1 = 1'h0; // @[AsyncQueue.scala 88:56]
+  reg  ready_reg; // @[AsyncQueue.scala 88:56]
+  wire  _GEN_2 = 1'h0; // @[AsyncQueue.scala 91:55]
+  reg  widx_gray; // @[AsyncQueue.scala 91:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 ridx_ridx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(ridx_ridx_gray_clock),
+    .reset(ridx_ridx_gray_reset),
+    .io_d(ridx_ridx_gray_io_d),
+    .io_q(ridx_ridx_gray_io_q)
+  );
+  AsyncValidSync source_valid_0 ( // @[AsyncQueue.scala 100:32]
+    .io_in(source_valid_0_io_in),
+    .io_out(source_valid_0_io_out),
+    .clock(source_valid_0_clock),
+    .reset(source_valid_0_reset)
+  );
+  AsyncValidSync source_valid_1 ( // @[AsyncQueue.scala 101:32]
+    .io_in(source_valid_1_io_in),
+    .io_out(source_valid_1_io_out),
+    .clock(source_valid_1_clock),
+    .reset(source_valid_1_reset)
+  );
+  AsyncValidSync sink_extend ( // @[AsyncQueue.scala 103:30]
+    .io_in(sink_extend_io_in),
+    .io_out(sink_extend_io_out),
+    .clock(sink_extend_clock),
+    .reset(sink_extend_reset)
+  );
+  AsyncValidSync sink_valid ( // @[AsyncQueue.scala 104:30]
+    .io_in(sink_valid_io_in),
+    .io_out(sink_valid_io_out),
+    .clock(sink_valid_clock),
+    .reset(sink_valid_reset)
+  );
+  assign io_enq_ready = ready_reg & sink_ready; // @[AsyncQueue.scala 89:29]
+  assign io_async_mem_0_opcode = mem_0_opcode; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_size = mem_0_size; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_source = mem_0_source; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_data = mem_0_data; // @[AsyncQueue.scala 96:31]
+  assign io_async_widx = widx_gray; // @[AsyncQueue.scala 92:17]
+  assign io_async_safe_widx_valid = source_valid_1_io_out; // @[AsyncQueue.scala 117:20]
+  assign ridx_ridx_gray_clock = clock;
+  assign ridx_ridx_gray_reset = 1'h0;
+  assign ridx_ridx_gray_io_d = io_async_ridx; // @[ShiftReg.scala 47:16]
+  assign source_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 115:26]
+  assign source_valid_0_clock = clock; // @[AsyncQueue.scala 110:26]
+  assign source_valid_0_reset = ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 105:65]
+  assign source_valid_1_io_in = source_valid_0_io_out; // @[AsyncQueue.scala 116:26]
+  assign source_valid_1_clock = clock; // @[AsyncQueue.scala 111:26]
+  assign source_valid_1_reset = ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 106:65]
+  assign sink_extend_io_in = io_async_safe_ridx_valid; // @[AsyncQueue.scala 118:23]
+  assign sink_extend_clock = clock; // @[AsyncQueue.scala 112:26]
+  assign sink_extend_reset = ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 107:65]
+  assign sink_valid_io_in = sink_extend_io_out; // @[AsyncQueue.scala 119:22]
+  assign sink_valid_clock = clock; // @[AsyncQueue.scala 113:26]
+  assign sink_valid_reset = 1'h0; // @[AsyncQueue.scala 108:35]
+  always @(posedge clock) begin
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_opcode <= io_enq_bits_opcode; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_size <= io_enq_bits_size; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_source <= io_enq_bits_source; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_data <= io_enq_bits_data; // @[AsyncQueue.scala 86:37]
+    end
+  end
+  always @(posedge clock or posedge _GEN_0) begin
+    if (_GEN_0) begin // @[AsyncQueue.scala 53:23]
+      widx_widx_bin <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_widx_bin <= 1'h0;
+    end else begin
+      widx_widx_bin <= widx_widx_bin + _widx_T_1;
+    end
+  end
+  always @(posedge clock or posedge _GEN_1) begin
+    if (_GEN_1) begin // @[AsyncQueue.scala 83:26]
+      ready_reg <= 1'h0;
+    end else begin
+      ready_reg <= sink_ready & widx_incremented != (ridx ^ 1'h1);
+    end
+  end
+  always @(posedge clock or posedge _GEN_2) begin
+    if (_GEN_2) begin // @[AsyncQueue.scala 53:23]
+      widx_gray <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_gray <= 1'h0;
+    end else begin
+      widx_gray <= widx_widx_bin + _widx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  mem_0_opcode = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  mem_0_size = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  mem_0_source = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  mem_0_data = _RAND_3[31:0];
+  _RAND_4 = {1{`RANDOM}};
+  widx_widx_bin = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  ready_reg = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  widx_gray = _RAND_6[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (_GEN_0) begin
+    widx_widx_bin = 1'h0;
+  end
+  if (_GEN_1) begin
+    ready_reg = 1'h0;
+  end
+  if (_GEN_2) begin
+    widx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLAsyncCrossingSink(
+  input         clock,
+  input  [2:0]  auto_in_a_mem_0_opcode,
+  input  [8:0]  auto_in_a_mem_0_address,
+  input  [31:0] auto_in_a_mem_0_data,
+  output        auto_in_a_ridx,
+  input         auto_in_a_widx,
+  output        auto_in_a_safe_ridx_valid,
+  input         auto_in_a_safe_widx_valid,
+  input         auto_in_a_safe_source_reset_n,
+  output [2:0]  auto_in_d_mem_0_opcode,
+  output [1:0]  auto_in_d_mem_0_size,
+  output        auto_in_d_mem_0_source,
+  output [31:0] auto_in_d_mem_0_data,
+  input         auto_in_d_ridx,
+  output        auto_in_d_widx,
+  input         auto_in_d_safe_ridx_valid,
+  output        auto_in_d_safe_widx_valid,
+  input         auto_in_d_safe_sink_reset_n,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output        auto_out_a_bits_source,
+  output [8:0]  auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input         auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  wire  bundleOut_0_a_sink_clock; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_deq_ready; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_deq_valid; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleOut_0_a_sink_io_deq_bits_opcode; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleOut_0_a_sink_io_deq_bits_param; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleOut_0_a_sink_io_deq_bits_size; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_deq_bits_source; // @[AsyncQueue.scala 207:22]
+  wire [8:0] bundleOut_0_a_sink_io_deq_bits_address; // @[AsyncQueue.scala 207:22]
+  wire [3:0] bundleOut_0_a_sink_io_deq_bits_mask; // @[AsyncQueue.scala 207:22]
+  wire [31:0] bundleOut_0_a_sink_io_deq_bits_data; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_deq_bits_corrupt; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleOut_0_a_sink_io_async_mem_0_opcode; // @[AsyncQueue.scala 207:22]
+  wire [8:0] bundleOut_0_a_sink_io_async_mem_0_address; // @[AsyncQueue.scala 207:22]
+  wire [31:0] bundleOut_0_a_sink_io_async_mem_0_data; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_ridx; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_widx; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_safe_ridx_valid; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_safe_widx_valid; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_safe_source_reset_n; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_source_clock; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_enq_ready; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_enq_valid; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleIn_0_d_source_io_enq_bits_opcode; // @[AsyncQueue.scala 216:24]
+  wire [1:0] bundleIn_0_d_source_io_enq_bits_size; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_enq_bits_source; // @[AsyncQueue.scala 216:24]
+  wire [31:0] bundleIn_0_d_source_io_enq_bits_data; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleIn_0_d_source_io_async_mem_0_opcode; // @[AsyncQueue.scala 216:24]
+  wire [1:0] bundleIn_0_d_source_io_async_mem_0_size; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_mem_0_source; // @[AsyncQueue.scala 216:24]
+  wire [31:0] bundleIn_0_d_source_io_async_mem_0_data; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_ridx; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_widx; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_safe_ridx_valid; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_safe_widx_valid; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 216:24]
+  AsyncQueueSink_2 bundleOut_0_a_sink ( // @[AsyncQueue.scala 207:22]
+    .clock(bundleOut_0_a_sink_clock),
+    .io_deq_ready(bundleOut_0_a_sink_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_sink_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_sink_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_sink_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_sink_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_sink_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_sink_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_sink_io_deq_bits_mask),
+    .io_deq_bits_data(bundleOut_0_a_sink_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_a_sink_io_deq_bits_corrupt),
+    .io_async_mem_0_opcode(bundleOut_0_a_sink_io_async_mem_0_opcode),
+    .io_async_mem_0_address(bundleOut_0_a_sink_io_async_mem_0_address),
+    .io_async_mem_0_data(bundleOut_0_a_sink_io_async_mem_0_data),
+    .io_async_ridx(bundleOut_0_a_sink_io_async_ridx),
+    .io_async_widx(bundleOut_0_a_sink_io_async_widx),
+    .io_async_safe_ridx_valid(bundleOut_0_a_sink_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(bundleOut_0_a_sink_io_async_safe_widx_valid),
+    .io_async_safe_source_reset_n(bundleOut_0_a_sink_io_async_safe_source_reset_n)
+  );
+  AsyncQueueSource_3 bundleIn_0_d_source ( // @[AsyncQueue.scala 216:24]
+    .clock(bundleIn_0_d_source_clock),
+    .io_enq_ready(bundleIn_0_d_source_io_enq_ready),
+    .io_enq_valid(bundleIn_0_d_source_io_enq_valid),
+    .io_enq_bits_opcode(bundleIn_0_d_source_io_enq_bits_opcode),
+    .io_enq_bits_size(bundleIn_0_d_source_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_source_io_enq_bits_source),
+    .io_enq_bits_data(bundleIn_0_d_source_io_enq_bits_data),
+    .io_async_mem_0_opcode(bundleIn_0_d_source_io_async_mem_0_opcode),
+    .io_async_mem_0_size(bundleIn_0_d_source_io_async_mem_0_size),
+    .io_async_mem_0_source(bundleIn_0_d_source_io_async_mem_0_source),
+    .io_async_mem_0_data(bundleIn_0_d_source_io_async_mem_0_data),
+    .io_async_ridx(bundleIn_0_d_source_io_async_ridx),
+    .io_async_widx(bundleIn_0_d_source_io_async_widx),
+    .io_async_safe_ridx_valid(bundleIn_0_d_source_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(bundleIn_0_d_source_io_async_safe_widx_valid),
+    .io_async_safe_sink_reset_n(bundleIn_0_d_source_io_async_safe_sink_reset_n)
+  );
+  assign auto_in_a_ridx = bundleOut_0_a_sink_io_async_ridx; // @[Nodes.scala 1210:84 AsyncQueue.scala 208:19]
+  assign auto_in_a_safe_ridx_valid = bundleOut_0_a_sink_io_async_safe_ridx_valid; // @[Nodes.scala 1210:84 AsyncQueue.scala 208:19]
+  assign auto_in_d_mem_0_opcode = bundleIn_0_d_source_io_async_mem_0_opcode; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_mem_0_size = bundleIn_0_d_source_io_async_mem_0_size; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_mem_0_source = bundleIn_0_d_source_io_async_mem_0_source; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_mem_0_data = bundleIn_0_d_source_io_async_mem_0_data; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_widx = bundleIn_0_d_source_io_async_widx; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_safe_widx_valid = bundleIn_0_d_source_io_async_safe_widx_valid; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_out_a_valid = bundleOut_0_a_sink_io_deq_valid; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_sink_io_deq_bits_opcode; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_sink_io_deq_bits_param; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_sink_io_deq_bits_size; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_sink_io_deq_bits_source; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_sink_io_deq_bits_address; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_sink_io_deq_bits_mask; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_data = bundleOut_0_a_sink_io_deq_bits_data; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_sink_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_d_ready = bundleIn_0_d_source_io_enq_ready; // @[Nodes.scala 1207:84 AsyncQueue.scala 217:19]
+  assign bundleOut_0_a_sink_clock = clock;
+  assign bundleOut_0_a_sink_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleOut_0_a_sink_io_async_mem_0_opcode = auto_in_a_mem_0_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_address = auto_in_a_mem_0_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_data = auto_in_a_mem_0_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_widx = auto_in_a_widx; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_safe_widx_valid = auto_in_a_safe_widx_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_safe_source_reset_n = auto_in_a_safe_source_reset_n; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_d_source_clock = clock;
+  assign bundleIn_0_d_source_io_enq_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_enq_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_enq_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_enq_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_enq_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_async_ridx = auto_in_d_ridx; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_d_source_io_async_safe_ridx_valid = auto_in_d_safe_ridx_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_d_source_io_async_safe_sink_reset_n = auto_in_d_safe_sink_reset_n; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockCrossingReg_w15(
+  input         clock,
+  input  [14:0] io_d,
+  output [14:0] io_q,
+  input         io_en
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [14:0] cdc_reg; // @[Reg.scala 16:16]
+  assign io_q = cdc_reg; // @[SynchronizerReg.scala 202:8]
+  always @(posedge clock) begin
+    if (io_en) begin // @[Reg.scala 17:18]
+      cdc_reg <= io_d; // @[Reg.scala 17:22]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  cdc_reg = _RAND_0[14:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncQueueSink_3(
+  input        clock,
+  output       io_deq_valid,
+  output       io_deq_bits_resumereq,
+  output [9:0] io_deq_bits_hartsel,
+  output       io_deq_bits_ackhavereset,
+  output       io_deq_bits_hrmask_0,
+  input        io_async_mem_0_resumereq,
+  input        io_async_mem_0_ackhavereset,
+  input        io_async_mem_0_hrmask_0,
+  output       io_async_ridx,
+  input        io_async_widx,
+  output       io_async_safe_ridx_valid,
+  input        io_async_safe_widx_valid,
+  input        io_async_safe_source_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  wire  widx_widx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  io_deq_bits_deq_bits_reg_clock; // @[SynchronizerReg.scala 207:25]
+  wire [14:0] io_deq_bits_deq_bits_reg_io_d; // @[SynchronizerReg.scala 207:25]
+  wire [14:0] io_deq_bits_deq_bits_reg_io_q; // @[SynchronizerReg.scala 207:25]
+  wire  io_deq_bits_deq_bits_reg_io_en; // @[SynchronizerReg.scala 207:25]
+  wire  sink_valid_0_io_in; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_io_out; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_clock; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_reset; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_1_io_in; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_io_out; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_clock; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_reset; // @[AsyncQueue.scala 169:33]
+  wire  source_extend_io_in; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_io_out; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_clock; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_reset; // @[AsyncQueue.scala 171:31]
+  wire  source_valid_io_in; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_io_out; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_clock; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_reset; // @[AsyncQueue.scala 172:31]
+  wire  source_ready = source_valid_io_out;
+  wire  _ridx_T_2 = ~source_ready; // @[AsyncQueue.scala 144:79]
+  wire  _GEN_0 = 1'h0; // @[AsyncQueue.scala 52:25]
+  reg  ridx_ridx_bin; // @[AsyncQueue.scala 52:25]
+  wire  ridx_incremented = _ridx_T_2 ? 1'h0 : ridx_ridx_bin + io_deq_valid; // @[AsyncQueue.scala 53:23]
+  wire  widx = widx_widx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [2:0] io_deq_bits_deq_bits_reg_io_d_lo = {2'h0,io_async_mem_0_hrmask_0}; // @[SynchronizerReg.scala 209:24]
+  wire [11:0] io_deq_bits_deq_bits_reg_io_d_hi = {io_async_mem_0_resumereq,10'h0,io_async_mem_0_ackhavereset}; // @[SynchronizerReg.scala 209:24]
+  wire [14:0] _io_deq_bits_WIRE_1 = io_deq_bits_deq_bits_reg_io_q;
+  wire  _GEN_1 = 1'h0; // @[AsyncQueue.scala 161:56]
+  reg  valid_reg; // @[AsyncQueue.scala 161:56]
+  wire  _GEN_2 = 1'h0; // @[AsyncQueue.scala 164:55]
+  reg  ridx_gray; // @[AsyncQueue.scala 164:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 widx_widx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(widx_widx_gray_clock),
+    .reset(widx_widx_gray_reset),
+    .io_d(widx_widx_gray_io_d),
+    .io_q(widx_widx_gray_io_q)
+  );
+  ClockCrossingReg_w15 io_deq_bits_deq_bits_reg ( // @[SynchronizerReg.scala 207:25]
+    .clock(io_deq_bits_deq_bits_reg_clock),
+    .io_d(io_deq_bits_deq_bits_reg_io_d),
+    .io_q(io_deq_bits_deq_bits_reg_io_q),
+    .io_en(io_deq_bits_deq_bits_reg_io_en)
+  );
+  AsyncValidSync sink_valid_0 ( // @[AsyncQueue.scala 168:33]
+    .io_in(sink_valid_0_io_in),
+    .io_out(sink_valid_0_io_out),
+    .clock(sink_valid_0_clock),
+    .reset(sink_valid_0_reset)
+  );
+  AsyncValidSync sink_valid_1 ( // @[AsyncQueue.scala 169:33]
+    .io_in(sink_valid_1_io_in),
+    .io_out(sink_valid_1_io_out),
+    .clock(sink_valid_1_clock),
+    .reset(sink_valid_1_reset)
+  );
+  AsyncValidSync source_extend ( // @[AsyncQueue.scala 171:31]
+    .io_in(source_extend_io_in),
+    .io_out(source_extend_io_out),
+    .clock(source_extend_clock),
+    .reset(source_extend_reset)
+  );
+  AsyncValidSync source_valid ( // @[AsyncQueue.scala 172:31]
+    .io_in(source_valid_io_in),
+    .io_out(source_valid_io_out),
+    .clock(source_valid_clock),
+    .reset(source_valid_reset)
+  );
+  assign io_deq_valid = valid_reg & source_ready; // @[AsyncQueue.scala 162:29]
+  assign io_deq_bits_resumereq = _io_deq_bits_WIRE_1[14]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_hartsel = _io_deq_bits_WIRE_1[13:4]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_ackhavereset = _io_deq_bits_WIRE_1[3]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_hrmask_0 = _io_deq_bits_WIRE_1[0]; // @[SynchronizerReg.scala 211:26]
+  assign io_async_ridx = ridx_gray; // @[AsyncQueue.scala 165:17]
+  assign io_async_safe_ridx_valid = sink_valid_1_io_out; // @[AsyncQueue.scala 185:20]
+  assign widx_widx_gray_clock = clock;
+  assign widx_widx_gray_reset = 1'h0;
+  assign widx_widx_gray_io_d = io_async_widx; // @[ShiftReg.scala 47:16]
+  assign io_deq_bits_deq_bits_reg_clock = clock;
+  assign io_deq_bits_deq_bits_reg_io_d = {io_deq_bits_deq_bits_reg_io_d_hi,io_deq_bits_deq_bits_reg_io_d_lo}; // @[SynchronizerReg.scala 209:24]
+  assign io_deq_bits_deq_bits_reg_io_en = source_ready & ridx_incremented != widx; // @[AsyncQueue.scala 146:28]
+  assign sink_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 183:24]
+  assign sink_valid_0_clock = clock; // @[AsyncQueue.scala 178:25]
+  assign sink_valid_0_reset = ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 173:66]
+  assign sink_valid_1_io_in = sink_valid_0_io_out; // @[AsyncQueue.scala 184:24]
+  assign sink_valid_1_clock = clock; // @[AsyncQueue.scala 179:25]
+  assign sink_valid_1_reset = ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 174:66]
+  assign source_extend_io_in = io_async_safe_widx_valid; // @[AsyncQueue.scala 186:25]
+  assign source_extend_clock = clock; // @[AsyncQueue.scala 180:25]
+  assign source_extend_reset = ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 175:66]
+  assign source_valid_io_in = source_extend_io_out; // @[AsyncQueue.scala 187:24]
+  assign source_valid_clock = clock; // @[AsyncQueue.scala 181:25]
+  assign source_valid_reset = 1'h0; // @[AsyncQueue.scala 176:34]
+  always @(posedge clock or posedge _GEN_0) begin
+    if (_GEN_0) begin // @[AsyncQueue.scala 53:23]
+      ridx_ridx_bin <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_ridx_bin <= 1'h0;
+    end else begin
+      ridx_ridx_bin <= ridx_ridx_bin + io_deq_valid;
+    end
+  end
+  always @(posedge clock or posedge _GEN_1) begin
+    if (_GEN_1) begin // @[AsyncQueue.scala 146:28]
+      valid_reg <= 1'h0;
+    end else begin
+      valid_reg <= source_ready & ridx_incremented != widx;
+    end
+  end
+  always @(posedge clock or posedge _GEN_2) begin
+    if (_GEN_2) begin // @[AsyncQueue.scala 53:23]
+      ridx_gray <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_gray <= 1'h0;
+    end else begin
+      ridx_gray <= ridx_ridx_bin + io_deq_valid;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ridx_ridx_bin = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  valid_reg = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ridx_gray = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (_GEN_0) begin
+    ridx_ridx_bin = 1'h0;
+  end
+  if (_GEN_1) begin
+    valid_reg = 1'h0;
+  end
+  if (_GEN_2) begin
+    ridx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLDebugModuleInnerAsync(
+  input  [2:0]  auto_dmiXing_in_a_mem_0_opcode,
+  input  [8:0]  auto_dmiXing_in_a_mem_0_address,
+  input  [31:0] auto_dmiXing_in_a_mem_0_data,
+  output        auto_dmiXing_in_a_ridx,
+  input         auto_dmiXing_in_a_widx,
+  output        auto_dmiXing_in_a_safe_ridx_valid,
+  input         auto_dmiXing_in_a_safe_widx_valid,
+  input         auto_dmiXing_in_a_safe_source_reset_n,
+  output [2:0]  auto_dmiXing_in_d_mem_0_opcode,
+  output [1:0]  auto_dmiXing_in_d_mem_0_size,
+  output        auto_dmiXing_in_d_mem_0_source,
+  output [31:0] auto_dmiXing_in_d_mem_0_data,
+  input         auto_dmiXing_in_d_ridx,
+  output        auto_dmiXing_in_d_widx,
+  input         auto_dmiXing_in_d_safe_ridx_valid,
+  output        auto_dmiXing_in_d_safe_widx_valid,
+  input         auto_dmiXing_in_d_safe_sink_reset_n,
+  output        auto_dmInner_tl_in_a_ready,
+  input         auto_dmInner_tl_in_a_valid,
+  input  [2:0]  auto_dmInner_tl_in_a_bits_opcode,
+  input  [2:0]  auto_dmInner_tl_in_a_bits_param,
+  input  [1:0]  auto_dmInner_tl_in_a_bits_size,
+  input  [6:0]  auto_dmInner_tl_in_a_bits_source,
+  input  [11:0] auto_dmInner_tl_in_a_bits_address,
+  input  [3:0]  auto_dmInner_tl_in_a_bits_mask,
+  input  [31:0] auto_dmInner_tl_in_a_bits_data,
+  input         auto_dmInner_tl_in_a_bits_corrupt,
+  input         auto_dmInner_tl_in_d_ready,
+  output        auto_dmInner_tl_in_d_valid,
+  output [2:0]  auto_dmInner_tl_in_d_bits_opcode,
+  output [1:0]  auto_dmInner_tl_in_d_bits_size,
+  output [6:0]  auto_dmInner_tl_in_d_bits_source,
+  output [31:0] auto_dmInner_tl_in_d_bits_data,
+  input         io_debug_clock,
+  input         io_dmactive,
+  input         io_innerCtrl_mem_0_resumereq,
+  input         io_innerCtrl_mem_0_ackhavereset,
+  input         io_innerCtrl_mem_0_hrmask_0,
+  output        io_innerCtrl_ridx,
+  input         io_innerCtrl_widx,
+  output        io_innerCtrl_safe_ridx_valid,
+  input         io_innerCtrl_safe_widx_valid,
+  input         io_innerCtrl_safe_source_reset_n,
+  output        io_hgDebugInt_0
+);
+  wire  dmInner_clock; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_tl_in_a_ready; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_tl_in_a_valid; // @[Debug.scala 1741:27]
+  wire [2:0] dmInner_auto_tl_in_a_bits_opcode; // @[Debug.scala 1741:27]
+  wire [2:0] dmInner_auto_tl_in_a_bits_param; // @[Debug.scala 1741:27]
+  wire [1:0] dmInner_auto_tl_in_a_bits_size; // @[Debug.scala 1741:27]
+  wire [6:0] dmInner_auto_tl_in_a_bits_source; // @[Debug.scala 1741:27]
+  wire [11:0] dmInner_auto_tl_in_a_bits_address; // @[Debug.scala 1741:27]
+  wire [3:0] dmInner_auto_tl_in_a_bits_mask; // @[Debug.scala 1741:27]
+  wire [31:0] dmInner_auto_tl_in_a_bits_data; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_tl_in_a_bits_corrupt; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_tl_in_d_ready; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_tl_in_d_valid; // @[Debug.scala 1741:27]
+  wire [2:0] dmInner_auto_tl_in_d_bits_opcode; // @[Debug.scala 1741:27]
+  wire [1:0] dmInner_auto_tl_in_d_bits_size; // @[Debug.scala 1741:27]
+  wire [6:0] dmInner_auto_tl_in_d_bits_source; // @[Debug.scala 1741:27]
+  wire [31:0] dmInner_auto_tl_in_d_bits_data; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_dmi_in_a_ready; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_dmi_in_a_valid; // @[Debug.scala 1741:27]
+  wire [2:0] dmInner_auto_dmi_in_a_bits_opcode; // @[Debug.scala 1741:27]
+  wire [2:0] dmInner_auto_dmi_in_a_bits_param; // @[Debug.scala 1741:27]
+  wire [1:0] dmInner_auto_dmi_in_a_bits_size; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_dmi_in_a_bits_source; // @[Debug.scala 1741:27]
+  wire [8:0] dmInner_auto_dmi_in_a_bits_address; // @[Debug.scala 1741:27]
+  wire [3:0] dmInner_auto_dmi_in_a_bits_mask; // @[Debug.scala 1741:27]
+  wire [31:0] dmInner_auto_dmi_in_a_bits_data; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_dmi_in_a_bits_corrupt; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_dmi_in_d_ready; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_dmi_in_d_valid; // @[Debug.scala 1741:27]
+  wire [2:0] dmInner_auto_dmi_in_d_bits_opcode; // @[Debug.scala 1741:27]
+  wire [1:0] dmInner_auto_dmi_in_d_bits_size; // @[Debug.scala 1741:27]
+  wire  dmInner_auto_dmi_in_d_bits_source; // @[Debug.scala 1741:27]
+  wire [31:0] dmInner_auto_dmi_in_d_bits_data; // @[Debug.scala 1741:27]
+  wire  dmInner_io_dmactive; // @[Debug.scala 1741:27]
+  wire  dmInner_io_innerCtrl_ready; // @[Debug.scala 1741:27]
+  wire  dmInner_io_innerCtrl_valid; // @[Debug.scala 1741:27]
+  wire  dmInner_io_innerCtrl_bits_resumereq; // @[Debug.scala 1741:27]
+  wire [9:0] dmInner_io_innerCtrl_bits_hartsel; // @[Debug.scala 1741:27]
+  wire  dmInner_io_innerCtrl_bits_ackhavereset; // @[Debug.scala 1741:27]
+  wire  dmInner_io_innerCtrl_bits_hrmask_0; // @[Debug.scala 1741:27]
+  wire  dmInner_io_hgDebugInt_0; // @[Debug.scala 1741:27]
+  wire  dmiXing_clock; // @[Debug.scala 1742:27]
+  wire [2:0] dmiXing_auto_in_a_mem_0_opcode; // @[Debug.scala 1742:27]
+  wire [8:0] dmiXing_auto_in_a_mem_0_address; // @[Debug.scala 1742:27]
+  wire [31:0] dmiXing_auto_in_a_mem_0_data; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_a_ridx; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_a_widx; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_a_safe_ridx_valid; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_a_safe_widx_valid; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_a_safe_source_reset_n; // @[Debug.scala 1742:27]
+  wire [2:0] dmiXing_auto_in_d_mem_0_opcode; // @[Debug.scala 1742:27]
+  wire [1:0] dmiXing_auto_in_d_mem_0_size; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_d_mem_0_source; // @[Debug.scala 1742:27]
+  wire [31:0] dmiXing_auto_in_d_mem_0_data; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_d_ridx; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_d_widx; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_d_safe_ridx_valid; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_d_safe_widx_valid; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_in_d_safe_sink_reset_n; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_out_a_ready; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_out_a_valid; // @[Debug.scala 1742:27]
+  wire [2:0] dmiXing_auto_out_a_bits_opcode; // @[Debug.scala 1742:27]
+  wire [2:0] dmiXing_auto_out_a_bits_param; // @[Debug.scala 1742:27]
+  wire [1:0] dmiXing_auto_out_a_bits_size; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_out_a_bits_source; // @[Debug.scala 1742:27]
+  wire [8:0] dmiXing_auto_out_a_bits_address; // @[Debug.scala 1742:27]
+  wire [3:0] dmiXing_auto_out_a_bits_mask; // @[Debug.scala 1742:27]
+  wire [31:0] dmiXing_auto_out_a_bits_data; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_out_a_bits_corrupt; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_out_d_ready; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_out_d_valid; // @[Debug.scala 1742:27]
+  wire [2:0] dmiXing_auto_out_d_bits_opcode; // @[Debug.scala 1742:27]
+  wire [1:0] dmiXing_auto_out_d_bits_size; // @[Debug.scala 1742:27]
+  wire  dmiXing_auto_out_d_bits_source; // @[Debug.scala 1742:27]
+  wire [31:0] dmiXing_auto_out_d_bits_data; // @[Debug.scala 1742:27]
+  wire  dmactive_synced_dmactive_synced_dmactiveSync_clock; // @[ShiftReg.scala 45:23]
+  wire  dmactive_synced_dmactive_synced_dmactiveSync_reset; // @[ShiftReg.scala 45:23]
+  wire  dmactive_synced_dmactive_synced_dmactiveSync_io_d; // @[ShiftReg.scala 45:23]
+  wire  dmactive_synced_dmactive_synced_dmactiveSync_io_q; // @[ShiftReg.scala 45:23]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_clock; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_valid; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_resumereq; // @[AsyncQueue.scala 207:22]
+  wire [9:0] dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_hartsel; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_ackhavereset; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_hrmask_0; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_resumereq; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_ackhavereset; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_hrmask_0; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_ridx; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_widx; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_ridx_valid; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_widx_valid; // @[AsyncQueue.scala 207:22]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_source_reset_n; // @[AsyncQueue.scala 207:22]
+  TLDebugModuleInner dmInner ( // @[Debug.scala 1741:27]
+    .clock(dmInner_clock),
+    .auto_tl_in_a_ready(dmInner_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(dmInner_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(dmInner_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(dmInner_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(dmInner_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(dmInner_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(dmInner_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(dmInner_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(dmInner_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(dmInner_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(dmInner_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(dmInner_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(dmInner_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(dmInner_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(dmInner_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(dmInner_auto_tl_in_d_bits_data),
+    .auto_dmi_in_a_ready(dmInner_auto_dmi_in_a_ready),
+    .auto_dmi_in_a_valid(dmInner_auto_dmi_in_a_valid),
+    .auto_dmi_in_a_bits_opcode(dmInner_auto_dmi_in_a_bits_opcode),
+    .auto_dmi_in_a_bits_param(dmInner_auto_dmi_in_a_bits_param),
+    .auto_dmi_in_a_bits_size(dmInner_auto_dmi_in_a_bits_size),
+    .auto_dmi_in_a_bits_source(dmInner_auto_dmi_in_a_bits_source),
+    .auto_dmi_in_a_bits_address(dmInner_auto_dmi_in_a_bits_address),
+    .auto_dmi_in_a_bits_mask(dmInner_auto_dmi_in_a_bits_mask),
+    .auto_dmi_in_a_bits_data(dmInner_auto_dmi_in_a_bits_data),
+    .auto_dmi_in_a_bits_corrupt(dmInner_auto_dmi_in_a_bits_corrupt),
+    .auto_dmi_in_d_ready(dmInner_auto_dmi_in_d_ready),
+    .auto_dmi_in_d_valid(dmInner_auto_dmi_in_d_valid),
+    .auto_dmi_in_d_bits_opcode(dmInner_auto_dmi_in_d_bits_opcode),
+    .auto_dmi_in_d_bits_size(dmInner_auto_dmi_in_d_bits_size),
+    .auto_dmi_in_d_bits_source(dmInner_auto_dmi_in_d_bits_source),
+    .auto_dmi_in_d_bits_data(dmInner_auto_dmi_in_d_bits_data),
+    .io_dmactive(dmInner_io_dmactive),
+    .io_innerCtrl_ready(dmInner_io_innerCtrl_ready),
+    .io_innerCtrl_valid(dmInner_io_innerCtrl_valid),
+    .io_innerCtrl_bits_resumereq(dmInner_io_innerCtrl_bits_resumereq),
+    .io_innerCtrl_bits_hartsel(dmInner_io_innerCtrl_bits_hartsel),
+    .io_innerCtrl_bits_ackhavereset(dmInner_io_innerCtrl_bits_ackhavereset),
+    .io_innerCtrl_bits_hrmask_0(dmInner_io_innerCtrl_bits_hrmask_0),
+    .io_hgDebugInt_0(dmInner_io_hgDebugInt_0)
+  );
+  TLAsyncCrossingSink dmiXing ( // @[Debug.scala 1742:27]
+    .clock(dmiXing_clock),
+    .auto_in_a_mem_0_opcode(dmiXing_auto_in_a_mem_0_opcode),
+    .auto_in_a_mem_0_address(dmiXing_auto_in_a_mem_0_address),
+    .auto_in_a_mem_0_data(dmiXing_auto_in_a_mem_0_data),
+    .auto_in_a_ridx(dmiXing_auto_in_a_ridx),
+    .auto_in_a_widx(dmiXing_auto_in_a_widx),
+    .auto_in_a_safe_ridx_valid(dmiXing_auto_in_a_safe_ridx_valid),
+    .auto_in_a_safe_widx_valid(dmiXing_auto_in_a_safe_widx_valid),
+    .auto_in_a_safe_source_reset_n(dmiXing_auto_in_a_safe_source_reset_n),
+    .auto_in_d_mem_0_opcode(dmiXing_auto_in_d_mem_0_opcode),
+    .auto_in_d_mem_0_size(dmiXing_auto_in_d_mem_0_size),
+    .auto_in_d_mem_0_source(dmiXing_auto_in_d_mem_0_source),
+    .auto_in_d_mem_0_data(dmiXing_auto_in_d_mem_0_data),
+    .auto_in_d_ridx(dmiXing_auto_in_d_ridx),
+    .auto_in_d_widx(dmiXing_auto_in_d_widx),
+    .auto_in_d_safe_ridx_valid(dmiXing_auto_in_d_safe_ridx_valid),
+    .auto_in_d_safe_widx_valid(dmiXing_auto_in_d_safe_widx_valid),
+    .auto_in_d_safe_sink_reset_n(dmiXing_auto_in_d_safe_sink_reset_n),
+    .auto_out_a_ready(dmiXing_auto_out_a_ready),
+    .auto_out_a_valid(dmiXing_auto_out_a_valid),
+    .auto_out_a_bits_opcode(dmiXing_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(dmiXing_auto_out_a_bits_param),
+    .auto_out_a_bits_size(dmiXing_auto_out_a_bits_size),
+    .auto_out_a_bits_source(dmiXing_auto_out_a_bits_source),
+    .auto_out_a_bits_address(dmiXing_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(dmiXing_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(dmiXing_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(dmiXing_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(dmiXing_auto_out_d_ready),
+    .auto_out_d_valid(dmiXing_auto_out_d_valid),
+    .auto_out_d_bits_opcode(dmiXing_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(dmiXing_auto_out_d_bits_size),
+    .auto_out_d_bits_source(dmiXing_auto_out_d_bits_source),
+    .auto_out_d_bits_data(dmiXing_auto_out_d_bits_data)
+  );
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 dmactive_synced_dmactive_synced_dmactiveSync ( // @[ShiftReg.scala 45:23]
+    .clock(dmactive_synced_dmactive_synced_dmactiveSync_clock),
+    .reset(dmactive_synced_dmactive_synced_dmactiveSync_reset),
+    .io_d(dmactive_synced_dmactive_synced_dmactiveSync_io_d),
+    .io_q(dmactive_synced_dmactive_synced_dmactiveSync_io_q)
+  );
+  AsyncQueueSink_3 dmactive_synced_dmInner_io_innerCtrl_sink ( // @[AsyncQueue.scala 207:22]
+    .clock(dmactive_synced_dmInner_io_innerCtrl_sink_clock),
+    .io_deq_valid(dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_valid),
+    .io_deq_bits_resumereq(dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_resumereq),
+    .io_deq_bits_hartsel(dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_hartsel),
+    .io_deq_bits_ackhavereset(dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_ackhavereset),
+    .io_deq_bits_hrmask_0(dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_hrmask_0),
+    .io_async_mem_0_resumereq(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_resumereq),
+    .io_async_mem_0_ackhavereset(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_ackhavereset),
+    .io_async_mem_0_hrmask_0(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_hrmask_0),
+    .io_async_ridx(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_ridx),
+    .io_async_widx(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_widx),
+    .io_async_safe_ridx_valid(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_widx_valid),
+    .io_async_safe_source_reset_n(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_source_reset_n)
+  );
+  assign auto_dmiXing_in_a_ridx = dmiXing_auto_in_a_ridx; // @[LazyModule.scala 309:16]
+  assign auto_dmiXing_in_a_safe_ridx_valid = dmiXing_auto_in_a_safe_ridx_valid; // @[LazyModule.scala 309:16]
+  assign auto_dmiXing_in_d_mem_0_opcode = dmiXing_auto_in_d_mem_0_opcode; // @[LazyModule.scala 309:16]
+  assign auto_dmiXing_in_d_mem_0_size = dmiXing_auto_in_d_mem_0_size; // @[LazyModule.scala 309:16]
+  assign auto_dmiXing_in_d_mem_0_source = dmiXing_auto_in_d_mem_0_source; // @[LazyModule.scala 309:16]
+  assign auto_dmiXing_in_d_mem_0_data = dmiXing_auto_in_d_mem_0_data; // @[LazyModule.scala 309:16]
+  assign auto_dmiXing_in_d_widx = dmiXing_auto_in_d_widx; // @[LazyModule.scala 309:16]
+  assign auto_dmiXing_in_d_safe_widx_valid = dmiXing_auto_in_d_safe_widx_valid; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_tl_in_a_ready = dmInner_auto_tl_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_tl_in_d_valid = dmInner_auto_tl_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_tl_in_d_bits_opcode = dmInner_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_tl_in_d_bits_size = dmInner_auto_tl_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_tl_in_d_bits_source = dmInner_auto_tl_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_tl_in_d_bits_data = dmInner_auto_tl_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign io_innerCtrl_ridx = dmactive_synced_dmInner_io_innerCtrl_sink_io_async_ridx; // @[AsyncQueue.scala 208:19]
+  assign io_innerCtrl_safe_ridx_valid = dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_ridx_valid; // @[AsyncQueue.scala 208:19]
+  assign io_hgDebugInt_0 = dmInner_io_hgDebugInt_0; // @[Debug.scala 1789:21]
+  assign dmInner_clock = io_debug_clock; // @[Debug.scala 1782:28]
+  assign dmInner_auto_tl_in_a_valid = auto_dmInner_tl_in_a_valid; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_a_bits_opcode = auto_dmInner_tl_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_a_bits_param = auto_dmInner_tl_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_a_bits_size = auto_dmInner_tl_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_a_bits_source = auto_dmInner_tl_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_a_bits_address = auto_dmInner_tl_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_a_bits_mask = auto_dmInner_tl_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_a_bits_data = auto_dmInner_tl_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_a_bits_corrupt = auto_dmInner_tl_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_tl_in_d_ready = auto_dmInner_tl_in_d_ready; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmi_in_a_valid = dmiXing_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_a_bits_opcode = dmiXing_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_a_bits_param = dmiXing_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_a_bits_size = dmiXing_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_a_bits_source = dmiXing_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_a_bits_address = dmiXing_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_a_bits_mask = dmiXing_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_a_bits_data = dmiXing_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_a_bits_corrupt = dmiXing_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign dmInner_auto_dmi_in_d_ready = dmiXing_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign dmInner_io_dmactive = dmactive_synced_dmactive_synced_dmactiveSync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign dmInner_io_innerCtrl_valid = dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_valid; // @[Debug.scala 1787:35]
+  assign dmInner_io_innerCtrl_bits_resumereq = dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_resumereq; // @[Debug.scala 1787:35]
+  assign dmInner_io_innerCtrl_bits_hartsel = dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_hartsel; // @[Debug.scala 1787:35]
+  assign dmInner_io_innerCtrl_bits_ackhavereset = dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_ackhavereset; // @[Debug.scala 1787:35]
+  assign dmInner_io_innerCtrl_bits_hrmask_0 = dmactive_synced_dmInner_io_innerCtrl_sink_io_deq_bits_hrmask_0; // @[Debug.scala 1787:35]
+  assign dmiXing_clock = io_debug_clock; // @[Debug.scala 1777:16 LazyModule.scala 350:31]
+  assign dmiXing_auto_in_a_mem_0_opcode = auto_dmiXing_in_a_mem_0_opcode; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_in_a_mem_0_address = auto_dmiXing_in_a_mem_0_address; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_in_a_mem_0_data = auto_dmiXing_in_a_mem_0_data; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_in_a_widx = auto_dmiXing_in_a_widx; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_in_a_safe_widx_valid = auto_dmiXing_in_a_safe_widx_valid; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_in_a_safe_source_reset_n = auto_dmiXing_in_a_safe_source_reset_n; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_in_d_ridx = auto_dmiXing_in_d_ridx; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_in_d_safe_ridx_valid = auto_dmiXing_in_d_safe_ridx_valid; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_in_d_safe_sink_reset_n = auto_dmiXing_in_d_safe_sink_reset_n; // @[LazyModule.scala 309:16]
+  assign dmiXing_auto_out_a_ready = dmInner_auto_dmi_in_a_ready; // @[LazyModule.scala 296:16]
+  assign dmiXing_auto_out_d_valid = dmInner_auto_dmi_in_d_valid; // @[LazyModule.scala 296:16]
+  assign dmiXing_auto_out_d_bits_opcode = dmInner_auto_dmi_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign dmiXing_auto_out_d_bits_size = dmInner_auto_dmi_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign dmiXing_auto_out_d_bits_source = dmInner_auto_dmi_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign dmiXing_auto_out_d_bits_data = dmInner_auto_dmi_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign dmactive_synced_dmactive_synced_dmactiveSync_clock = io_debug_clock; // @[Debug.scala 1777:16 LazyModule.scala 350:31]
+  assign dmactive_synced_dmactive_synced_dmactiveSync_reset = 1'h0; // @[Debug.scala 1778:16 LazyModule.scala 352:31]
+  assign dmactive_synced_dmactive_synced_dmactiveSync_io_d = io_dmactive; // @[ShiftReg.scala 47:16]
+  assign dmactive_synced_dmInner_io_innerCtrl_sink_clock = io_debug_clock; // @[Debug.scala 1777:16 LazyModule.scala 350:31]
+  assign dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_resumereq = io_innerCtrl_mem_0_resumereq; // @[AsyncQueue.scala 208:19]
+  assign dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_ackhavereset = io_innerCtrl_mem_0_ackhavereset; // @[AsyncQueue.scala 208:19]
+  assign dmactive_synced_dmInner_io_innerCtrl_sink_io_async_mem_0_hrmask_0 = io_innerCtrl_mem_0_hrmask_0; // @[AsyncQueue.scala 208:19]
+  assign dmactive_synced_dmInner_io_innerCtrl_sink_io_async_widx = io_innerCtrl_widx; // @[AsyncQueue.scala 208:19]
+  assign dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_widx_valid = io_innerCtrl_safe_widx_valid; // @[AsyncQueue.scala 208:19]
+  assign dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_source_reset_n = io_innerCtrl_safe_source_reset_n; // @[AsyncQueue.scala 208:19]
+endmodule
+module TLDebugModule(
+  output        auto_dmInner_dmInner_tl_in_a_ready,
+  input         auto_dmInner_dmInner_tl_in_a_valid,
+  input  [2:0]  auto_dmInner_dmInner_tl_in_a_bits_opcode,
+  input  [2:0]  auto_dmInner_dmInner_tl_in_a_bits_param,
+  input  [1:0]  auto_dmInner_dmInner_tl_in_a_bits_size,
+  input  [6:0]  auto_dmInner_dmInner_tl_in_a_bits_source,
+  input  [11:0] auto_dmInner_dmInner_tl_in_a_bits_address,
+  input  [3:0]  auto_dmInner_dmInner_tl_in_a_bits_mask,
+  input  [31:0] auto_dmInner_dmInner_tl_in_a_bits_data,
+  input         auto_dmInner_dmInner_tl_in_a_bits_corrupt,
+  input         auto_dmInner_dmInner_tl_in_d_ready,
+  output        auto_dmInner_dmInner_tl_in_d_valid,
+  output [2:0]  auto_dmInner_dmInner_tl_in_d_bits_opcode,
+  output [1:0]  auto_dmInner_dmInner_tl_in_d_bits_size,
+  output [6:0]  auto_dmInner_dmInner_tl_in_d_bits_source,
+  output [31:0] auto_dmInner_dmInner_tl_in_d_bits_data,
+  output        auto_dmOuter_intsource_out_sync_0,
+  input         io_debug_clock,
+  output        io_ctrl_ndreset,
+  output        io_dmi_dmi_req_ready,
+  input         io_dmi_dmi_req_valid,
+  input  [6:0]  io_dmi_dmi_req_bits_addr,
+  input  [31:0] io_dmi_dmi_req_bits_data,
+  input  [1:0]  io_dmi_dmi_req_bits_op,
+  input         io_dmi_dmi_resp_ready,
+  output        io_dmi_dmi_resp_valid,
+  output [31:0] io_dmi_dmi_resp_bits_data,
+  output [1:0]  io_dmi_dmi_resp_bits_resp,
+  input         io_dmi_dmiClock,
+  input         io_dmi_dmiReset
+);
+  wire [2:0] dmOuter_auto_asource_out_a_mem_0_opcode; // @[Debug.scala 1819:53]
+  wire [8:0] dmOuter_auto_asource_out_a_mem_0_address; // @[Debug.scala 1819:53]
+  wire [31:0] dmOuter_auto_asource_out_a_mem_0_data; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_a_ridx; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_a_widx; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_a_safe_ridx_valid; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_a_safe_widx_valid; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_a_safe_source_reset_n; // @[Debug.scala 1819:53]
+  wire [2:0] dmOuter_auto_asource_out_d_mem_0_opcode; // @[Debug.scala 1819:53]
+  wire [1:0] dmOuter_auto_asource_out_d_mem_0_size; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_d_mem_0_source; // @[Debug.scala 1819:53]
+  wire [31:0] dmOuter_auto_asource_out_d_mem_0_data; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_d_ridx; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_d_widx; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_d_safe_ridx_valid; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_d_safe_widx_valid; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_asource_out_d_safe_sink_reset_n; // @[Debug.scala 1819:53]
+  wire  dmOuter_auto_intsource_out_sync_0; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_dmi_clock; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_dmi_reset; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_dmi_req_ready; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_dmi_req_valid; // @[Debug.scala 1819:53]
+  wire [6:0] dmOuter_io_dmi_req_bits_addr; // @[Debug.scala 1819:53]
+  wire [31:0] dmOuter_io_dmi_req_bits_data; // @[Debug.scala 1819:53]
+  wire [1:0] dmOuter_io_dmi_req_bits_op; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_dmi_resp_ready; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_dmi_resp_valid; // @[Debug.scala 1819:53]
+  wire [31:0] dmOuter_io_dmi_resp_bits_data; // @[Debug.scala 1819:53]
+  wire [1:0] dmOuter_io_dmi_resp_bits_resp; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_ctrl_ndreset; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_ctrl_dmactive; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_innerCtrl_mem_0_resumereq; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_innerCtrl_mem_0_ackhavereset; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_innerCtrl_mem_0_hrmask_0; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_innerCtrl_ridx; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_innerCtrl_widx; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_innerCtrl_safe_ridx_valid; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_innerCtrl_safe_widx_valid; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_innerCtrl_safe_source_reset_n; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_hgDebugInt_0; // @[Debug.scala 1819:53]
+  wire [2:0] dmInner_auto_dmiXing_in_a_mem_0_opcode; // @[Debug.scala 1820:53]
+  wire [8:0] dmInner_auto_dmiXing_in_a_mem_0_address; // @[Debug.scala 1820:53]
+  wire [31:0] dmInner_auto_dmiXing_in_a_mem_0_data; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_a_ridx; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_a_widx; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_a_safe_ridx_valid; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_a_safe_widx_valid; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_a_safe_source_reset_n; // @[Debug.scala 1820:53]
+  wire [2:0] dmInner_auto_dmiXing_in_d_mem_0_opcode; // @[Debug.scala 1820:53]
+  wire [1:0] dmInner_auto_dmiXing_in_d_mem_0_size; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_d_mem_0_source; // @[Debug.scala 1820:53]
+  wire [31:0] dmInner_auto_dmiXing_in_d_mem_0_data; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_d_ridx; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_d_widx; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_d_safe_ridx_valid; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_d_safe_widx_valid; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmiXing_in_d_safe_sink_reset_n; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmInner_tl_in_a_ready; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmInner_tl_in_a_valid; // @[Debug.scala 1820:53]
+  wire [2:0] dmInner_auto_dmInner_tl_in_a_bits_opcode; // @[Debug.scala 1820:53]
+  wire [2:0] dmInner_auto_dmInner_tl_in_a_bits_param; // @[Debug.scala 1820:53]
+  wire [1:0] dmInner_auto_dmInner_tl_in_a_bits_size; // @[Debug.scala 1820:53]
+  wire [6:0] dmInner_auto_dmInner_tl_in_a_bits_source; // @[Debug.scala 1820:53]
+  wire [11:0] dmInner_auto_dmInner_tl_in_a_bits_address; // @[Debug.scala 1820:53]
+  wire [3:0] dmInner_auto_dmInner_tl_in_a_bits_mask; // @[Debug.scala 1820:53]
+  wire [31:0] dmInner_auto_dmInner_tl_in_a_bits_data; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmInner_tl_in_a_bits_corrupt; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmInner_tl_in_d_ready; // @[Debug.scala 1820:53]
+  wire  dmInner_auto_dmInner_tl_in_d_valid; // @[Debug.scala 1820:53]
+  wire [2:0] dmInner_auto_dmInner_tl_in_d_bits_opcode; // @[Debug.scala 1820:53]
+  wire [1:0] dmInner_auto_dmInner_tl_in_d_bits_size; // @[Debug.scala 1820:53]
+  wire [6:0] dmInner_auto_dmInner_tl_in_d_bits_source; // @[Debug.scala 1820:53]
+  wire [31:0] dmInner_auto_dmInner_tl_in_d_bits_data; // @[Debug.scala 1820:53]
+  wire  dmInner_io_debug_clock; // @[Debug.scala 1820:53]
+  wire  dmInner_io_dmactive; // @[Debug.scala 1820:53]
+  wire  dmInner_io_innerCtrl_mem_0_resumereq; // @[Debug.scala 1820:53]
+  wire  dmInner_io_innerCtrl_mem_0_ackhavereset; // @[Debug.scala 1820:53]
+  wire  dmInner_io_innerCtrl_mem_0_hrmask_0; // @[Debug.scala 1820:53]
+  wire  dmInner_io_innerCtrl_ridx; // @[Debug.scala 1820:53]
+  wire  dmInner_io_innerCtrl_widx; // @[Debug.scala 1820:53]
+  wire  dmInner_io_innerCtrl_safe_ridx_valid; // @[Debug.scala 1820:53]
+  wire  dmInner_io_innerCtrl_safe_widx_valid; // @[Debug.scala 1820:53]
+  wire  dmInner_io_innerCtrl_safe_source_reset_n; // @[Debug.scala 1820:53]
+  wire  dmInner_io_hgDebugInt_0; // @[Debug.scala 1820:53]
+  TLDebugModuleOuterAsync dmOuter ( // @[Debug.scala 1819:53]
+    .auto_asource_out_a_mem_0_opcode(dmOuter_auto_asource_out_a_mem_0_opcode),
+    .auto_asource_out_a_mem_0_address(dmOuter_auto_asource_out_a_mem_0_address),
+    .auto_asource_out_a_mem_0_data(dmOuter_auto_asource_out_a_mem_0_data),
+    .auto_asource_out_a_ridx(dmOuter_auto_asource_out_a_ridx),
+    .auto_asource_out_a_widx(dmOuter_auto_asource_out_a_widx),
+    .auto_asource_out_a_safe_ridx_valid(dmOuter_auto_asource_out_a_safe_ridx_valid),
+    .auto_asource_out_a_safe_widx_valid(dmOuter_auto_asource_out_a_safe_widx_valid),
+    .auto_asource_out_a_safe_source_reset_n(dmOuter_auto_asource_out_a_safe_source_reset_n),
+    .auto_asource_out_d_mem_0_opcode(dmOuter_auto_asource_out_d_mem_0_opcode),
+    .auto_asource_out_d_mem_0_size(dmOuter_auto_asource_out_d_mem_0_size),
+    .auto_asource_out_d_mem_0_source(dmOuter_auto_asource_out_d_mem_0_source),
+    .auto_asource_out_d_mem_0_data(dmOuter_auto_asource_out_d_mem_0_data),
+    .auto_asource_out_d_ridx(dmOuter_auto_asource_out_d_ridx),
+    .auto_asource_out_d_widx(dmOuter_auto_asource_out_d_widx),
+    .auto_asource_out_d_safe_ridx_valid(dmOuter_auto_asource_out_d_safe_ridx_valid),
+    .auto_asource_out_d_safe_widx_valid(dmOuter_auto_asource_out_d_safe_widx_valid),
+    .auto_asource_out_d_safe_sink_reset_n(dmOuter_auto_asource_out_d_safe_sink_reset_n),
+    .auto_intsource_out_sync_0(dmOuter_auto_intsource_out_sync_0),
+    .io_dmi_clock(dmOuter_io_dmi_clock),
+    .io_dmi_reset(dmOuter_io_dmi_reset),
+    .io_dmi_req_ready(dmOuter_io_dmi_req_ready),
+    .io_dmi_req_valid(dmOuter_io_dmi_req_valid),
+    .io_dmi_req_bits_addr(dmOuter_io_dmi_req_bits_addr),
+    .io_dmi_req_bits_data(dmOuter_io_dmi_req_bits_data),
+    .io_dmi_req_bits_op(dmOuter_io_dmi_req_bits_op),
+    .io_dmi_resp_ready(dmOuter_io_dmi_resp_ready),
+    .io_dmi_resp_valid(dmOuter_io_dmi_resp_valid),
+    .io_dmi_resp_bits_data(dmOuter_io_dmi_resp_bits_data),
+    .io_dmi_resp_bits_resp(dmOuter_io_dmi_resp_bits_resp),
+    .io_ctrl_ndreset(dmOuter_io_ctrl_ndreset),
+    .io_ctrl_dmactive(dmOuter_io_ctrl_dmactive),
+    .io_innerCtrl_mem_0_resumereq(dmOuter_io_innerCtrl_mem_0_resumereq),
+    .io_innerCtrl_mem_0_ackhavereset(dmOuter_io_innerCtrl_mem_0_ackhavereset),
+    .io_innerCtrl_mem_0_hrmask_0(dmOuter_io_innerCtrl_mem_0_hrmask_0),
+    .io_innerCtrl_ridx(dmOuter_io_innerCtrl_ridx),
+    .io_innerCtrl_widx(dmOuter_io_innerCtrl_widx),
+    .io_innerCtrl_safe_ridx_valid(dmOuter_io_innerCtrl_safe_ridx_valid),
+    .io_innerCtrl_safe_widx_valid(dmOuter_io_innerCtrl_safe_widx_valid),
+    .io_innerCtrl_safe_source_reset_n(dmOuter_io_innerCtrl_safe_source_reset_n),
+    .io_hgDebugInt_0(dmOuter_io_hgDebugInt_0)
+  );
+  TLDebugModuleInnerAsync dmInner ( // @[Debug.scala 1820:53]
+    .auto_dmiXing_in_a_mem_0_opcode(dmInner_auto_dmiXing_in_a_mem_0_opcode),
+    .auto_dmiXing_in_a_mem_0_address(dmInner_auto_dmiXing_in_a_mem_0_address),
+    .auto_dmiXing_in_a_mem_0_data(dmInner_auto_dmiXing_in_a_mem_0_data),
+    .auto_dmiXing_in_a_ridx(dmInner_auto_dmiXing_in_a_ridx),
+    .auto_dmiXing_in_a_widx(dmInner_auto_dmiXing_in_a_widx),
+    .auto_dmiXing_in_a_safe_ridx_valid(dmInner_auto_dmiXing_in_a_safe_ridx_valid),
+    .auto_dmiXing_in_a_safe_widx_valid(dmInner_auto_dmiXing_in_a_safe_widx_valid),
+    .auto_dmiXing_in_a_safe_source_reset_n(dmInner_auto_dmiXing_in_a_safe_source_reset_n),
+    .auto_dmiXing_in_d_mem_0_opcode(dmInner_auto_dmiXing_in_d_mem_0_opcode),
+    .auto_dmiXing_in_d_mem_0_size(dmInner_auto_dmiXing_in_d_mem_0_size),
+    .auto_dmiXing_in_d_mem_0_source(dmInner_auto_dmiXing_in_d_mem_0_source),
+    .auto_dmiXing_in_d_mem_0_data(dmInner_auto_dmiXing_in_d_mem_0_data),
+    .auto_dmiXing_in_d_ridx(dmInner_auto_dmiXing_in_d_ridx),
+    .auto_dmiXing_in_d_widx(dmInner_auto_dmiXing_in_d_widx),
+    .auto_dmiXing_in_d_safe_ridx_valid(dmInner_auto_dmiXing_in_d_safe_ridx_valid),
+    .auto_dmiXing_in_d_safe_widx_valid(dmInner_auto_dmiXing_in_d_safe_widx_valid),
+    .auto_dmiXing_in_d_safe_sink_reset_n(dmInner_auto_dmiXing_in_d_safe_sink_reset_n),
+    .auto_dmInner_tl_in_a_ready(dmInner_auto_dmInner_tl_in_a_ready),
+    .auto_dmInner_tl_in_a_valid(dmInner_auto_dmInner_tl_in_a_valid),
+    .auto_dmInner_tl_in_a_bits_opcode(dmInner_auto_dmInner_tl_in_a_bits_opcode),
+    .auto_dmInner_tl_in_a_bits_param(dmInner_auto_dmInner_tl_in_a_bits_param),
+    .auto_dmInner_tl_in_a_bits_size(dmInner_auto_dmInner_tl_in_a_bits_size),
+    .auto_dmInner_tl_in_a_bits_source(dmInner_auto_dmInner_tl_in_a_bits_source),
+    .auto_dmInner_tl_in_a_bits_address(dmInner_auto_dmInner_tl_in_a_bits_address),
+    .auto_dmInner_tl_in_a_bits_mask(dmInner_auto_dmInner_tl_in_a_bits_mask),
+    .auto_dmInner_tl_in_a_bits_data(dmInner_auto_dmInner_tl_in_a_bits_data),
+    .auto_dmInner_tl_in_a_bits_corrupt(dmInner_auto_dmInner_tl_in_a_bits_corrupt),
+    .auto_dmInner_tl_in_d_ready(dmInner_auto_dmInner_tl_in_d_ready),
+    .auto_dmInner_tl_in_d_valid(dmInner_auto_dmInner_tl_in_d_valid),
+    .auto_dmInner_tl_in_d_bits_opcode(dmInner_auto_dmInner_tl_in_d_bits_opcode),
+    .auto_dmInner_tl_in_d_bits_size(dmInner_auto_dmInner_tl_in_d_bits_size),
+    .auto_dmInner_tl_in_d_bits_source(dmInner_auto_dmInner_tl_in_d_bits_source),
+    .auto_dmInner_tl_in_d_bits_data(dmInner_auto_dmInner_tl_in_d_bits_data),
+    .io_debug_clock(dmInner_io_debug_clock),
+    .io_dmactive(dmInner_io_dmactive),
+    .io_innerCtrl_mem_0_resumereq(dmInner_io_innerCtrl_mem_0_resumereq),
+    .io_innerCtrl_mem_0_ackhavereset(dmInner_io_innerCtrl_mem_0_ackhavereset),
+    .io_innerCtrl_mem_0_hrmask_0(dmInner_io_innerCtrl_mem_0_hrmask_0),
+    .io_innerCtrl_ridx(dmInner_io_innerCtrl_ridx),
+    .io_innerCtrl_widx(dmInner_io_innerCtrl_widx),
+    .io_innerCtrl_safe_ridx_valid(dmInner_io_innerCtrl_safe_ridx_valid),
+    .io_innerCtrl_safe_widx_valid(dmInner_io_innerCtrl_safe_widx_valid),
+    .io_innerCtrl_safe_source_reset_n(dmInner_io_innerCtrl_safe_source_reset_n),
+    .io_hgDebugInt_0(dmInner_io_hgDebugInt_0)
+  );
+  assign auto_dmInner_dmInner_tl_in_a_ready = dmInner_auto_dmInner_tl_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_dmInner_tl_in_d_valid = dmInner_auto_dmInner_tl_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_dmInner_tl_in_d_bits_opcode = dmInner_auto_dmInner_tl_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_dmInner_tl_in_d_bits_size = dmInner_auto_dmInner_tl_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_dmInner_tl_in_d_bits_source = dmInner_auto_dmInner_tl_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_dmInner_dmInner_tl_in_d_bits_data = dmInner_auto_dmInner_tl_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_dmOuter_intsource_out_sync_0 = dmOuter_auto_intsource_out_sync_0; // @[LazyModule.scala 311:12]
+  assign io_ctrl_ndreset = dmOuter_io_ctrl_ndreset; // @[Debug.scala 1879:13]
+  assign io_dmi_dmi_req_ready = dmOuter_io_dmi_req_ready; // @[Debug.scala 1857:18]
+  assign io_dmi_dmi_resp_valid = dmOuter_io_dmi_resp_valid; // @[Debug.scala 1857:18]
+  assign io_dmi_dmi_resp_bits_data = dmOuter_io_dmi_resp_bits_data; // @[Debug.scala 1857:18]
+  assign io_dmi_dmi_resp_bits_resp = dmOuter_io_dmi_resp_bits_resp; // @[Debug.scala 1857:18]
+  assign dmOuter_auto_asource_out_a_ridx = dmInner_auto_dmiXing_in_a_ridx; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_asource_out_a_safe_ridx_valid = dmInner_auto_dmiXing_in_a_safe_ridx_valid; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_asource_out_d_mem_0_opcode = dmInner_auto_dmiXing_in_d_mem_0_opcode; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_asource_out_d_mem_0_size = dmInner_auto_dmiXing_in_d_mem_0_size; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_asource_out_d_mem_0_source = dmInner_auto_dmiXing_in_d_mem_0_source; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_asource_out_d_mem_0_data = dmInner_auto_dmiXing_in_d_mem_0_data; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_asource_out_d_widx = dmInner_auto_dmiXing_in_d_widx; // @[LazyModule.scala 298:16]
+  assign dmOuter_auto_asource_out_d_safe_widx_valid = dmInner_auto_dmiXing_in_d_safe_widx_valid; // @[LazyModule.scala 298:16]
+  assign dmOuter_io_dmi_clock = io_dmi_dmiClock; // @[Debug.scala 1859:35]
+  assign dmOuter_io_dmi_reset = io_dmi_dmiReset; // @[Debug.scala 1858:35]
+  assign dmOuter_io_dmi_req_valid = io_dmi_dmi_req_valid; // @[Debug.scala 1857:18]
+  assign dmOuter_io_dmi_req_bits_addr = io_dmi_dmi_req_bits_addr; // @[Debug.scala 1857:18]
+  assign dmOuter_io_dmi_req_bits_data = io_dmi_dmi_req_bits_data; // @[Debug.scala 1857:18]
+  assign dmOuter_io_dmi_req_bits_op = io_dmi_dmi_req_bits_op; // @[Debug.scala 1857:18]
+  assign dmOuter_io_dmi_resp_ready = io_dmi_dmi_resp_ready; // @[Debug.scala 1857:18]
+  assign dmOuter_io_innerCtrl_ridx = dmInner_io_innerCtrl_ridx; // @[Debug.scala 1874:36]
+  assign dmOuter_io_innerCtrl_safe_ridx_valid = dmInner_io_innerCtrl_safe_ridx_valid; // @[Debug.scala 1874:36]
+  assign dmOuter_io_hgDebugInt_0 = dmInner_io_hgDebugInt_0; // @[Debug.scala 1877:36]
+  assign dmInner_auto_dmiXing_in_a_mem_0_opcode = dmOuter_auto_asource_out_a_mem_0_opcode; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmiXing_in_a_mem_0_address = dmOuter_auto_asource_out_a_mem_0_address; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmiXing_in_a_mem_0_data = dmOuter_auto_asource_out_a_mem_0_data; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmiXing_in_a_widx = dmOuter_auto_asource_out_a_widx; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmiXing_in_a_safe_widx_valid = dmOuter_auto_asource_out_a_safe_widx_valid; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmiXing_in_a_safe_source_reset_n = dmOuter_auto_asource_out_a_safe_source_reset_n; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmiXing_in_d_ridx = dmOuter_auto_asource_out_d_ridx; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmiXing_in_d_safe_ridx_valid = dmOuter_auto_asource_out_d_safe_ridx_valid; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmiXing_in_d_safe_sink_reset_n = dmOuter_auto_asource_out_d_safe_sink_reset_n; // @[LazyModule.scala 298:16]
+  assign dmInner_auto_dmInner_tl_in_a_valid = auto_dmInner_dmInner_tl_in_a_valid; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_a_bits_opcode = auto_dmInner_dmInner_tl_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_a_bits_param = auto_dmInner_dmInner_tl_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_a_bits_size = auto_dmInner_dmInner_tl_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_a_bits_source = auto_dmInner_dmInner_tl_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_a_bits_address = auto_dmInner_dmInner_tl_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_a_bits_mask = auto_dmInner_dmInner_tl_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_a_bits_data = auto_dmInner_dmInner_tl_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_a_bits_corrupt = auto_dmInner_dmInner_tl_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign dmInner_auto_dmInner_tl_in_d_ready = auto_dmInner_dmInner_tl_in_d_ready; // @[LazyModule.scala 309:16]
+  assign dmInner_io_debug_clock = io_debug_clock; // @[Debug.scala 1870:35]
+  assign dmInner_io_dmactive = dmOuter_io_ctrl_dmactive; // @[Debug.scala 1875:36]
+  assign dmInner_io_innerCtrl_mem_0_resumereq = dmOuter_io_innerCtrl_mem_0_resumereq; // @[Debug.scala 1874:36]
+  assign dmInner_io_innerCtrl_mem_0_ackhavereset = dmOuter_io_innerCtrl_mem_0_ackhavereset; // @[Debug.scala 1874:36]
+  assign dmInner_io_innerCtrl_mem_0_hrmask_0 = dmOuter_io_innerCtrl_mem_0_hrmask_0; // @[Debug.scala 1874:36]
+  assign dmInner_io_innerCtrl_widx = dmOuter_io_innerCtrl_widx; // @[Debug.scala 1874:36]
+  assign dmInner_io_innerCtrl_safe_widx_valid = dmOuter_io_innerCtrl_safe_widx_valid; // @[Debug.scala 1874:36]
+  assign dmInner_io_innerCtrl_safe_source_reset_n = dmOuter_io_innerCtrl_safe_source_reset_n; // @[Debug.scala 1874:36]
+endmodule
+module BundleBridgeNexus_15(
+  output  auto_out
+);
+  wire  outputs_0 = 1'h0; // @[HasTiles.scala 162:32]
+  assign auto_out = outputs_0; // @[Nodes.scala 1207:84 BundleBridge.scala 151:67]
+endmodule
+module AsyncResetRegVec_w2_i0(
+  input        clock,
+  input        reset,
+  input  [1:0] io_d,
+  output [1:0] io_q
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [1:0] reg_; // @[AsyncResetReg.scala 64:50]
+  assign io_q = reg_; // @[AsyncResetReg.scala 68:8]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncResetReg.scala 65:16]
+      reg_ <= 2'h0; // @[AsyncResetReg.scala 66:9]
+    end else begin
+      reg_ <= io_d; // @[AsyncResetReg.scala 64:50]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  reg_ = _RAND_0[1:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    reg_ = 2'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module IntSyncCrossingSource_5(
+  input   clock,
+  input   reset,
+  input   auto_in_0,
+  input   auto_in_1,
+  output  auto_out_sync_0,
+  output  auto_out_sync_1
+);
+  wire  reg__clock; // @[AsyncResetReg.scala 89:21]
+  wire  reg__reset; // @[AsyncResetReg.scala 89:21]
+  wire [1:0] reg__io_d; // @[AsyncResetReg.scala 89:21]
+  wire [1:0] reg__io_q; // @[AsyncResetReg.scala 89:21]
+  AsyncResetRegVec_w2_i0 reg_ ( // @[AsyncResetReg.scala 89:21]
+    .clock(reg__clock),
+    .reset(reg__reset),
+    .io_d(reg__io_d),
+    .io_q(reg__io_q)
+  );
+  assign auto_out_sync_0 = reg__io_q[0]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_1 = reg__io_q[1]; // @[Crossing.scala 41:52]
+  assign reg__clock = clock;
+  assign reg__reset = reset;
+  assign reg__io_d = {auto_in_1,auto_in_0}; // @[Cat.scala 31:58]
+endmodule
+module TLMonitor_55(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10000000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [127:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [127:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 671:90 672:22]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set_wo_ready = _GEN_15[95:0];
+  wire [95:0] d_clr_wo_ready = _GEN_21[95:0];
+  wire  _T_661 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_670 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_696 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_704 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_714 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_739 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_661 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_2 & ~_T_661) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 1 (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_670 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_670) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_704[0] & (_T_696 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_696 & _T_2 & ~_T_704[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_714 & (_T_696 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_696 & _T_2 & ~_T_714) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_739 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_739) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at MockAONWrapper.scala:48:23)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module RTC(
+  input         clock,
+  input         reset,
+  input         scale_io_regs_cfg_write__countAlways,
+  input  [3:0]  scale_io_regs_cfg_write__scale,
+  output        scale_io_regs_cfg_read_ip_0,
+  output        scale_io_regs_cfg_read_countAlways,
+  output [3:0]  scale_io_regs_cfg_read_scale,
+  input         scale_io_regs_cfg_write_countAlways,
+  input         scale_io_regs_cfg_write_scale,
+  input         scale_io_regs_countLo_write_valid,
+  input  [31:0] scale_io_regs_countLo_write_bits,
+  output [31:0] scale_io_regs_countLo_read,
+  input         scale_io_regs_countHi_write_valid,
+  input  [31:0] scale_io_regs_countHi_write_bits,
+  output [31:0] scale_io_regs_countHi_read,
+  output [31:0] scale_io_regs_s_read,
+  input         scale_io_regs_cmp_0_write_valid,
+  input  [31:0] scale_io_regs_cmp_0_write_bits,
+  output [31:0] scale_io_regs_cmp_0_read,
+  output        scale_io_ip_0
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [63:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  wire  countAlways_reg_clock; // @[AsyncResetReg.scala 89:21]
+  wire  countAlways_reg_reset; // @[AsyncResetReg.scala 89:21]
+  wire  countAlways_reg_io_d; // @[AsyncResetReg.scala 89:21]
+  wire  countAlways_reg_io_q; // @[AsyncResetReg.scala 89:21]
+  wire  countAlways_reg_io_en; // @[AsyncResetReg.scala 89:21]
+  reg [3:0] scale; // @[Reg.scala 16:16]
+  reg [31:0] cmp_0; // @[Reg.scala 16:16]
+  wire  countAlways = countAlways_reg_io_q; // @[RTC.scala 22:123]
+  reg [5:0] small_; // @[Counters.scala 45:37]
+  wire [5:0] _GEN_10 = {{5'd0}, countAlways}; // @[Counters.scala 46:33]
+  wire [6:0] nextSmall = small_ + _GEN_10; // @[Counters.scala 46:33]
+  reg [41:0] large_; // @[Counters.scala 50:27]
+  wire [41:0] _large_r_T_1 = large_ + 42'h1; // @[Counters.scala 51:55]
+  wire [41:0] _GEN_3 = nextSmall[6] ? _large_r_T_1 : large_; // @[Counters.scala 50:27 51:{46,50}]
+  wire [47:0] value = {large_,small_}; // @[Cat.scala 31:58]
+  wire [47:0] _s_T = value >> scale; // @[Timer.scala 209:28]
+  wire [31:0] s = _s_T[31:0]; // @[Timer.scala 209:37]
+  wire [47:0] _T_3 = {value[47:32],scale_io_regs_countLo_write_bits}; // @[Cat.scala 31:58]
+  wire [47:0] _GEN_6 = scale_io_regs_countLo_write_valid ? _T_3 : {{41'd0}, nextSmall}; // @[Timer.scala 214:50 Counters.scala 65:11]
+  wire [41:0] _GEN_7 = scale_io_regs_countLo_write_valid ? _T_3[47:6] : _GEN_3; // @[Timer.scala 214:50 Counters.scala 66:23]
+  wire [63:0] _T_6 = {scale_io_regs_countHi_write_bits,value[31:0]}; // @[Cat.scala 31:58]
+  wire [63:0] _GEN_8 = scale_io_regs_countHi_write_valid ? _T_6 : {{16'd0}, _GEN_6}; // @[Timer.scala 215:77 Counters.scala 65:11]
+  wire [57:0] _GEN_9 = scale_io_regs_countHi_write_valid ? _T_6[63:6] : {{16'd0}, _GEN_7}; // @[Timer.scala 215:77 Counters.scala 66:23]
+  reg  ip_0; // @[RTC.scala 20:43]
+  AsyncResetRegVec_w1_i0 countAlways_reg ( // @[AsyncResetReg.scala 89:21]
+    .clock(countAlways_reg_clock),
+    .reset(countAlways_reg_reset),
+    .io_d(countAlways_reg_io_d),
+    .io_q(countAlways_reg_io_q),
+    .io_en(countAlways_reg_io_en)
+  );
+  assign scale_io_regs_cfg_read_ip_0 = ip_0; // @[Timer.scala 218:23]
+  assign scale_io_regs_cfg_read_countAlways = countAlways_reg_io_q; // @[RTC.scala 22:123]
+  assign scale_io_regs_cfg_read_scale = scale; // @[Timer.scala 227:26]
+  assign scale_io_regs_countLo_read = value[31:0]; // @[Timer.scala 229:24]
+  assign scale_io_regs_countHi_read = {{16'd0}, value[47:32]}; // @[Timer.scala 230:24]
+  assign scale_io_regs_s_read = _s_T[31:0]; // @[Timer.scala 209:37]
+  assign scale_io_regs_cmp_0_read = cmp_0; // @[Timer.scala 232:53]
+  assign scale_io_ip_0 = ip_0; // @[Timer.scala 235:9]
+  assign countAlways_reg_clock = clock;
+  assign countAlways_reg_reset = reset;
+  assign countAlways_reg_io_d = scale_io_regs_cfg_write__countAlways; // @[AsyncResetReg.scala 91:14]
+  assign countAlways_reg_io_en = scale_io_regs_cfg_write_countAlways; // @[RTC.scala 22:111]
+  always @(posedge clock) begin
+    if (scale_io_regs_cfg_write_scale) begin // @[Reg.scala 17:18]
+      scale <= scale_io_regs_cfg_write__scale; // @[Reg.scala 17:22]
+    end
+    if (scale_io_regs_cmp_0_write_valid) begin // @[Reg.scala 17:18]
+      cmp_0 <= scale_io_regs_cmp_0_write_bits; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[Counters.scala 45:37]
+      small_ <= 6'h0; // @[Counters.scala 45:37]
+    end else begin
+      small_ <= _GEN_8[5:0];
+    end
+    if (reset) begin // @[Counters.scala 50:27]
+      large_ <= 42'h0; // @[Counters.scala 50:27]
+    end else begin
+      large_ <= _GEN_9[41:0];
+    end
+    ip_0 <= s >= cmp_0; // @[Timer.scala 211:90]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  scale = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  cmp_0 = _RAND_1[31:0];
+  _RAND_2 = {1{`RANDOM}};
+  small_ = _RAND_2[5:0];
+  _RAND_3 = {2{`RANDOM}};
+  large_ = _RAND_3[41:0];
+  _RAND_4 = {1{`RANDOM}};
+  ip_0 = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module PMUCore(
+  input         clock,
+  input         reset,
+  input         io_wakeup_rtc,
+  output        io_control_valid,
+  output        io_control_bits_hfclkrst,
+  output        io_control_bits_corerst,
+  output        io_control_bits_reserved1,
+  output        io_control_bits_vddpaden,
+  output        io_control_bits_reserved0,
+  input  [1:0]  io_resetCause,
+  input         io_regs_ie_write_valid,
+  input  [3:0]  io_regs_ie_write_bits,
+  output [3:0]  io_regs_ie_read,
+  input         io_regs_cause_write_valid,
+  output [31:0] io_regs_cause_read,
+  input         io_regs_sleep_write_valid,
+  input         io_regs_key_write_valid,
+  input  [31:0] io_regs_key_write_bits,
+  output [31:0] io_regs_key_read,
+  input         io_regs_wakeupProgram_0_write_valid,
+  input  [31:0] io_regs_wakeupProgram_0_write_bits,
+  output [31:0] io_regs_wakeupProgram_0_read,
+  input         io_regs_wakeupProgram_1_write_valid,
+  input  [31:0] io_regs_wakeupProgram_1_write_bits,
+  output [31:0] io_regs_wakeupProgram_1_read,
+  input         io_regs_wakeupProgram_2_write_valid,
+  input  [31:0] io_regs_wakeupProgram_2_write_bits,
+  output [31:0] io_regs_wakeupProgram_2_read,
+  input         io_regs_wakeupProgram_3_write_valid,
+  input  [31:0] io_regs_wakeupProgram_3_write_bits,
+  output [31:0] io_regs_wakeupProgram_3_read,
+  input         io_regs_wakeupProgram_4_write_valid,
+  input  [31:0] io_regs_wakeupProgram_4_write_bits,
+  output [31:0] io_regs_wakeupProgram_4_read,
+  input         io_regs_wakeupProgram_5_write_valid,
+  input  [31:0] io_regs_wakeupProgram_5_write_bits,
+  output [31:0] io_regs_wakeupProgram_5_read,
+  input         io_regs_wakeupProgram_6_write_valid,
+  input  [31:0] io_regs_wakeupProgram_6_write_bits,
+  output [31:0] io_regs_wakeupProgram_6_read,
+  input         io_regs_wakeupProgram_7_write_valid,
+  input  [31:0] io_regs_wakeupProgram_7_write_bits,
+  output [31:0] io_regs_wakeupProgram_7_read,
+  input         io_regs_sleepProgram_0_write_valid,
+  input  [31:0] io_regs_sleepProgram_0_write_bits,
+  output [31:0] io_regs_sleepProgram_0_read,
+  input         io_regs_sleepProgram_1_write_valid,
+  input  [31:0] io_regs_sleepProgram_1_write_bits,
+  output [31:0] io_regs_sleepProgram_1_read,
+  input         io_regs_sleepProgram_2_write_valid,
+  input  [31:0] io_regs_sleepProgram_2_write_bits,
+  output [31:0] io_regs_sleepProgram_2_read,
+  input         io_regs_sleepProgram_3_write_valid,
+  input  [31:0] io_regs_sleepProgram_3_write_bits,
+  output [31:0] io_regs_sleepProgram_3_read,
+  input         io_regs_sleepProgram_4_write_valid,
+  input  [31:0] io_regs_sleepProgram_4_write_bits,
+  output [31:0] io_regs_sleepProgram_4_read,
+  input         io_regs_sleepProgram_5_write_valid,
+  input  [31:0] io_regs_sleepProgram_5_write_bits,
+  output [31:0] io_regs_sleepProgram_5_read,
+  input         io_regs_sleepProgram_6_write_valid,
+  input  [31:0] io_regs_sleepProgram_6_write_bits,
+  output [31:0] io_regs_sleepProgram_6_read,
+  input         io_regs_sleepProgram_7_write_valid,
+  input  [31:0] io_regs_sleepProgram_7_write_bits,
+  output [31:0] io_regs_sleepProgram_7_read
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+`endif // RANDOMIZE_REG_INIT
+  reg  run; // @[PMU.scala 69:16]
+  reg  awake; // @[PMU.scala 70:18]
+  wire  _unlocked_writeAny_T_6 = io_regs_sleepProgram_0_write_valid | io_regs_sleepProgram_1_write_valid |
+    io_regs_sleepProgram_2_write_valid | io_regs_sleepProgram_3_write_valid | io_regs_sleepProgram_4_write_valid |
+    io_regs_sleepProgram_5_write_valid | io_regs_sleepProgram_6_write_valid | io_regs_sleepProgram_7_write_valid; // @[WatchdogTimer.scala 17:74]
+  wire  _unlocked_writeAny_T_13 = io_regs_wakeupProgram_0_write_valid | io_regs_wakeupProgram_1_write_valid |
+    io_regs_wakeupProgram_2_write_valid | io_regs_wakeupProgram_3_write_valid | io_regs_wakeupProgram_4_write_valid |
+    io_regs_wakeupProgram_5_write_valid | io_regs_wakeupProgram_6_write_valid | io_regs_wakeupProgram_7_write_valid; // @[WatchdogTimer.scala 17:74]
+  wire  unlocked_writeAny = _unlocked_writeAny_T_6 | _unlocked_writeAny_T_13 | io_regs_sleep_write_valid |
+    io_regs_cause_write_valid | io_regs_ie_write_valid; // @[WatchdogTimer.scala 19:16]
+  wire  _unlocked_T_2 = io_regs_key_write_bits == 32'h51f15e & ~unlocked_writeAny; // @[PMU.scala 73:60]
+  wire  _unlocked_T_3 = io_regs_key_write_valid | unlocked_writeAny; // @[PMU.scala 73:111]
+  reg  unlocked; // @[Reg.scala 28:20]
+  wire  _wantSleep_T = io_regs_sleep_write_valid & unlocked; // @[PMU.scala 75:80]
+  reg  wantSleep; // @[Reg.scala 28:20]
+  wire  _GEN_1 = _wantSleep_T | wantSleep; // @[Reg.scala 29:18 28:20 29:22]
+  reg [2:0] pc; // @[PMU.scala 76:15]
+  reg [1:0] wakeupCause; // @[PMU.scala 77:24]
+  wire  _ie_T = io_regs_ie_write_valid & unlocked; // @[PMU.scala 78:68]
+  reg [3:0] ie_r; // @[Reg.scala 16:16]
+  wire [3:0] ie = ie_r | 4'h1; // @[PMU.scala 78:81]
+  reg [8:0] wakeupProgram_0; // @[PMU.scala 81:51]
+  reg [8:0] wakeupProgram_1; // @[PMU.scala 81:51]
+  reg [8:0] wakeupProgram_2; // @[PMU.scala 81:51]
+  reg [8:0] wakeupProgram_3; // @[PMU.scala 81:51]
+  reg [8:0] wakeupProgram_4; // @[PMU.scala 81:51]
+  reg [8:0] wakeupProgram_5; // @[PMU.scala 81:51]
+  reg [8:0] wakeupProgram_6; // @[PMU.scala 81:51]
+  reg [8:0] wakeupProgram_7; // @[PMU.scala 81:51]
+  reg [8:0] sleepProgram_0; // @[PMU.scala 82:49]
+  reg [8:0] sleepProgram_1; // @[PMU.scala 82:49]
+  reg [8:0] sleepProgram_2; // @[PMU.scala 82:49]
+  reg [8:0] sleepProgram_3; // @[PMU.scala 82:49]
+  reg [8:0] sleepProgram_4; // @[PMU.scala 82:49]
+  reg [8:0] sleepProgram_5; // @[PMU.scala 82:49]
+  reg [8:0] sleepProgram_6; // @[PMU.scala 82:49]
+  reg [8:0] sleepProgram_7; // @[PMU.scala 82:49]
+  wire [8:0] _insnBits_T_1 = pc == 3'h1 ? wakeupProgram_1 : wakeupProgram_0; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_3 = pc == 3'h2 ? wakeupProgram_2 : _insnBits_T_1; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_5 = pc == 3'h3 ? wakeupProgram_3 : _insnBits_T_3; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_7 = pc == 3'h4 ? wakeupProgram_4 : _insnBits_T_5; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_9 = pc == 3'h5 ? wakeupProgram_5 : _insnBits_T_7; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_11 = pc == 3'h6 ? wakeupProgram_6 : _insnBits_T_9; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_13 = pc == 3'h7 ? wakeupProgram_7 : _insnBits_T_11; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_15 = pc == 3'h1 ? sleepProgram_1 : sleepProgram_0; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_17 = pc == 3'h2 ? sleepProgram_2 : _insnBits_T_15; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_19 = pc == 3'h3 ? sleepProgram_3 : _insnBits_T_17; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_21 = pc == 3'h4 ? sleepProgram_4 : _insnBits_T_19; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_23 = pc == 3'h5 ? sleepProgram_5 : _insnBits_T_21; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_25 = pc == 3'h6 ? sleepProgram_6 : _insnBits_T_23; // @[package.scala 32:76]
+  wire [8:0] _insnBits_T_27 = pc == 3'h7 ? sleepProgram_7 : _insnBits_T_25; // @[package.scala 32:76]
+  wire [8:0] insnBits = awake ? _insnBits_T_13 : _insnBits_T_27; // @[PMU.scala 83:21]
+  wire [3:0] insn_dt = insnBits[3:0]; // @[PMU.scala 84:43]
+  reg [15:0] count; // @[PMU.scala 86:18]
+  wire [15:0] _tick_T_1 = count + 16'h1; // @[PMU.scala 87:30]
+  wire [15:0] _tick_T_2 = count ^ _tick_T_1; // @[PMU.scala 87:21]
+  wire [15:0] _tick_T_3 = _tick_T_2 >> insn_dt; // @[PMU.scala 87:35]
+  wire  tick = _tick_T_3[0]; // @[PMU.scala 87:35]
+  wire [3:0] npc = pc + 3'h1; // @[PMU.scala 88:16]
+  wire  last = npc >= 4'h8; // @[PMU.scala 89:18]
+  wire  _io_control_valid_T = ~last; // @[PMU.scala 90:30]
+  wire  _GEN_4 = tick ? _io_control_valid_T : run; // @[PMU.scala 95:17 99:11 69:16]
+  wire [3:0] _GEN_5 = tick ? npc : {{1'd0}, pc}; // @[PMU.scala 100:10 76:15 95:17]
+  wire [3:0] _maskedWakeupCauses_T = {2'h1,io_wakeup_rtc,1'h0}; // @[PMU.scala 103:45]
+  wire [3:0] maskedWakeupCauses = ie & _maskedWakeupCauses_T; // @[PMU.scala 103:33]
+  wire [1:0] _wakeupCause_T_4 = maskedWakeupCauses[2] ? 2'h2 : 2'h3; // @[Mux.scala 47:70]
+  wire [1:0] _wakeupCause_T_5 = maskedWakeupCauses[1] ? 2'h1 : _wakeupCause_T_4; // @[Mux.scala 47:70]
+  wire  _GEN_6 = ~awake & |maskedWakeupCauses | run; // @[PMU.scala 104:45 105:11 69:16]
+  wire  _GEN_7 = ~awake & |maskedWakeupCauses | awake; // @[PMU.scala 104:45 106:13 70:18]
+  wire  _GEN_9 = awake & wantSleep | _GEN_6; // @[PMU.scala 109:31 110:11]
+  wire  _GEN_10 = awake & wantSleep ? 1'h0 : _GEN_7; // @[PMU.scala 109:31 111:13]
+  wire  _GEN_13 = run ? _GEN_4 : _GEN_9; // @[PMU.scala 93:14]
+  wire [3:0] _GEN_14 = run ? _GEN_5 : {{1'd0}, pc}; // @[PMU.scala 93:14 76:15]
+  wire  _GEN_15 = run ? awake : _GEN_10; // @[PMU.scala 93:14 70:18]
+  wire [9:0] _io_regs_cause_read_T = {io_resetCause, 8'h0}; // @[PMU.scala 116:54]
+  wire [9:0] _GEN_34 = {{8'd0}, wakeupCause}; // @[PMU.scala 116:37]
+  wire [9:0] _io_regs_cause_read_T_1 = _GEN_34 | _io_regs_cause_read_T; // @[PMU.scala 116:37]
+  wire [31:0] _GEN_18 = io_regs_wakeupProgram_0_write_valid & unlocked ? io_regs_wakeupProgram_0_write_bits : {{23'd0},
+    wakeupProgram_0}; // @[PMU.scala 123:{41,47} 81:51]
+  wire [31:0] _GEN_19 = io_regs_wakeupProgram_1_write_valid & unlocked ? io_regs_wakeupProgram_1_write_bits : {{23'd0},
+    wakeupProgram_1}; // @[PMU.scala 123:{41,47} 81:51]
+  wire [31:0] _GEN_20 = io_regs_wakeupProgram_2_write_valid & unlocked ? io_regs_wakeupProgram_2_write_bits : {{23'd0},
+    wakeupProgram_2}; // @[PMU.scala 123:{41,47} 81:51]
+  wire [31:0] _GEN_21 = io_regs_wakeupProgram_3_write_valid & unlocked ? io_regs_wakeupProgram_3_write_bits : {{23'd0},
+    wakeupProgram_3}; // @[PMU.scala 123:{41,47} 81:51]
+  wire [31:0] _GEN_22 = io_regs_wakeupProgram_4_write_valid & unlocked ? io_regs_wakeupProgram_4_write_bits : {{23'd0},
+    wakeupProgram_4}; // @[PMU.scala 123:{41,47} 81:51]
+  wire [31:0] _GEN_23 = io_regs_wakeupProgram_5_write_valid & unlocked ? io_regs_wakeupProgram_5_write_bits : {{23'd0},
+    wakeupProgram_5}; // @[PMU.scala 123:{41,47} 81:51]
+  wire [31:0] _GEN_24 = io_regs_wakeupProgram_6_write_valid & unlocked ? io_regs_wakeupProgram_6_write_bits : {{23'd0},
+    wakeupProgram_6}; // @[PMU.scala 123:{41,47} 81:51]
+  wire [31:0] _GEN_25 = io_regs_wakeupProgram_7_write_valid & unlocked ? io_regs_wakeupProgram_7_write_bits : {{23'd0},
+    wakeupProgram_7}; // @[PMU.scala 123:{41,47} 81:51]
+  wire [31:0] _GEN_26 = io_regs_sleepProgram_0_write_valid & unlocked ? io_regs_sleepProgram_0_write_bits : {{23'd0},
+    sleepProgram_0}; // @[PMU.scala 123:{41,47} 82:49]
+  wire [31:0] _GEN_27 = io_regs_sleepProgram_1_write_valid & unlocked ? io_regs_sleepProgram_1_write_bits : {{23'd0},
+    sleepProgram_1}; // @[PMU.scala 123:{41,47} 82:49]
+  wire [31:0] _GEN_28 = io_regs_sleepProgram_2_write_valid & unlocked ? io_regs_sleepProgram_2_write_bits : {{23'd0},
+    sleepProgram_2}; // @[PMU.scala 123:{41,47} 82:49]
+  wire [31:0] _GEN_29 = io_regs_sleepProgram_3_write_valid & unlocked ? io_regs_sleepProgram_3_write_bits : {{23'd0},
+    sleepProgram_3}; // @[PMU.scala 123:{41,47} 82:49]
+  wire [31:0] _GEN_30 = io_regs_sleepProgram_4_write_valid & unlocked ? io_regs_sleepProgram_4_write_bits : {{23'd0},
+    sleepProgram_4}; // @[PMU.scala 123:{41,47} 82:49]
+  wire [31:0] _GEN_31 = io_regs_sleepProgram_5_write_valid & unlocked ? io_regs_sleepProgram_5_write_bits : {{23'd0},
+    sleepProgram_5}; // @[PMU.scala 123:{41,47} 82:49]
+  wire [31:0] _GEN_32 = io_regs_sleepProgram_6_write_valid & unlocked ? io_regs_sleepProgram_6_write_bits : {{23'd0},
+    sleepProgram_6}; // @[PMU.scala 123:{41,47} 82:49]
+  wire [31:0] _GEN_33 = io_regs_sleepProgram_7_write_valid & unlocked ? io_regs_sleepProgram_7_write_bits : {{23'd0},
+    sleepProgram_7}; // @[PMU.scala 123:{41,47} 82:49]
+  assign io_control_valid = run & ~last & tick; // @[PMU.scala 90:36]
+  assign io_control_bits_hfclkrst = insnBits[8]; // @[PMU.scala 84:43]
+  assign io_control_bits_corerst = insnBits[7]; // @[PMU.scala 84:43]
+  assign io_control_bits_reserved1 = insnBits[6]; // @[PMU.scala 84:43]
+  assign io_control_bits_vddpaden = insnBits[5]; // @[PMU.scala 84:43]
+  assign io_control_bits_reserved0 = insnBits[4]; // @[PMU.scala 84:43]
+  assign io_regs_ie_read = ie_r | 4'h1; // @[PMU.scala 78:81]
+  assign io_regs_cause_read = {{22'd0}, _io_regs_cause_read_T_1}; // @[PMU.scala 116:22]
+  assign io_regs_key_read = {{31'd0}, unlocked}; // @[PMU.scala 118:20]
+  assign io_regs_wakeupProgram_0_read = {{23'd0}, wakeupProgram_0}; // @[PMU.scala 122:15]
+  assign io_regs_wakeupProgram_1_read = {{23'd0}, wakeupProgram_1}; // @[PMU.scala 122:15]
+  assign io_regs_wakeupProgram_2_read = {{23'd0}, wakeupProgram_2}; // @[PMU.scala 122:15]
+  assign io_regs_wakeupProgram_3_read = {{23'd0}, wakeupProgram_3}; // @[PMU.scala 122:15]
+  assign io_regs_wakeupProgram_4_read = {{23'd0}, wakeupProgram_4}; // @[PMU.scala 122:15]
+  assign io_regs_wakeupProgram_5_read = {{23'd0}, wakeupProgram_5}; // @[PMU.scala 122:15]
+  assign io_regs_wakeupProgram_6_read = {{23'd0}, wakeupProgram_6}; // @[PMU.scala 122:15]
+  assign io_regs_wakeupProgram_7_read = {{23'd0}, wakeupProgram_7}; // @[PMU.scala 122:15]
+  assign io_regs_sleepProgram_0_read = {{23'd0}, sleepProgram_0}; // @[PMU.scala 122:15]
+  assign io_regs_sleepProgram_1_read = {{23'd0}, sleepProgram_1}; // @[PMU.scala 122:15]
+  assign io_regs_sleepProgram_2_read = {{23'd0}, sleepProgram_2}; // @[PMU.scala 122:15]
+  assign io_regs_sleepProgram_3_read = {{23'd0}, sleepProgram_3}; // @[PMU.scala 122:15]
+  assign io_regs_sleepProgram_4_read = {{23'd0}, sleepProgram_4}; // @[PMU.scala 122:15]
+  assign io_regs_sleepProgram_5_read = {{23'd0}, sleepProgram_5}; // @[PMU.scala 122:15]
+  assign io_regs_sleepProgram_6_read = {{23'd0}, sleepProgram_6}; // @[PMU.scala 122:15]
+  assign io_regs_sleepProgram_7_read = {{23'd0}, sleepProgram_7}; // @[PMU.scala 122:15]
+  always @(posedge clock) begin
+    run <= reset | _GEN_13; // @[PMU.scala 69:{16,16}]
+    awake <= reset | _GEN_15; // @[PMU.scala 70:{18,18}]
+    if (reset) begin // @[Reg.scala 28:20]
+      unlocked <= 1'h0; // @[Reg.scala 28:20]
+    end else if (_unlocked_T_3) begin // @[Reg.scala 29:18]
+      unlocked <= _unlocked_T_2; // @[Reg.scala 29:22]
+    end
+    if (reset) begin // @[Reg.scala 28:20]
+      wantSleep <= 1'h0; // @[Reg.scala 28:20]
+    end else if (run) begin // @[PMU.scala 93:14]
+      wantSleep <= _GEN_1;
+    end else if (awake & wantSleep) begin // @[PMU.scala 109:31]
+      wantSleep <= 1'h0; // @[PMU.scala 112:17]
+    end else begin
+      wantSleep <= _GEN_1;
+    end
+    if (reset) begin // @[PMU.scala 76:15]
+      pc <= 3'h0; // @[PMU.scala 76:15]
+    end else begin
+      pc <= _GEN_14[2:0];
+    end
+    if (reset) begin // @[PMU.scala 77:24]
+      wakeupCause <= 2'h0; // @[PMU.scala 77:24]
+    end else if (!(run)) begin // @[PMU.scala 93:14]
+      if (~awake & |maskedWakeupCauses) begin // @[PMU.scala 104:45]
+        if (maskedWakeupCauses[0]) begin // @[Mux.scala 47:70]
+          wakeupCause <= 2'h0;
+        end else begin
+          wakeupCause <= _wakeupCause_T_5;
+        end
+      end
+    end
+    if (_ie_T) begin // @[Reg.scala 17:18]
+      ie_r <= io_regs_ie_write_bits; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[PMU.scala 81:51]
+      wakeupProgram_0 <= 9'h1f0; // @[PMU.scala 81:51]
+    end else begin
+      wakeupProgram_0 <= _GEN_18[8:0];
+    end
+    if (reset) begin // @[PMU.scala 81:51]
+      wakeupProgram_1 <= 9'hf8; // @[PMU.scala 81:51]
+    end else begin
+      wakeupProgram_1 <= _GEN_19[8:0];
+    end
+    if (reset) begin // @[PMU.scala 81:51]
+      wakeupProgram_2 <= 9'h30; // @[PMU.scala 81:51]
+    end else begin
+      wakeupProgram_2 <= _GEN_20[8:0];
+    end
+    if (reset) begin // @[PMU.scala 81:51]
+      wakeupProgram_3 <= 9'h30; // @[PMU.scala 81:51]
+    end else begin
+      wakeupProgram_3 <= _GEN_21[8:0];
+    end
+    if (reset) begin // @[PMU.scala 81:51]
+      wakeupProgram_4 <= 9'h30; // @[PMU.scala 81:51]
+    end else begin
+      wakeupProgram_4 <= _GEN_22[8:0];
+    end
+    if (reset) begin // @[PMU.scala 81:51]
+      wakeupProgram_5 <= 9'h30; // @[PMU.scala 81:51]
+    end else begin
+      wakeupProgram_5 <= _GEN_23[8:0];
+    end
+    if (reset) begin // @[PMU.scala 81:51]
+      wakeupProgram_6 <= 9'h30; // @[PMU.scala 81:51]
+    end else begin
+      wakeupProgram_6 <= _GEN_24[8:0];
+    end
+    if (reset) begin // @[PMU.scala 81:51]
+      wakeupProgram_7 <= 9'h30; // @[PMU.scala 81:51]
+    end else begin
+      wakeupProgram_7 <= _GEN_25[8:0];
+    end
+    if (reset) begin // @[PMU.scala 82:49]
+      sleepProgram_0 <= 9'hf0; // @[PMU.scala 82:49]
+    end else begin
+      sleepProgram_0 <= _GEN_26[8:0];
+    end
+    if (reset) begin // @[PMU.scala 82:49]
+      sleepProgram_1 <= 9'h1f0; // @[PMU.scala 82:49]
+    end else begin
+      sleepProgram_1 <= _GEN_27[8:0];
+    end
+    if (reset) begin // @[PMU.scala 82:49]
+      sleepProgram_2 <= 9'h1d0; // @[PMU.scala 82:49]
+    end else begin
+      sleepProgram_2 <= _GEN_28[8:0];
+    end
+    if (reset) begin // @[PMU.scala 82:49]
+      sleepProgram_3 <= 9'h1c0; // @[PMU.scala 82:49]
+    end else begin
+      sleepProgram_3 <= _GEN_29[8:0];
+    end
+    if (reset) begin // @[PMU.scala 82:49]
+      sleepProgram_4 <= 9'h1c0; // @[PMU.scala 82:49]
+    end else begin
+      sleepProgram_4 <= _GEN_30[8:0];
+    end
+    if (reset) begin // @[PMU.scala 82:49]
+      sleepProgram_5 <= 9'h1c0; // @[PMU.scala 82:49]
+    end else begin
+      sleepProgram_5 <= _GEN_31[8:0];
+    end
+    if (reset) begin // @[PMU.scala 82:49]
+      sleepProgram_6 <= 9'h1c0; // @[PMU.scala 82:49]
+    end else begin
+      sleepProgram_6 <= _GEN_32[8:0];
+    end
+    if (reset) begin // @[PMU.scala 82:49]
+      sleepProgram_7 <= 9'h1c0; // @[PMU.scala 82:49]
+    end else begin
+      sleepProgram_7 <= _GEN_33[8:0];
+    end
+    if (reset) begin // @[PMU.scala 86:18]
+      count <= 16'h0; // @[PMU.scala 86:18]
+    end else if (run) begin // @[PMU.scala 93:14]
+      if (tick) begin // @[PMU.scala 95:17]
+        count <= 16'h0; // @[PMU.scala 96:13]
+      end else begin
+        count <= _tick_T_1; // @[PMU.scala 94:11]
+      end
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  run = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  awake = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  unlocked = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  wantSleep = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  pc = _RAND_4[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  wakeupCause = _RAND_5[1:0];
+  _RAND_6 = {1{`RANDOM}};
+  ie_r = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  wakeupProgram_0 = _RAND_7[8:0];
+  _RAND_8 = {1{`RANDOM}};
+  wakeupProgram_1 = _RAND_8[8:0];
+  _RAND_9 = {1{`RANDOM}};
+  wakeupProgram_2 = _RAND_9[8:0];
+  _RAND_10 = {1{`RANDOM}};
+  wakeupProgram_3 = _RAND_10[8:0];
+  _RAND_11 = {1{`RANDOM}};
+  wakeupProgram_4 = _RAND_11[8:0];
+  _RAND_12 = {1{`RANDOM}};
+  wakeupProgram_5 = _RAND_12[8:0];
+  _RAND_13 = {1{`RANDOM}};
+  wakeupProgram_6 = _RAND_13[8:0];
+  _RAND_14 = {1{`RANDOM}};
+  wakeupProgram_7 = _RAND_14[8:0];
+  _RAND_15 = {1{`RANDOM}};
+  sleepProgram_0 = _RAND_15[8:0];
+  _RAND_16 = {1{`RANDOM}};
+  sleepProgram_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  sleepProgram_2 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  sleepProgram_3 = _RAND_18[8:0];
+  _RAND_19 = {1{`RANDOM}};
+  sleepProgram_4 = _RAND_19[8:0];
+  _RAND_20 = {1{`RANDOM}};
+  sleepProgram_5 = _RAND_20[8:0];
+  _RAND_21 = {1{`RANDOM}};
+  sleepProgram_6 = _RAND_21[8:0];
+  _RAND_22 = {1{`RANDOM}};
+  sleepProgram_7 = _RAND_22[8:0];
+  _RAND_23 = {1{`RANDOM}};
+  count = _RAND_23[15:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncResetRegVec_w5_i0(
+  input        clock,
+  input        reset,
+  input  [4:0] io_d,
+  output [4:0] io_q,
+  input        io_en
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [4:0] reg_; // @[AsyncResetReg.scala 64:50]
+  assign io_q = reg_; // @[AsyncResetReg.scala 68:8]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncResetReg.scala 65:16]
+      reg_ <= 5'h0; // @[AsyncResetReg.scala 66:9]
+    end else if (io_en) begin // @[AsyncResetReg.scala 64:50]
+      reg_ <= io_d;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  reg_ = _RAND_0[4:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    reg_ = 5'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module PMU(
+  input         clock,
+  input         reset,
+  input         io_wakeup_rtc,
+  output        io_control_corerst,
+  input         io_regs_ie_write_valid,
+  input  [3:0]  io_regs_ie_write_bits,
+  output [3:0]  io_regs_ie_read,
+  input         io_regs_cause_write_valid,
+  output [31:0] io_regs_cause_read,
+  input         io_regs_sleep_write_valid,
+  input         io_regs_key_write_valid,
+  input  [31:0] io_regs_key_write_bits,
+  output [31:0] io_regs_key_read,
+  input         io_regs_wakeupProgram_0_write_valid,
+  input  [31:0] io_regs_wakeupProgram_0_write_bits,
+  output [31:0] io_regs_wakeupProgram_0_read,
+  input         io_regs_wakeupProgram_1_write_valid,
+  input  [31:0] io_regs_wakeupProgram_1_write_bits,
+  output [31:0] io_regs_wakeupProgram_1_read,
+  input         io_regs_wakeupProgram_2_write_valid,
+  input  [31:0] io_regs_wakeupProgram_2_write_bits,
+  output [31:0] io_regs_wakeupProgram_2_read,
+  input         io_regs_wakeupProgram_3_write_valid,
+  input  [31:0] io_regs_wakeupProgram_3_write_bits,
+  output [31:0] io_regs_wakeupProgram_3_read,
+  input         io_regs_wakeupProgram_4_write_valid,
+  input  [31:0] io_regs_wakeupProgram_4_write_bits,
+  output [31:0] io_regs_wakeupProgram_4_read,
+  input         io_regs_wakeupProgram_5_write_valid,
+  input  [31:0] io_regs_wakeupProgram_5_write_bits,
+  output [31:0] io_regs_wakeupProgram_5_read,
+  input         io_regs_wakeupProgram_6_write_valid,
+  input  [31:0] io_regs_wakeupProgram_6_write_bits,
+  output [31:0] io_regs_wakeupProgram_6_read,
+  input         io_regs_wakeupProgram_7_write_valid,
+  input  [31:0] io_regs_wakeupProgram_7_write_bits,
+  output [31:0] io_regs_wakeupProgram_7_read,
+  input         io_regs_sleepProgram_0_write_valid,
+  input  [31:0] io_regs_sleepProgram_0_write_bits,
+  output [31:0] io_regs_sleepProgram_0_read,
+  input         io_regs_sleepProgram_1_write_valid,
+  input  [31:0] io_regs_sleepProgram_1_write_bits,
+  output [31:0] io_regs_sleepProgram_1_read,
+  input         io_regs_sleepProgram_2_write_valid,
+  input  [31:0] io_regs_sleepProgram_2_write_bits,
+  output [31:0] io_regs_sleepProgram_2_read,
+  input         io_regs_sleepProgram_3_write_valid,
+  input  [31:0] io_regs_sleepProgram_3_write_bits,
+  output [31:0] io_regs_sleepProgram_3_read,
+  input         io_regs_sleepProgram_4_write_valid,
+  input  [31:0] io_regs_sleepProgram_4_write_bits,
+  output [31:0] io_regs_sleepProgram_4_read,
+  input         io_regs_sleepProgram_5_write_valid,
+  input  [31:0] io_regs_sleepProgram_5_write_bits,
+  output [31:0] io_regs_sleepProgram_5_read,
+  input         io_regs_sleepProgram_6_write_valid,
+  input  [31:0] io_regs_sleepProgram_6_write_bits,
+  output [31:0] io_regs_sleepProgram_6_read,
+  input         io_regs_sleepProgram_7_write_valid,
+  input  [31:0] io_regs_sleepProgram_7_write_bits,
+  output [31:0] io_regs_sleepProgram_7_read,
+  input         io_resetCauses_wdogrst,
+  input         io_resetCauses_erst
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  wire  core_clock; // @[PMU.scala 136:20]
+  wire  core_reset; // @[PMU.scala 136:20]
+  wire  core_io_wakeup_rtc; // @[PMU.scala 136:20]
+  wire  core_io_control_valid; // @[PMU.scala 136:20]
+  wire  core_io_control_bits_hfclkrst; // @[PMU.scala 136:20]
+  wire  core_io_control_bits_corerst; // @[PMU.scala 136:20]
+  wire  core_io_control_bits_reserved1; // @[PMU.scala 136:20]
+  wire  core_io_control_bits_vddpaden; // @[PMU.scala 136:20]
+  wire  core_io_control_bits_reserved0; // @[PMU.scala 136:20]
+  wire [1:0] core_io_resetCause; // @[PMU.scala 136:20]
+  wire  core_io_regs_ie_write_valid; // @[PMU.scala 136:20]
+  wire [3:0] core_io_regs_ie_write_bits; // @[PMU.scala 136:20]
+  wire [3:0] core_io_regs_ie_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_cause_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_cause_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleep_write_valid; // @[PMU.scala 136:20]
+  wire  core_io_regs_key_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_key_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_key_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_wakeupProgram_0_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_0_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_0_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_wakeupProgram_1_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_1_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_1_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_wakeupProgram_2_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_2_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_2_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_wakeupProgram_3_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_3_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_3_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_wakeupProgram_4_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_4_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_4_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_wakeupProgram_5_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_5_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_5_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_wakeupProgram_6_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_6_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_6_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_wakeupProgram_7_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_7_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_wakeupProgram_7_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleepProgram_0_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_0_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_0_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleepProgram_1_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_1_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_1_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleepProgram_2_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_2_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_2_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleepProgram_3_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_3_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_3_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleepProgram_4_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_4_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_4_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleepProgram_5_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_5_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_5_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleepProgram_6_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_6_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_6_read; // @[PMU.scala 136:20]
+  wire  core_io_regs_sleepProgram_7_write_valid; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_7_write_bits; // @[PMU.scala 136:20]
+  wire [31:0] core_io_regs_sleepProgram_7_read; // @[PMU.scala 136:20]
+  wire  latch_reg_clock; // @[AsyncResetReg.scala 89:21]
+  wire  latch_reg_reset; // @[AsyncResetReg.scala 89:21]
+  wire [4:0] latch_reg_io_d; // @[AsyncResetReg.scala 89:21]
+  wire [4:0] latch_reg_io_q; // @[AsyncResetReg.scala 89:21]
+  wire  latch_reg_io_en; // @[AsyncResetReg.scala 89:21]
+  wire  core_io_resetCause_latches_latch_set; // @[PMU.scala 148:25]
+  wire  core_io_resetCause_latches_latch_reset; // @[PMU.scala 148:25]
+  wire  core_io_resetCause_latches_latch_q; // @[PMU.scala 148:25]
+  wire  core_io_resetCause_latches_latch_1_set; // @[PMU.scala 148:25]
+  wire  core_io_resetCause_latches_latch_1_reset; // @[PMU.scala 148:25]
+  wire  core_io_resetCause_latches_latch_1_q; // @[PMU.scala 148:25]
+  wire  core_io_resetCause_latches_latch_2_set; // @[PMU.scala 148:25]
+  wire  core_io_resetCause_latches_latch_2_reset; // @[PMU.scala 148:25]
+  wire  core_io_resetCause_latches_latch_2_q; // @[PMU.scala 148:25]
+  reg  coreReset_x4; // @[PMU.scala 135:33]
+  reg  coreReset; // @[PMU.scala 135:22]
+  wire [4:0] _latch_T = {core_io_control_bits_hfclkrst,core_io_control_bits_corerst,core_io_control_bits_reserved1,
+    core_io_control_bits_vddpaden,core_io_control_bits_reserved0}; // @[PMU.scala 142:52]
+  wire [4:0] latch = ~latch_reg_io_q; // @[PMU.scala 142:15]
+  wire [2:0] core_io_resetCause_cause = {io_resetCauses_wdogrst,io_resetCauses_erst,1'h0}; // @[PMU.scala 146:32]
+  wire [2:0] _core_io_resetCause_T = {core_io_resetCause_latches_latch_2_q,core_io_resetCause_latches_latch_1_q,
+    core_io_resetCause_latches_latch_q}; // @[Cat.scala 31:58]
+  wire  core_io_resetCause_hi_1 = _core_io_resetCause_T[2]; // @[OneHot.scala 30:18]
+  wire [1:0] core_io_resetCause_lo = _core_io_resetCause_T[1:0]; // @[OneHot.scala 31:18]
+  wire  _core_io_resetCause_T_1 = |core_io_resetCause_hi_1; // @[OneHot.scala 32:14]
+  wire [1:0] _GEN_0 = {{1'd0}, core_io_resetCause_hi_1}; // @[OneHot.scala 32:28]
+  wire [1:0] _core_io_resetCause_T_2 = _GEN_0 | core_io_resetCause_lo; // @[OneHot.scala 32:28]
+  PMUCore core ( // @[PMU.scala 136:20]
+    .clock(core_clock),
+    .reset(core_reset),
+    .io_wakeup_rtc(core_io_wakeup_rtc),
+    .io_control_valid(core_io_control_valid),
+    .io_control_bits_hfclkrst(core_io_control_bits_hfclkrst),
+    .io_control_bits_corerst(core_io_control_bits_corerst),
+    .io_control_bits_reserved1(core_io_control_bits_reserved1),
+    .io_control_bits_vddpaden(core_io_control_bits_vddpaden),
+    .io_control_bits_reserved0(core_io_control_bits_reserved0),
+    .io_resetCause(core_io_resetCause),
+    .io_regs_ie_write_valid(core_io_regs_ie_write_valid),
+    .io_regs_ie_write_bits(core_io_regs_ie_write_bits),
+    .io_regs_ie_read(core_io_regs_ie_read),
+    .io_regs_cause_write_valid(core_io_regs_cause_write_valid),
+    .io_regs_cause_read(core_io_regs_cause_read),
+    .io_regs_sleep_write_valid(core_io_regs_sleep_write_valid),
+    .io_regs_key_write_valid(core_io_regs_key_write_valid),
+    .io_regs_key_write_bits(core_io_regs_key_write_bits),
+    .io_regs_key_read(core_io_regs_key_read),
+    .io_regs_wakeupProgram_0_write_valid(core_io_regs_wakeupProgram_0_write_valid),
+    .io_regs_wakeupProgram_0_write_bits(core_io_regs_wakeupProgram_0_write_bits),
+    .io_regs_wakeupProgram_0_read(core_io_regs_wakeupProgram_0_read),
+    .io_regs_wakeupProgram_1_write_valid(core_io_regs_wakeupProgram_1_write_valid),
+    .io_regs_wakeupProgram_1_write_bits(core_io_regs_wakeupProgram_1_write_bits),
+    .io_regs_wakeupProgram_1_read(core_io_regs_wakeupProgram_1_read),
+    .io_regs_wakeupProgram_2_write_valid(core_io_regs_wakeupProgram_2_write_valid),
+    .io_regs_wakeupProgram_2_write_bits(core_io_regs_wakeupProgram_2_write_bits),
+    .io_regs_wakeupProgram_2_read(core_io_regs_wakeupProgram_2_read),
+    .io_regs_wakeupProgram_3_write_valid(core_io_regs_wakeupProgram_3_write_valid),
+    .io_regs_wakeupProgram_3_write_bits(core_io_regs_wakeupProgram_3_write_bits),
+    .io_regs_wakeupProgram_3_read(core_io_regs_wakeupProgram_3_read),
+    .io_regs_wakeupProgram_4_write_valid(core_io_regs_wakeupProgram_4_write_valid),
+    .io_regs_wakeupProgram_4_write_bits(core_io_regs_wakeupProgram_4_write_bits),
+    .io_regs_wakeupProgram_4_read(core_io_regs_wakeupProgram_4_read),
+    .io_regs_wakeupProgram_5_write_valid(core_io_regs_wakeupProgram_5_write_valid),
+    .io_regs_wakeupProgram_5_write_bits(core_io_regs_wakeupProgram_5_write_bits),
+    .io_regs_wakeupProgram_5_read(core_io_regs_wakeupProgram_5_read),
+    .io_regs_wakeupProgram_6_write_valid(core_io_regs_wakeupProgram_6_write_valid),
+    .io_regs_wakeupProgram_6_write_bits(core_io_regs_wakeupProgram_6_write_bits),
+    .io_regs_wakeupProgram_6_read(core_io_regs_wakeupProgram_6_read),
+    .io_regs_wakeupProgram_7_write_valid(core_io_regs_wakeupProgram_7_write_valid),
+    .io_regs_wakeupProgram_7_write_bits(core_io_regs_wakeupProgram_7_write_bits),
+    .io_regs_wakeupProgram_7_read(core_io_regs_wakeupProgram_7_read),
+    .io_regs_sleepProgram_0_write_valid(core_io_regs_sleepProgram_0_write_valid),
+    .io_regs_sleepProgram_0_write_bits(core_io_regs_sleepProgram_0_write_bits),
+    .io_regs_sleepProgram_0_read(core_io_regs_sleepProgram_0_read),
+    .io_regs_sleepProgram_1_write_valid(core_io_regs_sleepProgram_1_write_valid),
+    .io_regs_sleepProgram_1_write_bits(core_io_regs_sleepProgram_1_write_bits),
+    .io_regs_sleepProgram_1_read(core_io_regs_sleepProgram_1_read),
+    .io_regs_sleepProgram_2_write_valid(core_io_regs_sleepProgram_2_write_valid),
+    .io_regs_sleepProgram_2_write_bits(core_io_regs_sleepProgram_2_write_bits),
+    .io_regs_sleepProgram_2_read(core_io_regs_sleepProgram_2_read),
+    .io_regs_sleepProgram_3_write_valid(core_io_regs_sleepProgram_3_write_valid),
+    .io_regs_sleepProgram_3_write_bits(core_io_regs_sleepProgram_3_write_bits),
+    .io_regs_sleepProgram_3_read(core_io_regs_sleepProgram_3_read),
+    .io_regs_sleepProgram_4_write_valid(core_io_regs_sleepProgram_4_write_valid),
+    .io_regs_sleepProgram_4_write_bits(core_io_regs_sleepProgram_4_write_bits),
+    .io_regs_sleepProgram_4_read(core_io_regs_sleepProgram_4_read),
+    .io_regs_sleepProgram_5_write_valid(core_io_regs_sleepProgram_5_write_valid),
+    .io_regs_sleepProgram_5_write_bits(core_io_regs_sleepProgram_5_write_bits),
+    .io_regs_sleepProgram_5_read(core_io_regs_sleepProgram_5_read),
+    .io_regs_sleepProgram_6_write_valid(core_io_regs_sleepProgram_6_write_valid),
+    .io_regs_sleepProgram_6_write_bits(core_io_regs_sleepProgram_6_write_bits),
+    .io_regs_sleepProgram_6_read(core_io_regs_sleepProgram_6_read),
+    .io_regs_sleepProgram_7_write_valid(core_io_regs_sleepProgram_7_write_valid),
+    .io_regs_sleepProgram_7_write_bits(core_io_regs_sleepProgram_7_write_bits),
+    .io_regs_sleepProgram_7_read(core_io_regs_sleepProgram_7_read)
+  );
+  AsyncResetRegVec_w5_i0 latch_reg ( // @[AsyncResetReg.scala 89:21]
+    .clock(latch_reg_clock),
+    .reset(latch_reg_reset),
+    .io_d(latch_reg_io_d),
+    .io_q(latch_reg_io_q),
+    .io_en(latch_reg_io_en)
+  );
+  SRLatch core_io_resetCause_latches_latch ( // @[PMU.scala 148:25]
+    .set(core_io_resetCause_latches_latch_set),
+    .reset(core_io_resetCause_latches_latch_reset),
+    .q(core_io_resetCause_latches_latch_q)
+  );
+  SRLatch core_io_resetCause_latches_latch_1 ( // @[PMU.scala 148:25]
+    .set(core_io_resetCause_latches_latch_1_set),
+    .reset(core_io_resetCause_latches_latch_1_reset),
+    .q(core_io_resetCause_latches_latch_1_q)
+  );
+  SRLatch core_io_resetCause_latches_latch_2 ( // @[PMU.scala 148:25]
+    .set(core_io_resetCause_latches_latch_2_set),
+    .reset(core_io_resetCause_latches_latch_2_reset),
+    .q(core_io_resetCause_latches_latch_2_q)
+  );
+  assign io_control_corerst = latch[3]; // @[PMU.scala 143:36]
+  assign io_regs_ie_read = core_io_regs_ie_read; // @[PMU.scala 138:6]
+  assign io_regs_cause_read = core_io_regs_cause_read; // @[PMU.scala 138:6]
+  assign io_regs_key_read = core_io_regs_key_read; // @[PMU.scala 138:6]
+  assign io_regs_wakeupProgram_0_read = core_io_regs_wakeupProgram_0_read; // @[PMU.scala 138:6]
+  assign io_regs_wakeupProgram_1_read = core_io_regs_wakeupProgram_1_read; // @[PMU.scala 138:6]
+  assign io_regs_wakeupProgram_2_read = core_io_regs_wakeupProgram_2_read; // @[PMU.scala 138:6]
+  assign io_regs_wakeupProgram_3_read = core_io_regs_wakeupProgram_3_read; // @[PMU.scala 138:6]
+  assign io_regs_wakeupProgram_4_read = core_io_regs_wakeupProgram_4_read; // @[PMU.scala 138:6]
+  assign io_regs_wakeupProgram_5_read = core_io_regs_wakeupProgram_5_read; // @[PMU.scala 138:6]
+  assign io_regs_wakeupProgram_6_read = core_io_regs_wakeupProgram_6_read; // @[PMU.scala 138:6]
+  assign io_regs_wakeupProgram_7_read = core_io_regs_wakeupProgram_7_read; // @[PMU.scala 138:6]
+  assign io_regs_sleepProgram_0_read = core_io_regs_sleepProgram_0_read; // @[PMU.scala 138:6]
+  assign io_regs_sleepProgram_1_read = core_io_regs_sleepProgram_1_read; // @[PMU.scala 138:6]
+  assign io_regs_sleepProgram_2_read = core_io_regs_sleepProgram_2_read; // @[PMU.scala 138:6]
+  assign io_regs_sleepProgram_3_read = core_io_regs_sleepProgram_3_read; // @[PMU.scala 138:6]
+  assign io_regs_sleepProgram_4_read = core_io_regs_sleepProgram_4_read; // @[PMU.scala 138:6]
+  assign io_regs_sleepProgram_5_read = core_io_regs_sleepProgram_5_read; // @[PMU.scala 138:6]
+  assign io_regs_sleepProgram_6_read = core_io_regs_sleepProgram_6_read; // @[PMU.scala 138:6]
+  assign io_regs_sleepProgram_7_read = core_io_regs_sleepProgram_7_read; // @[PMU.scala 138:6]
+  assign core_clock = clock;
+  assign core_reset = coreReset; // @[compatibility.scala 290:56]
+  assign core_io_wakeup_rtc = io_wakeup_rtc; // @[PMU.scala 138:6]
+  assign core_io_resetCause = {_core_io_resetCause_T_1,_core_io_resetCause_T_2[1]}; // @[Cat.scala 31:58]
+  assign core_io_regs_ie_write_valid = io_regs_ie_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_ie_write_bits = io_regs_ie_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_cause_write_valid = io_regs_cause_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleep_write_valid = io_regs_sleep_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_key_write_valid = io_regs_key_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_key_write_bits = io_regs_key_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_0_write_valid = io_regs_wakeupProgram_0_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_0_write_bits = io_regs_wakeupProgram_0_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_1_write_valid = io_regs_wakeupProgram_1_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_1_write_bits = io_regs_wakeupProgram_1_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_2_write_valid = io_regs_wakeupProgram_2_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_2_write_bits = io_regs_wakeupProgram_2_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_3_write_valid = io_regs_wakeupProgram_3_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_3_write_bits = io_regs_wakeupProgram_3_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_4_write_valid = io_regs_wakeupProgram_4_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_4_write_bits = io_regs_wakeupProgram_4_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_5_write_valid = io_regs_wakeupProgram_5_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_5_write_bits = io_regs_wakeupProgram_5_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_6_write_valid = io_regs_wakeupProgram_6_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_6_write_bits = io_regs_wakeupProgram_6_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_7_write_valid = io_regs_wakeupProgram_7_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_wakeupProgram_7_write_bits = io_regs_wakeupProgram_7_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_0_write_valid = io_regs_sleepProgram_0_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_0_write_bits = io_regs_sleepProgram_0_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_1_write_valid = io_regs_sleepProgram_1_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_1_write_bits = io_regs_sleepProgram_1_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_2_write_valid = io_regs_sleepProgram_2_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_2_write_bits = io_regs_sleepProgram_2_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_3_write_valid = io_regs_sleepProgram_3_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_3_write_bits = io_regs_sleepProgram_3_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_4_write_valid = io_regs_sleepProgram_4_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_4_write_bits = io_regs_sleepProgram_4_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_5_write_valid = io_regs_sleepProgram_5_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_5_write_bits = io_regs_sleepProgram_5_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_6_write_valid = io_regs_sleepProgram_6_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_6_write_bits = io_regs_sleepProgram_6_write_bits; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_7_write_valid = io_regs_sleepProgram_7_write_valid; // @[PMU.scala 138:6]
+  assign core_io_regs_sleepProgram_7_write_bits = io_regs_sleepProgram_7_write_bits; // @[PMU.scala 138:6]
+  assign latch_reg_clock = clock;
+  assign latch_reg_reset = reset;
+  assign latch_reg_io_d = ~_latch_T; // @[PMU.scala 142:30]
+  assign latch_reg_io_en = core_io_control_valid; // @[AsyncResetReg.scala 92:15]
+  assign core_io_resetCause_latches_latch_set = core_io_resetCause_cause[0]; // @[PMU.scala 149:28]
+  assign core_io_resetCause_latches_latch_reset = core_io_resetCause_cause[1] | core_io_resetCause_cause[2]; // @[PMU.scala 150:87]
+  assign core_io_resetCause_latches_latch_1_set = core_io_resetCause_cause[1]; // @[PMU.scala 149:28]
+  assign core_io_resetCause_latches_latch_1_reset = core_io_resetCause_cause[0] | core_io_resetCause_cause[2]; // @[PMU.scala 150:87]
+  assign core_io_resetCause_latches_latch_2_set = core_io_resetCause_cause[2]; // @[PMU.scala 149:28]
+  assign core_io_resetCause_latches_latch_2_reset = core_io_resetCause_cause[0] | core_io_resetCause_cause[1]; // @[PMU.scala 150:87]
+  always @(posedge clock) begin
+    coreReset_x4 <= reset; // @[PMU.scala 135:33]
+    coreReset <= coreReset_x4; // @[PMU.scala 135:22]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  coreReset_x4 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  coreReset = _RAND_1[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module WatchdogTimer(
+  input         clock,
+  input         reset,
+  input         scale_io_regs_cfg_write__ip_0,
+  input         scale_io_regs_cfg_write__running,
+  input         scale_io_regs_cfg_write__countAlways,
+  input         scale_io_regs_cfg_write__zerocmp,
+  input         scale_io_regs_cfg_write__sticky,
+  input  [3:0]  scale_io_regs_cfg_write__scale,
+  output        scale_io_regs_cfg_read_ip_0,
+  output        scale_io_regs_cfg_read_running,
+  output        scale_io_regs_cfg_read_countAlways,
+  output        scale_io_regs_cfg_read_zerocmp,
+  output        scale_io_regs_cfg_read_sticky,
+  output [3:0]  scale_io_regs_cfg_read_scale,
+  input         scale_io_regs_cfg_write_ip_0,
+  input         scale_io_regs_cfg_write_gang_0,
+  input         scale_io_regs_cfg_write_extra_0,
+  input         scale_io_regs_cfg_write_center_0,
+  input         scale_io_regs_cfg_write_running,
+  input         scale_io_regs_cfg_write_countAlways,
+  input         scale_io_regs_cfg_write_deglitch,
+  input         scale_io_regs_cfg_write_zerocmp,
+  input         scale_io_regs_cfg_write_sticky,
+  input         scale_io_regs_cfg_write_scale,
+  input         scale_io_regs_countLo_write_valid,
+  input  [30:0] scale_io_regs_countLo_write_bits,
+  output [30:0] scale_io_regs_countLo_read,
+  input         scale_io_regs_countHi_write_valid,
+  input         scale_io_regs_s_write_valid,
+  output [15:0] scale_io_regs_s_read,
+  input         scale_io_regs_cmp_0_write_valid,
+  input  [15:0] scale_io_regs_cmp_0_write_bits,
+  output [15:0] scale_io_regs_cmp_0_read,
+  input         scale_io_regs_feed_write_valid,
+  input  [31:0] scale_io_regs_feed_write_bits,
+  input         scale_io_regs_key_write_valid,
+  input  [31:0] scale_io_regs_key_write_bits,
+  output [31:0] scale_io_regs_key_read,
+  output        scale_io_ip_0,
+  input         scale_io_corerst,
+  output        scale_io_rst
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  wire  scale_unlocked_reg_clock; // @[AsyncResetReg.scala 89:21]
+  wire  scale_unlocked_reg_reset; // @[AsyncResetReg.scala 89:21]
+  wire  scale_unlocked_reg_io_d; // @[AsyncResetReg.scala 89:21]
+  wire  scale_unlocked_reg_io_q; // @[AsyncResetReg.scala 89:21]
+  wire  scale_unlocked_reg_io_en; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAlways_reg_clock; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAlways_reg_reset; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAlways_reg_io_d; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAlways_reg_io_q; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAlways_reg_io_en; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAwake_reg_clock; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAwake_reg_reset; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAwake_reg_io_d; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAwake_reg_io_q; // @[AsyncResetReg.scala 89:21]
+  wire  countEn_countAwake_reg_io_en; // @[AsyncResetReg.scala 89:21]
+  wire  io_regs_cfg_read_sticky_rsten_reg_clock; // @[AsyncResetReg.scala 89:21]
+  wire  io_regs_cfg_read_sticky_rsten_reg_reset; // @[AsyncResetReg.scala 89:21]
+  wire  io_regs_cfg_read_sticky_rsten_reg_io_d; // @[AsyncResetReg.scala 89:21]
+  wire  io_regs_cfg_read_sticky_rsten_reg_io_q; // @[AsyncResetReg.scala 89:21]
+  wire  io_regs_cfg_read_sticky_rsten_reg_io_en; // @[AsyncResetReg.scala 89:21]
+  wire  io_rst_reg_clock; // @[AsyncResetReg.scala 89:21]
+  wire  io_rst_reg_reset; // @[AsyncResetReg.scala 89:21]
+  wire  io_rst_reg_io_d; // @[AsyncResetReg.scala 89:21]
+  wire  io_rst_reg_io_q; // @[AsyncResetReg.scala 89:21]
+  wire  io_rst_reg_io_en; // @[AsyncResetReg.scala 89:21]
+  wire  _scale_unlocked_writeAny_T_20 = scale_io_regs_cfg_write_ip_0 | scale_io_regs_cfg_write_gang_0 |
+    scale_io_regs_cfg_write_extra_0 | scale_io_regs_cfg_write_center_0 | scale_io_regs_cfg_write_running |
+    scale_io_regs_cfg_write_countAlways | scale_io_regs_cfg_write_deglitch | scale_io_regs_cfg_write_zerocmp |
+    scale_io_regs_cfg_write_sticky | scale_io_regs_cfg_write_scale; // @[Timer.scala 139:13]
+  wire  scale_unlocked_writeAny = scale_io_regs_feed_write_valid | scale_io_regs_cmp_0_write_valid |
+    scale_io_regs_s_write_valid | scale_io_regs_countHi_write_valid | scale_io_regs_countLo_write_valid |
+    _scale_unlocked_writeAny_T_20; // @[WatchdogTimer.scala 19:16]
+  wire  unlocked = scale_unlocked_reg_io_q; // @[WatchdogTimer.scala 40:114]
+  wire  _scale_T = scale_io_regs_cfg_write_scale & unlocked; // @[Timer.scala 202:84]
+  reg [3:0] scale; // @[Reg.scala 16:16]
+  wire  _cmp_T = scale_io_regs_cmp_0_write_valid & unlocked; // @[Timer.scala 204:82]
+  reg [15:0] cmp_0; // @[Reg.scala 16:16]
+  reg  countEn_corerstSynchronized_x4; // @[WatchdogTimer.scala 33:45]
+  reg  countEn_corerstSynchronized; // @[WatchdogTimer.scala 33:34]
+  wire  countAlways = countEn_countAlways_reg_io_q; // @[WatchdogTimer.scala 30:123]
+  wire  countAwake = countEn_countAwake_reg_io_q; // @[WatchdogTimer.scala 31:123]
+  wire  countEn = countAlways | countAwake & ~countEn_corerstSynchronized; // @[WatchdogTimer.scala 34:17]
+  reg [4:0] small_; // @[Counters.scala 45:37]
+  wire [4:0] _GEN_10 = {{4'd0}, countEn}; // @[Counters.scala 46:33]
+  wire [5:0] nextSmall = small_ + _GEN_10; // @[Counters.scala 46:33]
+  reg [25:0] large_; // @[Counters.scala 50:27]
+  wire [25:0] _large_r_T_1 = large_ + 26'h1; // @[Counters.scala 51:55]
+  wire [25:0] _GEN_3 = nextSmall[5] ? _large_r_T_1 : large_; // @[Counters.scala 50:27 51:{46,50}]
+  wire [30:0] value = {large_,small_}; // @[Cat.scala 31:58]
+  wire [30:0] _s_T = value >> scale; // @[Timer.scala 209:28]
+  wire [15:0] s = _s_T[15:0]; // @[Timer.scala 209:37]
+  wire  elapsed_0 = s >= cmp_0; // @[Timer.scala 211:90]
+  wire  feed = unlocked & scale_io_regs_feed_write_valid & scale_io_regs_feed_write_bits == 32'hd09f00d; // @[WatchdogTimer.scala 44:42]
+  wire  _countReset_zerocmp_T = scale_io_regs_cfg_write_zerocmp & unlocked; // @[Timer.scala 203:95]
+  reg  zerocmp; // @[Reg.scala 16:16]
+  wire  countReset = feed | zerocmp & elapsed_0; // @[Timer.scala 212:35]
+  wire [5:0] _GEN_5 = countReset ? 6'h0 : nextSmall; // @[Timer.scala 213:21 Counters.scala 65:11]
+  wire [25:0] _GEN_6 = countReset ? 26'h0 : _GEN_3; // @[Timer.scala 213:21 Counters.scala 66:23]
+  wire [31:0] _T_3 = {1'h0,scale_io_regs_countLo_write_bits}; // @[Cat.scala 31:58]
+  wire [31:0] _GEN_7 = scale_io_regs_countLo_write_valid & unlocked ? _T_3 : {{26'd0}, _GEN_5}; // @[Timer.scala 214:50 Counters.scala 65:11]
+  wire [26:0] _GEN_8 = scale_io_regs_countLo_write_valid & unlocked ? _T_3[31:5] : {{1'd0}, _GEN_6}; // @[Timer.scala 214:50 Counters.scala 66:23]
+  wire  _ip_T = scale_io_regs_cfg_write__ip_0 | elapsed_0; // @[WatchdogTimer.scala 37:69]
+  wire  _ip_T_2 = scale_io_regs_cfg_write_ip_0 & unlocked | elapsed_0; // @[WatchdogTimer.scala 37:124]
+  reg  ip_0; // @[Reg.scala 16:16]
+  wire  rsten = io_regs_cfg_read_sticky_rsten_reg_io_q; // @[WatchdogTimer.scala 36:116]
+  AsyncResetRegVec_w1_i0 scale_unlocked_reg ( // @[AsyncResetReg.scala 89:21]
+    .clock(scale_unlocked_reg_clock),
+    .reset(scale_unlocked_reg_reset),
+    .io_d(scale_unlocked_reg_io_d),
+    .io_q(scale_unlocked_reg_io_q),
+    .io_en(scale_unlocked_reg_io_en)
+  );
+  AsyncResetRegVec_w1_i0 countEn_countAlways_reg ( // @[AsyncResetReg.scala 89:21]
+    .clock(countEn_countAlways_reg_clock),
+    .reset(countEn_countAlways_reg_reset),
+    .io_d(countEn_countAlways_reg_io_d),
+    .io_q(countEn_countAlways_reg_io_q),
+    .io_en(countEn_countAlways_reg_io_en)
+  );
+  AsyncResetRegVec_w1_i0 countEn_countAwake_reg ( // @[AsyncResetReg.scala 89:21]
+    .clock(countEn_countAwake_reg_clock),
+    .reset(countEn_countAwake_reg_reset),
+    .io_d(countEn_countAwake_reg_io_d),
+    .io_q(countEn_countAwake_reg_io_q),
+    .io_en(countEn_countAwake_reg_io_en)
+  );
+  AsyncResetRegVec_w1_i0 io_regs_cfg_read_sticky_rsten_reg ( // @[AsyncResetReg.scala 89:21]
+    .clock(io_regs_cfg_read_sticky_rsten_reg_clock),
+    .reset(io_regs_cfg_read_sticky_rsten_reg_reset),
+    .io_d(io_regs_cfg_read_sticky_rsten_reg_io_d),
+    .io_q(io_regs_cfg_read_sticky_rsten_reg_io_q),
+    .io_en(io_regs_cfg_read_sticky_rsten_reg_io_en)
+  );
+  AsyncResetRegVec_w1_i0 io_rst_reg ( // @[AsyncResetReg.scala 89:21]
+    .clock(io_rst_reg_clock),
+    .reset(io_rst_reg_reset),
+    .io_d(io_rst_reg_io_d),
+    .io_q(io_rst_reg_io_q),
+    .io_en(io_rst_reg_io_en)
+  );
+  assign scale_io_regs_cfg_read_ip_0 = ip_0; // @[Timer.scala 218:23]
+  assign scale_io_regs_cfg_read_running = countEn_countAwake_reg_io_q; // @[WatchdogTimer.scala 31:123]
+  assign scale_io_regs_cfg_read_countAlways = countEn_countAlways_reg_io_q; // @[WatchdogTimer.scala 30:123]
+  assign scale_io_regs_cfg_read_zerocmp = zerocmp; // @[Timer.scala 225:28]
+  assign scale_io_regs_cfg_read_sticky = io_regs_cfg_read_sticky_rsten_reg_io_q; // @[WatchdogTimer.scala 36:116]
+  assign scale_io_regs_cfg_read_scale = scale; // @[Timer.scala 227:26]
+  assign scale_io_regs_countLo_read = {large_,small_}; // @[Cat.scala 31:58]
+  assign scale_io_regs_s_read = _s_T[15:0]; // @[Timer.scala 209:37]
+  assign scale_io_regs_cmp_0_read = cmp_0; // @[Timer.scala 232:53]
+  assign scale_io_regs_key_read = {{31'd0}, unlocked}; // @[Timer.scala 234:20]
+  assign scale_io_ip_0 = ip_0; // @[Timer.scala 235:9]
+  assign scale_io_rst = io_rst_reg_io_q; // @[WatchdogTimer.scala 66:10]
+  assign scale_unlocked_reg_clock = clock;
+  assign scale_unlocked_reg_reset = reset;
+  assign scale_unlocked_reg_io_d = scale_io_regs_key_write_bits == 32'h51f15e & ~scale_unlocked_writeAny; // @[WatchdogTimer.scala 40:64]
+  assign scale_unlocked_reg_io_en = scale_io_regs_key_write_valid | scale_unlocked_writeAny; // @[WatchdogTimer.scala 40:102]
+  assign countEn_countAlways_reg_clock = clock;
+  assign countEn_countAlways_reg_reset = reset;
+  assign countEn_countAlways_reg_io_d = scale_io_regs_cfg_write__countAlways; // @[AsyncResetReg.scala 91:14]
+  assign countEn_countAlways_reg_io_en = scale_io_regs_cfg_write_countAlways & unlocked; // @[WatchdogTimer.scala 30:111]
+  assign countEn_countAwake_reg_clock = clock;
+  assign countEn_countAwake_reg_reset = reset;
+  assign countEn_countAwake_reg_io_d = scale_io_regs_cfg_write__running; // @[AsyncResetReg.scala 91:14]
+  assign countEn_countAwake_reg_io_en = scale_io_regs_cfg_write_running & unlocked; // @[WatchdogTimer.scala 31:111]
+  assign io_regs_cfg_read_sticky_rsten_reg_clock = clock;
+  assign io_regs_cfg_read_sticky_rsten_reg_reset = reset;
+  assign io_regs_cfg_read_sticky_rsten_reg_io_d = scale_io_regs_cfg_write__sticky; // @[AsyncResetReg.scala 91:14]
+  assign io_regs_cfg_read_sticky_rsten_reg_io_en = scale_io_regs_cfg_write_sticky & unlocked; // @[WatchdogTimer.scala 36:104]
+  assign io_rst_reg_clock = clock;
+  assign io_rst_reg_reset = reset;
+  assign io_rst_reg_io_d = 1'h1; // @[AsyncResetReg.scala 91:14]
+  assign io_rst_reg_io_en = rsten & elapsed_0; // @[WatchdogTimer.scala 66:45]
+  always @(posedge clock) begin
+    if (_scale_T) begin // @[Reg.scala 17:18]
+      scale <= scale_io_regs_cfg_write__scale; // @[Reg.scala 17:22]
+    end
+    if (_cmp_T) begin // @[Reg.scala 17:18]
+      cmp_0 <= scale_io_regs_cmp_0_write_bits; // @[Reg.scala 17:22]
+    end
+    countEn_corerstSynchronized_x4 <= scale_io_corerst; // @[WatchdogTimer.scala 33:45]
+    countEn_corerstSynchronized <= countEn_corerstSynchronized_x4; // @[WatchdogTimer.scala 33:34]
+    if (reset) begin // @[Counters.scala 45:37]
+      small_ <= 5'h0; // @[Counters.scala 45:37]
+    end else begin
+      small_ <= _GEN_7[4:0];
+    end
+    if (reset) begin // @[Counters.scala 50:27]
+      large_ <= 26'h0; // @[Counters.scala 50:27]
+    end else begin
+      large_ <= _GEN_8[25:0];
+    end
+    if (_countReset_zerocmp_T) begin // @[Reg.scala 17:18]
+      zerocmp <= scale_io_regs_cfg_write__zerocmp; // @[Reg.scala 17:22]
+    end
+    if (_ip_T_2) begin // @[Reg.scala 17:18]
+      ip_0 <= _ip_T; // @[Reg.scala 17:22]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  scale = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  cmp_0 = _RAND_1[15:0];
+  _RAND_2 = {1{`RANDOM}};
+  countEn_corerstSynchronized_x4 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  countEn_corerstSynchronized = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  small_ = _RAND_4[4:0];
+  _RAND_5 = {1{`RANDOM}};
+  large_ = _RAND_5[25:0];
+  _RAND_6 = {1{`RANDOM}};
+  zerocmp = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ip_0 = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module Queue_23(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input         io_enq_bits_read,
+  input  [9:0]  io_enq_bits_index,
+  input  [31:0] io_enq_bits_data,
+  input  [3:0]  io_enq_bits_mask,
+  input  [6:0]  io_enq_bits_extra_tlrr_extra_source,
+  input  [1:0]  io_enq_bits_extra_tlrr_extra_size,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output        io_deq_bits_read,
+  output [9:0]  io_deq_bits_index,
+  output [31:0] io_deq_bits_data,
+  output [3:0]  io_deq_bits_mask,
+  output [6:0]  io_deq_bits_extra_tlrr_extra_source,
+  output [1:0]  io_deq_bits_extra_tlrr_extra_size
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_REG_INIT
+  reg  ram_read [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_read_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_read_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_read_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_read_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_read_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_read_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_read_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [9:0] ram_index [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_index_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_index_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [9:0] ram_index_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [9:0] ram_index_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_index_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_index_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_index_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [31:0] ram_data [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_data_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31:0] ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_data_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [3:0] ram_mask [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_mask_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [3:0] ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_mask_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [6:0] ram_extra_tlrr_extra_source [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [6:0] ram_extra_tlrr_extra_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [6:0] ram_extra_tlrr_extra_source_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_source_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [1:0] ram_extra_tlrr_extra_size [0:0]; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_extra_tlrr_extra_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1:0] ram_extra_tlrr_extra_size_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_extra_tlrr_extra_size_MPORT_en; // @[Decoupled.scala 259:95]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  empty = ~maybe_full; // @[Decoupled.scala 264:28]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  assign ram_read_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_read_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_read_io_deq_bits_MPORT_data = ram_read[ram_read_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_read_MPORT_data = io_enq_bits_read;
+  assign ram_read_MPORT_addr = 1'h0;
+  assign ram_read_MPORT_mask = 1'h1;
+  assign ram_read_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_index_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_index_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_index_io_deq_bits_MPORT_data = ram_index[ram_index_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_index_MPORT_data = io_enq_bits_index;
+  assign ram_index_MPORT_addr = 1'h0;
+  assign ram_index_MPORT_mask = 1'h1;
+  assign ram_index_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_data_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_data_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_data_io_deq_bits_MPORT_data = ram_data[ram_data_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_data_MPORT_data = io_enq_bits_data;
+  assign ram_data_MPORT_addr = 1'h0;
+  assign ram_data_MPORT_mask = 1'h1;
+  assign ram_data_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_mask_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_mask_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_mask_io_deq_bits_MPORT_data = ram_mask[ram_mask_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_mask_MPORT_data = io_enq_bits_mask;
+  assign ram_mask_MPORT_addr = 1'h0;
+  assign ram_mask_MPORT_mask = 1'h1;
+  assign ram_mask_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_extra_tlrr_extra_source_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_extra_tlrr_extra_source_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_extra_tlrr_extra_source_io_deq_bits_MPORT_data =
+    ram_extra_tlrr_extra_source[ram_extra_tlrr_extra_source_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_extra_tlrr_extra_source_MPORT_data = io_enq_bits_extra_tlrr_extra_source;
+  assign ram_extra_tlrr_extra_source_MPORT_addr = 1'h0;
+  assign ram_extra_tlrr_extra_source_MPORT_mask = 1'h1;
+  assign ram_extra_tlrr_extra_source_MPORT_en = io_enq_ready & io_enq_valid;
+  assign ram_extra_tlrr_extra_size_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_extra_tlrr_extra_size_io_deq_bits_MPORT_addr = 1'h0;
+  assign ram_extra_tlrr_extra_size_io_deq_bits_MPORT_data =
+    ram_extra_tlrr_extra_size[ram_extra_tlrr_extra_size_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_extra_tlrr_extra_size_MPORT_data = io_enq_bits_extra_tlrr_extra_size;
+  assign ram_extra_tlrr_extra_size_MPORT_addr = 1'h0;
+  assign ram_extra_tlrr_extra_size_MPORT_mask = 1'h1;
+  assign ram_extra_tlrr_extra_size_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~maybe_full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits_read = ram_read_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_index = ram_index_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_data = ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_mask = ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_extra_tlrr_extra_source = ram_extra_tlrr_extra_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_deq_bits_extra_tlrr_extra_size = ram_extra_tlrr_extra_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  always @(posedge clock) begin
+    if (ram_read_MPORT_en & ram_read_MPORT_mask) begin
+      ram_read[ram_read_MPORT_addr] <= ram_read_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_index_MPORT_en & ram_index_MPORT_mask) begin
+      ram_index[ram_index_MPORT_addr] <= ram_index_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_data_MPORT_en & ram_data_MPORT_mask) begin
+      ram_data[ram_data_MPORT_addr] <= ram_data_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_mask_MPORT_en & ram_mask_MPORT_mask) begin
+      ram_mask[ram_mask_MPORT_addr] <= ram_mask_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_extra_tlrr_extra_source_MPORT_en & ram_extra_tlrr_extra_source_MPORT_mask) begin
+      ram_extra_tlrr_extra_source[ram_extra_tlrr_extra_source_MPORT_addr] <= ram_extra_tlrr_extra_source_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (ram_extra_tlrr_extra_size_MPORT_en & ram_extra_tlrr_extra_size_MPORT_mask) begin
+      ram_extra_tlrr_extra_size[ram_extra_tlrr_extra_size_MPORT_addr] <= ram_extra_tlrr_extra_size_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_read[initvar] = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_index[initvar] = _RAND_1[9:0];
+  _RAND_2 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_data[initvar] = _RAND_2[31:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_extra_tlrr_extra_source[initvar] = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_extra_tlrr_extra_size[initvar] = _RAND_5[1:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_6 = {1{`RANDOM}};
+  maybe_full = _RAND_6[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMockAON(
+  input         clock,
+  input         reset,
+  output        auto_int_out_0,
+  output        auto_int_out_1,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [1:0]  auto_in_a_bits_size,
+  input  [6:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_size,
+  output [6:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  output        io_moff_corerst,
+  output        io_wdog_rst,
+  output        io_lfclk,
+  input         io_lfextclk,
+  input         io_resetCauses_wdogrst,
+  input         io_resetCauses_erst
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+`endif // RANDOMIZE_REG_INIT
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  rtc_clock; // @[MockAON.scala 62:19]
+  wire  rtc_reset; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_regs_cfg_write__countAlways; // @[MockAON.scala 62:19]
+  wire [3:0] rtc_scale_io_regs_cfg_write__scale; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_regs_cfg_read_ip_0; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_regs_cfg_read_countAlways; // @[MockAON.scala 62:19]
+  wire [3:0] rtc_scale_io_regs_cfg_read_scale; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_regs_cfg_write_countAlways; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_regs_cfg_write_scale; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_regs_countLo_write_valid; // @[MockAON.scala 62:19]
+  wire [31:0] rtc_scale_io_regs_countLo_write_bits; // @[MockAON.scala 62:19]
+  wire [31:0] rtc_scale_io_regs_countLo_read; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_regs_countHi_write_valid; // @[MockAON.scala 62:19]
+  wire [31:0] rtc_scale_io_regs_countHi_write_bits; // @[MockAON.scala 62:19]
+  wire [31:0] rtc_scale_io_regs_countHi_read; // @[MockAON.scala 62:19]
+  wire [31:0] rtc_scale_io_regs_s_read; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_regs_cmp_0_write_valid; // @[MockAON.scala 62:19]
+  wire [31:0] rtc_scale_io_regs_cmp_0_write_bits; // @[MockAON.scala 62:19]
+  wire [31:0] rtc_scale_io_regs_cmp_0_read; // @[MockAON.scala 62:19]
+  wire  rtc_scale_io_ip_0; // @[MockAON.scala 62:19]
+  wire  pmu_clock; // @[MockAON.scala 64:19]
+  wire  pmu_reset; // @[MockAON.scala 64:19]
+  wire  pmu_io_wakeup_rtc; // @[MockAON.scala 64:19]
+  wire  pmu_io_control_corerst; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_ie_write_valid; // @[MockAON.scala 64:19]
+  wire [3:0] pmu_io_regs_ie_write_bits; // @[MockAON.scala 64:19]
+  wire [3:0] pmu_io_regs_ie_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_cause_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_cause_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleep_write_valid; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_key_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_key_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_key_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_wakeupProgram_0_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_0_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_0_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_wakeupProgram_1_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_1_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_1_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_wakeupProgram_2_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_2_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_2_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_wakeupProgram_3_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_3_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_3_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_wakeupProgram_4_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_4_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_4_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_wakeupProgram_5_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_5_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_5_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_wakeupProgram_6_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_6_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_6_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_wakeupProgram_7_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_7_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_wakeupProgram_7_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleepProgram_0_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_0_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_0_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleepProgram_1_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_1_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_1_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleepProgram_2_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_2_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_2_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleepProgram_3_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_3_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_3_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleepProgram_4_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_4_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_4_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleepProgram_5_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_5_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_5_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleepProgram_6_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_6_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_6_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_regs_sleepProgram_7_write_valid; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_7_write_bits; // @[MockAON.scala 64:19]
+  wire [31:0] pmu_io_regs_sleepProgram_7_read; // @[MockAON.scala 64:19]
+  wire  pmu_io_resetCauses_wdogrst; // @[MockAON.scala 64:19]
+  wire  pmu_io_resetCauses_erst; // @[MockAON.scala 64:19]
+  wire  wdog_clock; // @[MockAON.scala 79:20]
+  wire  wdog_reset; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write__ip_0; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write__running; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write__countAlways; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write__zerocmp; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write__sticky; // @[MockAON.scala 79:20]
+  wire [3:0] wdog_scale_io_regs_cfg_write__scale; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_read_ip_0; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_read_running; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_read_countAlways; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_read_zerocmp; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_read_sticky; // @[MockAON.scala 79:20]
+  wire [3:0] wdog_scale_io_regs_cfg_read_scale; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_ip_0; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_gang_0; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_extra_0; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_center_0; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_running; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_countAlways; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_deglitch; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_zerocmp; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_sticky; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cfg_write_scale; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_countLo_write_valid; // @[MockAON.scala 79:20]
+  wire [30:0] wdog_scale_io_regs_countLo_write_bits; // @[MockAON.scala 79:20]
+  wire [30:0] wdog_scale_io_regs_countLo_read; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_countHi_write_valid; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_s_write_valid; // @[MockAON.scala 79:20]
+  wire [15:0] wdog_scale_io_regs_s_read; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_cmp_0_write_valid; // @[MockAON.scala 79:20]
+  wire [15:0] wdog_scale_io_regs_cmp_0_write_bits; // @[MockAON.scala 79:20]
+  wire [15:0] wdog_scale_io_regs_cmp_0_read; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_feed_write_valid; // @[MockAON.scala 79:20]
+  wire [31:0] wdog_scale_io_regs_feed_write_bits; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_regs_key_write_valid; // @[MockAON.scala 79:20]
+  wire [31:0] wdog_scale_io_regs_key_write_bits; // @[MockAON.scala 79:20]
+  wire [31:0] wdog_scale_io_regs_key_read; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_ip_0; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_corerst; // @[MockAON.scala 79:20]
+  wire  wdog_scale_io_rst; // @[MockAON.scala 79:20]
+  wire  out_back_clock; // @[Decoupled.scala 361:21]
+  wire  out_back_reset; // @[Decoupled.scala 361:21]
+  wire  out_back_io_enq_ready; // @[Decoupled.scala 361:21]
+  wire  out_back_io_enq_valid; // @[Decoupled.scala 361:21]
+  wire  out_back_io_enq_bits_read; // @[Decoupled.scala 361:21]
+  wire [9:0] out_back_io_enq_bits_index; // @[Decoupled.scala 361:21]
+  wire [31:0] out_back_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire [3:0] out_back_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [6:0] out_back_io_enq_bits_extra_tlrr_extra_source; // @[Decoupled.scala 361:21]
+  wire [1:0] out_back_io_enq_bits_extra_tlrr_extra_size; // @[Decoupled.scala 361:21]
+  wire  out_back_io_deq_ready; // @[Decoupled.scala 361:21]
+  wire  out_back_io_deq_valid; // @[Decoupled.scala 361:21]
+  wire  out_back_io_deq_bits_read; // @[Decoupled.scala 361:21]
+  wire [9:0] out_back_io_deq_bits_index; // @[Decoupled.scala 361:21]
+  wire [31:0] out_back_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire [3:0] out_back_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [6:0] out_back_io_deq_bits_extra_tlrr_extra_source; // @[Decoupled.scala 361:21]
+  wire [1:0] out_back_io_deq_bits_extra_tlrr_extra_size; // @[Decoupled.scala 361:21]
+  reg [31:0] backupRegs_0; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_1; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_2; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_3; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_4; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_5; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_6; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_7; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_8; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_9; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_10; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_11; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_12; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_13; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_14; // @[MockAON.scala 87:47]
+  reg [31:0] backupRegs_15; // @[MockAON.scala 87:47]
+  wire [9:0] out_bindex = out_back_io_deq_bits_index & 10'h380; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_1 = out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backMask_T_5 = out_back_io_deq_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_7 = out_back_io_deq_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = out_back_io_deq_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_11 = out_back_io_deq_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_backMask = {_out_backMask_T_11,_out_backMask_T_9,_out_backMask_T_7,_out_backMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_womask = &out_backMask; // @[RegisterRouter.scala 83:24]
+  wire [6:0] out_oindex = {out_back_io_deq_bits_index[6],out_back_io_deq_bits_index[5],out_back_io_deq_bits_index[4],
+    out_back_io_deq_bits_index[3],out_back_io_deq_bits_index[2],out_back_io_deq_bits_index[1],out_back_io_deq_bits_index
+    [0]}; // @[Cat.scala 31:58]
+  wire [127:0] _out_backSel_T = 128'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_69 = _out_backSel_T[69]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_0 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_69 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_100 = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_105 = pmu_io_regs_wakeupProgram_5_read; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_1 = &out_backMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_0 = _out_backSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_0 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_T_116 = wdog_scale_io_regs_cfg_read_scale; // @[RegisterRouter.scala 83:24]
+  wire [4:0] out_prepend = {1'h0,_out_T_116}; // @[Cat.scala 31:58]
+  wire [7:0] _out_T_125 = {{3'd0}, out_prepend}; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_3 = &out_backMask[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_4 = &out_backMask[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_5 = &out_backMask[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_7 = &out_backMask[12]; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_8 = &out_backMask[13]; // @[RegisterRouter.scala 83:24]
+  wire [14:0] out_prepend_7 = {1'h0,wdog_scale_io_regs_cfg_read_running,wdog_scale_io_regs_cfg_read_countAlways,1'h0,1'h0
+    ,wdog_scale_io_regs_cfg_read_zerocmp,wdog_scale_io_regs_cfg_read_sticky,_out_T_125}; // @[Cat.scala 31:58]
+  wire [15:0] _out_T_196 = {{1'd0}, out_prepend_7}; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_10 = &out_backMask[16]; // @[RegisterRouter.scala 83:24]
+  wire [17:0] out_prepend_9 = {1'h0,1'h0,_out_T_196}; // @[Cat.scala 31:58]
+  wire [19:0] _out_T_214 = {{2'd0}, out_prepend_9}; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_12 = &out_backMask[20]; // @[RegisterRouter.scala 83:24]
+  wire [21:0] out_prepend_11 = {1'h0,1'h0,_out_T_214}; // @[Cat.scala 31:58]
+  wire [23:0] _out_T_232 = {{2'd0}, out_prepend_11}; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_14 = &out_backMask[24]; // @[RegisterRouter.scala 83:24]
+  wire [25:0] out_prepend_13 = {1'h0,1'h0,_out_T_232}; // @[Cat.scala 31:58]
+  wire [27:0] _out_T_250 = {{2'd0}, out_prepend_13}; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_16 = &out_backMask[28]; // @[RegisterRouter.scala 83:24]
+  wire [29:0] out_prepend_15 = {1'h0,wdog_scale_io_regs_cfg_read_ip_0,_out_T_250}; // @[Cat.scala 31:58]
+  wire [31:0] _out_T_270 = {{2'd0}, out_prepend_15}; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_42 = _out_backSel_T[42]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_18 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_42 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_18 = out_woready_18 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_24 = _out_backSel_T[24]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_19 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_24 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_288 = rtc_scale_io_regs_cmp_0_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_37 = _out_backSel_T[37]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_20 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_37 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_20 = out_woready_20 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_304 = rtc_scale_io_regs_s_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_46 = _out_backSel_T[46]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_22 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_46 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_22 = out_woready_22 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_78 = _out_backSel_T[78]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_23 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_78 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_318 = pmu_io_regs_sleepProgram_6_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_74 = _out_backSel_T[74]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_24 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_74 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_325 = pmu_io_regs_sleepProgram_2_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_6 = _out_backSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_25 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_6 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_38 = _out_backSel_T[38]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_26 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_38 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_26 = out_woready_26 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_70 = _out_backSel_T[70]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_27 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_70 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_350 = pmu_io_regs_wakeupProgram_6_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_33 = _out_backSel_T[33]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_28 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_33 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_28 = out_woready_28 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_65 = _out_backSel_T[65]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_29 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_65 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_364 = pmu_io_regs_wakeupProgram_1_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_77 = _out_backSel_T[77]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_30 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_77 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_371 = pmu_io_regs_sleepProgram_5_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_41 = _out_backSel_T[41]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_31 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_41 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_31 = out_woready_31 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_73 = _out_backSel_T[73]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_32 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_73 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_385 = pmu_io_regs_sleepProgram_1_read; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_33 = &out_backMask[30:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_2 = _out_backSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_33 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_2 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [30:0] _out_T_396 = wdog_scale_io_regs_countLo_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_32 = _out_backSel_T[32]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_34 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_32 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_34 = out_woready_34 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_34 = _out_backSel_T[34]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_35 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_34 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_35 = out_woready_35 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_45 = _out_backSel_T[45]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_36 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_45 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_36 = out_woready_36 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_64 = _out_backSel_T[64]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_37 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_64 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_424 = pmu_io_regs_wakeupProgram_0_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_44 = _out_backSel_T[44]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_39 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_44 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_39 = out_woready_39 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_71 = _out_backSel_T[71]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_40 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_71 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_447 = pmu_io_regs_wakeupProgram_7_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_81 = _out_backSel_T[81]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_41 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_81 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_454 = pmu_io_regs_cause_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_76 = _out_backSel_T[76]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_42 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_76 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_461 = pmu_io_regs_sleepProgram_4_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_7 = _out_backSel_T[7]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_43 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_7 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_472 = wdog_scale_io_regs_key_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_39 = _out_backSel_T[39]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_44 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_39 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_44 = out_woready_44 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_66 = _out_backSel_T[66]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_45 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_66 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_486 = pmu_io_regs_wakeupProgram_2_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_3 = _out_backSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_46 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_3 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_80 = _out_backSel_T[80]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_47 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_80 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_T_502 = pmu_io_regs_ie_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_35 = _out_backSel_T[35]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_48 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_35 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_48 = out_woready_48 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_18 = _out_backSel_T[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_49 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_18 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_520 = rtc_scale_io_regs_countLo_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_67 = _out_backSel_T[67]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_50 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_67 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_527 = pmu_io_regs_wakeupProgram_3_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_16 = _out_backSel_T[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_51 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_16 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_T_538 = rtc_scale_io_regs_cfg_read_scale; // @[RegisterRouter.scala 83:24]
+  wire [4:0] out_prepend_16 = {1'h0,_out_T_538}; // @[Cat.scala 31:58]
+  wire [7:0] _out_T_547 = {{3'd0}, out_prepend_16}; // @[RegisterRouter.scala 83:24]
+  wire [14:0] out_prepend_23 = {1'h0,1'h0,rtc_scale_io_regs_cfg_read_countAlways,1'h0,1'h0,1'h0,1'h0,_out_T_547}; // @[Cat.scala 31:58]
+  wire [15:0] _out_T_612 = {{1'd0}, out_prepend_23}; // @[RegisterRouter.scala 83:24]
+  wire [17:0] out_prepend_25 = {1'h0,1'h0,_out_T_612}; // @[Cat.scala 31:58]
+  wire [19:0] _out_T_630 = {{2'd0}, out_prepend_25}; // @[RegisterRouter.scala 83:24]
+  wire [21:0] out_prepend_27 = {1'h0,1'h0,_out_T_630}; // @[Cat.scala 31:58]
+  wire [23:0] _out_T_648 = {{2'd0}, out_prepend_27}; // @[RegisterRouter.scala 83:24]
+  wire [25:0] out_prepend_29 = {1'h0,1'h0,_out_T_648}; // @[Cat.scala 31:58]
+  wire [27:0] _out_T_666 = {{2'd0}, out_prepend_29}; // @[RegisterRouter.scala 83:24]
+  wire [29:0] out_prepend_31 = {1'h0,rtc_scale_io_regs_cfg_read_ip_0,_out_T_666}; // @[Cat.scala 31:58]
+  wire [31:0] _out_T_686 = {{2'd0}, out_prepend_31}; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_72 = _out_backSel_T[72]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_68 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_72 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_693 = pmu_io_regs_sleepProgram_0_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_43 = _out_backSel_T[43]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_69 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_43 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_69 = out_woready_69 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_40 = _out_backSel_T[40]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_70 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_40 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_70 = out_woready_70 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_72 = &out_backMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_8 = _out_backSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_72 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_8 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_727 = wdog_scale_io_regs_cmp_0_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_75 = _out_backSel_T[75]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_73 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_75 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_734 = pmu_io_regs_sleepProgram_3_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_82 = _out_backSel_T[82]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_74 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_82 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_36 = _out_backSel_T[36]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_75 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_36 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_75 = out_woready_75 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_19 = _out_backSel_T[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_76 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_19 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_759 = rtc_scale_io_regs_countHi_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_4 = _out_backSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_77 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_4 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_768 = wdog_scale_io_regs_s_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_79 = _out_backSel_T[79]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_78 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_79 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_775 = pmu_io_regs_sleepProgram_7_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_47 = _out_backSel_T[47]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_79 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_47 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_79 = out_woready_79 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_68 = _out_backSel_T[68]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_80 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_68 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_789 = pmu_io_regs_wakeupProgram_4_read; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_83 = _out_backSel_T[83]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_81 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_83 &
+    out_bindex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_796 = pmu_io_regs_key_read; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_528 = 7'h53 == out_oindex ? _out_T_1 : 1'h1; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_529 = 7'h52 == out_oindex ? _out_T_1 : _GEN_528; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_530 = 7'h51 == out_oindex ? _out_T_1 : _GEN_529; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_531 = 7'h50 == out_oindex ? _out_T_1 : _GEN_530; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_532 = 7'h4f == out_oindex ? _out_T_1 : _GEN_531; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_533 = 7'h4e == out_oindex ? _out_T_1 : _GEN_532; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_534 = 7'h4d == out_oindex ? _out_T_1 : _GEN_533; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_535 = 7'h4c == out_oindex ? _out_T_1 : _GEN_534; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_536 = 7'h4b == out_oindex ? _out_T_1 : _GEN_535; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_537 = 7'h4a == out_oindex ? _out_T_1 : _GEN_536; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_538 = 7'h49 == out_oindex ? _out_T_1 : _GEN_537; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_539 = 7'h48 == out_oindex ? _out_T_1 : _GEN_538; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_540 = 7'h47 == out_oindex ? _out_T_1 : _GEN_539; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_541 = 7'h46 == out_oindex ? _out_T_1 : _GEN_540; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_542 = 7'h45 == out_oindex ? _out_T_1 : _GEN_541; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_543 = 7'h44 == out_oindex ? _out_T_1 : _GEN_542; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_544 = 7'h43 == out_oindex ? _out_T_1 : _GEN_543; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_545 = 7'h42 == out_oindex ? _out_T_1 : _GEN_544; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_546 = 7'h41 == out_oindex ? _out_T_1 : _GEN_545; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_547 = 7'h40 == out_oindex ? _out_T_1 : _GEN_546; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_548 = 7'h2f == out_oindex ? _out_T_1 : _GEN_547; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_549 = 7'h2e == out_oindex ? _out_T_1 : _GEN_548; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_550 = 7'h2d == out_oindex ? _out_T_1 : _GEN_549; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_551 = 7'h2c == out_oindex ? _out_T_1 : _GEN_550; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_552 = 7'h2b == out_oindex ? _out_T_1 : _GEN_551; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_553 = 7'h2a == out_oindex ? _out_T_1 : _GEN_552; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_554 = 7'h29 == out_oindex ? _out_T_1 : _GEN_553; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_555 = 7'h28 == out_oindex ? _out_T_1 : _GEN_554; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_556 = 7'h27 == out_oindex ? _out_T_1 : _GEN_555; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_557 = 7'h26 == out_oindex ? _out_T_1 : _GEN_556; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_558 = 7'h25 == out_oindex ? _out_T_1 : _GEN_557; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_559 = 7'h24 == out_oindex ? _out_T_1 : _GEN_558; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_560 = 7'h23 == out_oindex ? _out_T_1 : _GEN_559; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_561 = 7'h22 == out_oindex ? _out_T_1 : _GEN_560; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_562 = 7'h21 == out_oindex ? _out_T_1 : _GEN_561; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_563 = 7'h20 == out_oindex ? _out_T_1 : _GEN_562; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_564 = 7'h18 == out_oindex ? _out_T_1 : _GEN_563; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_565 = 7'h17 == out_oindex ? _out_T_1 : _GEN_564; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_566 = 7'h16 == out_oindex ? _out_T_1 : _GEN_565; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_567 = 7'h14 == out_oindex ? _out_T_1 : _GEN_566; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_568 = 7'h13 == out_oindex ? _out_T_1 : _GEN_567; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_569 = 7'h12 == out_oindex ? _out_T_1 : _GEN_568; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_570 = 7'h10 == out_oindex ? _out_T_1 : _GEN_569; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_571 = 7'h8 == out_oindex ? _out_T_1 : _GEN_570; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_572 = 7'h7 == out_oindex ? _out_T_1 : _GEN_571; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_573 = 7'h6 == out_oindex ? _out_T_1 : _GEN_572; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_574 = 7'h4 == out_oindex ? _out_T_1 : _GEN_573; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_575 = 7'h3 == out_oindex ? _out_T_1 : _GEN_574; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_576 = 7'h2 == out_oindex ? _out_T_1 : _GEN_575; // @[MuxLiteral.scala 53:{26,32}]
+  wire  out_out_bits_data_out = 7'h0 == out_oindex ? _out_T_1 : _GEN_576; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_578 = 7'h53 == out_oindex ? _out_T_796 : 32'h0; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_579 = 7'h52 == out_oindex ? 32'h0 : _GEN_578; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_580 = 7'h51 == out_oindex ? _out_T_454 : _GEN_579; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_581 = 7'h50 == out_oindex ? {{28'd0}, _out_T_502} : _GEN_580; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_582 = 7'h4f == out_oindex ? _out_T_775 : _GEN_581; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_583 = 7'h4e == out_oindex ? _out_T_318 : _GEN_582; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_584 = 7'h4d == out_oindex ? _out_T_371 : _GEN_583; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_585 = 7'h4c == out_oindex ? _out_T_461 : _GEN_584; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_586 = 7'h4b == out_oindex ? _out_T_734 : _GEN_585; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_587 = 7'h4a == out_oindex ? _out_T_325 : _GEN_586; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_588 = 7'h49 == out_oindex ? _out_T_385 : _GEN_587; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_589 = 7'h48 == out_oindex ? _out_T_693 : _GEN_588; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_590 = 7'h47 == out_oindex ? _out_T_447 : _GEN_589; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_591 = 7'h46 == out_oindex ? _out_T_350 : _GEN_590; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_592 = 7'h45 == out_oindex ? _out_T_105 : _GEN_591; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_593 = 7'h44 == out_oindex ? _out_T_789 : _GEN_592; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_594 = 7'h43 == out_oindex ? _out_T_527 : _GEN_593; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_595 = 7'h42 == out_oindex ? _out_T_486 : _GEN_594; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_596 = 7'h41 == out_oindex ? _out_T_364 : _GEN_595; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_597 = 7'h40 == out_oindex ? _out_T_424 : _GEN_596; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_598 = 7'h2f == out_oindex ? backupRegs_15 : _GEN_597; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_599 = 7'h2e == out_oindex ? backupRegs_14 : _GEN_598; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_600 = 7'h2d == out_oindex ? backupRegs_13 : _GEN_599; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_601 = 7'h2c == out_oindex ? backupRegs_12 : _GEN_600; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_602 = 7'h2b == out_oindex ? backupRegs_11 : _GEN_601; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_603 = 7'h2a == out_oindex ? backupRegs_10 : _GEN_602; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_604 = 7'h29 == out_oindex ? backupRegs_9 : _GEN_603; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_605 = 7'h28 == out_oindex ? backupRegs_8 : _GEN_604; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_606 = 7'h27 == out_oindex ? backupRegs_7 : _GEN_605; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_607 = 7'h26 == out_oindex ? backupRegs_6 : _GEN_606; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_608 = 7'h25 == out_oindex ? backupRegs_5 : _GEN_607; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_609 = 7'h24 == out_oindex ? backupRegs_4 : _GEN_608; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_610 = 7'h23 == out_oindex ? backupRegs_3 : _GEN_609; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_611 = 7'h22 == out_oindex ? backupRegs_2 : _GEN_610; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_612 = 7'h21 == out_oindex ? backupRegs_1 : _GEN_611; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_613 = 7'h20 == out_oindex ? backupRegs_0 : _GEN_612; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_614 = 7'h18 == out_oindex ? _out_T_288 : _GEN_613; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_615 = 7'h17 == out_oindex ? 32'h1 : _GEN_614; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_616 = 7'h16 == out_oindex ? 32'h0 : _GEN_615; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_617 = 7'h14 == out_oindex ? _out_T_304 : _GEN_616; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_618 = 7'h13 == out_oindex ? _out_T_759 : _GEN_617; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_619 = 7'h12 == out_oindex ? _out_T_520 : _GEN_618; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_620 = 7'h10 == out_oindex ? _out_T_686 : _GEN_619; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_621 = 7'h8 == out_oindex ? {{16'd0}, _out_T_727} : _GEN_620; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_622 = 7'h7 == out_oindex ? _out_T_472 : _GEN_621; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_623 = 7'h6 == out_oindex ? 32'h0 : _GEN_622; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_624 = 7'h4 == out_oindex ? {{16'd0}, _out_T_768} : _GEN_623; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_625 = 7'h3 == out_oindex ? 32'h0 : _GEN_624; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] _GEN_626 = 7'h2 == out_oindex ? {{1'd0}, _out_T_396} : _GEN_625; // @[MuxLiteral.scala 53:{26,32}]
+  wire [31:0] out_out_bits_data_out_1 = 7'h0 == out_oindex ? _out_T_270 : _GEN_626; // @[MuxLiteral.scala 53:{26,32}]
+  wire  out_bits_read = out_back_io_deq_bits_read; // @[RegisterRouter.scala 83:{24,24}]
+  TLMonitor_55 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  RTC rtc ( // @[MockAON.scala 62:19]
+    .clock(rtc_clock),
+    .reset(rtc_reset),
+    .scale_io_regs_cfg_write__countAlways(rtc_scale_io_regs_cfg_write__countAlways),
+    .scale_io_regs_cfg_write__scale(rtc_scale_io_regs_cfg_write__scale),
+    .scale_io_regs_cfg_read_ip_0(rtc_scale_io_regs_cfg_read_ip_0),
+    .scale_io_regs_cfg_read_countAlways(rtc_scale_io_regs_cfg_read_countAlways),
+    .scale_io_regs_cfg_read_scale(rtc_scale_io_regs_cfg_read_scale),
+    .scale_io_regs_cfg_write_countAlways(rtc_scale_io_regs_cfg_write_countAlways),
+    .scale_io_regs_cfg_write_scale(rtc_scale_io_regs_cfg_write_scale),
+    .scale_io_regs_countLo_write_valid(rtc_scale_io_regs_countLo_write_valid),
+    .scale_io_regs_countLo_write_bits(rtc_scale_io_regs_countLo_write_bits),
+    .scale_io_regs_countLo_read(rtc_scale_io_regs_countLo_read),
+    .scale_io_regs_countHi_write_valid(rtc_scale_io_regs_countHi_write_valid),
+    .scale_io_regs_countHi_write_bits(rtc_scale_io_regs_countHi_write_bits),
+    .scale_io_regs_countHi_read(rtc_scale_io_regs_countHi_read),
+    .scale_io_regs_s_read(rtc_scale_io_regs_s_read),
+    .scale_io_regs_cmp_0_write_valid(rtc_scale_io_regs_cmp_0_write_valid),
+    .scale_io_regs_cmp_0_write_bits(rtc_scale_io_regs_cmp_0_write_bits),
+    .scale_io_regs_cmp_0_read(rtc_scale_io_regs_cmp_0_read),
+    .scale_io_ip_0(rtc_scale_io_ip_0)
+  );
+  PMU pmu ( // @[MockAON.scala 64:19]
+    .clock(pmu_clock),
+    .reset(pmu_reset),
+    .io_wakeup_rtc(pmu_io_wakeup_rtc),
+    .io_control_corerst(pmu_io_control_corerst),
+    .io_regs_ie_write_valid(pmu_io_regs_ie_write_valid),
+    .io_regs_ie_write_bits(pmu_io_regs_ie_write_bits),
+    .io_regs_ie_read(pmu_io_regs_ie_read),
+    .io_regs_cause_write_valid(pmu_io_regs_cause_write_valid),
+    .io_regs_cause_read(pmu_io_regs_cause_read),
+    .io_regs_sleep_write_valid(pmu_io_regs_sleep_write_valid),
+    .io_regs_key_write_valid(pmu_io_regs_key_write_valid),
+    .io_regs_key_write_bits(pmu_io_regs_key_write_bits),
+    .io_regs_key_read(pmu_io_regs_key_read),
+    .io_regs_wakeupProgram_0_write_valid(pmu_io_regs_wakeupProgram_0_write_valid),
+    .io_regs_wakeupProgram_0_write_bits(pmu_io_regs_wakeupProgram_0_write_bits),
+    .io_regs_wakeupProgram_0_read(pmu_io_regs_wakeupProgram_0_read),
+    .io_regs_wakeupProgram_1_write_valid(pmu_io_regs_wakeupProgram_1_write_valid),
+    .io_regs_wakeupProgram_1_write_bits(pmu_io_regs_wakeupProgram_1_write_bits),
+    .io_regs_wakeupProgram_1_read(pmu_io_regs_wakeupProgram_1_read),
+    .io_regs_wakeupProgram_2_write_valid(pmu_io_regs_wakeupProgram_2_write_valid),
+    .io_regs_wakeupProgram_2_write_bits(pmu_io_regs_wakeupProgram_2_write_bits),
+    .io_regs_wakeupProgram_2_read(pmu_io_regs_wakeupProgram_2_read),
+    .io_regs_wakeupProgram_3_write_valid(pmu_io_regs_wakeupProgram_3_write_valid),
+    .io_regs_wakeupProgram_3_write_bits(pmu_io_regs_wakeupProgram_3_write_bits),
+    .io_regs_wakeupProgram_3_read(pmu_io_regs_wakeupProgram_3_read),
+    .io_regs_wakeupProgram_4_write_valid(pmu_io_regs_wakeupProgram_4_write_valid),
+    .io_regs_wakeupProgram_4_write_bits(pmu_io_regs_wakeupProgram_4_write_bits),
+    .io_regs_wakeupProgram_4_read(pmu_io_regs_wakeupProgram_4_read),
+    .io_regs_wakeupProgram_5_write_valid(pmu_io_regs_wakeupProgram_5_write_valid),
+    .io_regs_wakeupProgram_5_write_bits(pmu_io_regs_wakeupProgram_5_write_bits),
+    .io_regs_wakeupProgram_5_read(pmu_io_regs_wakeupProgram_5_read),
+    .io_regs_wakeupProgram_6_write_valid(pmu_io_regs_wakeupProgram_6_write_valid),
+    .io_regs_wakeupProgram_6_write_bits(pmu_io_regs_wakeupProgram_6_write_bits),
+    .io_regs_wakeupProgram_6_read(pmu_io_regs_wakeupProgram_6_read),
+    .io_regs_wakeupProgram_7_write_valid(pmu_io_regs_wakeupProgram_7_write_valid),
+    .io_regs_wakeupProgram_7_write_bits(pmu_io_regs_wakeupProgram_7_write_bits),
+    .io_regs_wakeupProgram_7_read(pmu_io_regs_wakeupProgram_7_read),
+    .io_regs_sleepProgram_0_write_valid(pmu_io_regs_sleepProgram_0_write_valid),
+    .io_regs_sleepProgram_0_write_bits(pmu_io_regs_sleepProgram_0_write_bits),
+    .io_regs_sleepProgram_0_read(pmu_io_regs_sleepProgram_0_read),
+    .io_regs_sleepProgram_1_write_valid(pmu_io_regs_sleepProgram_1_write_valid),
+    .io_regs_sleepProgram_1_write_bits(pmu_io_regs_sleepProgram_1_write_bits),
+    .io_regs_sleepProgram_1_read(pmu_io_regs_sleepProgram_1_read),
+    .io_regs_sleepProgram_2_write_valid(pmu_io_regs_sleepProgram_2_write_valid),
+    .io_regs_sleepProgram_2_write_bits(pmu_io_regs_sleepProgram_2_write_bits),
+    .io_regs_sleepProgram_2_read(pmu_io_regs_sleepProgram_2_read),
+    .io_regs_sleepProgram_3_write_valid(pmu_io_regs_sleepProgram_3_write_valid),
+    .io_regs_sleepProgram_3_write_bits(pmu_io_regs_sleepProgram_3_write_bits),
+    .io_regs_sleepProgram_3_read(pmu_io_regs_sleepProgram_3_read),
+    .io_regs_sleepProgram_4_write_valid(pmu_io_regs_sleepProgram_4_write_valid),
+    .io_regs_sleepProgram_4_write_bits(pmu_io_regs_sleepProgram_4_write_bits),
+    .io_regs_sleepProgram_4_read(pmu_io_regs_sleepProgram_4_read),
+    .io_regs_sleepProgram_5_write_valid(pmu_io_regs_sleepProgram_5_write_valid),
+    .io_regs_sleepProgram_5_write_bits(pmu_io_regs_sleepProgram_5_write_bits),
+    .io_regs_sleepProgram_5_read(pmu_io_regs_sleepProgram_5_read),
+    .io_regs_sleepProgram_6_write_valid(pmu_io_regs_sleepProgram_6_write_valid),
+    .io_regs_sleepProgram_6_write_bits(pmu_io_regs_sleepProgram_6_write_bits),
+    .io_regs_sleepProgram_6_read(pmu_io_regs_sleepProgram_6_read),
+    .io_regs_sleepProgram_7_write_valid(pmu_io_regs_sleepProgram_7_write_valid),
+    .io_regs_sleepProgram_7_write_bits(pmu_io_regs_sleepProgram_7_write_bits),
+    .io_regs_sleepProgram_7_read(pmu_io_regs_sleepProgram_7_read),
+    .io_resetCauses_wdogrst(pmu_io_resetCauses_wdogrst),
+    .io_resetCauses_erst(pmu_io_resetCauses_erst)
+  );
+  WatchdogTimer wdog ( // @[MockAON.scala 79:20]
+    .clock(wdog_clock),
+    .reset(wdog_reset),
+    .scale_io_regs_cfg_write__ip_0(wdog_scale_io_regs_cfg_write__ip_0),
+    .scale_io_regs_cfg_write__running(wdog_scale_io_regs_cfg_write__running),
+    .scale_io_regs_cfg_write__countAlways(wdog_scale_io_regs_cfg_write__countAlways),
+    .scale_io_regs_cfg_write__zerocmp(wdog_scale_io_regs_cfg_write__zerocmp),
+    .scale_io_regs_cfg_write__sticky(wdog_scale_io_regs_cfg_write__sticky),
+    .scale_io_regs_cfg_write__scale(wdog_scale_io_regs_cfg_write__scale),
+    .scale_io_regs_cfg_read_ip_0(wdog_scale_io_regs_cfg_read_ip_0),
+    .scale_io_regs_cfg_read_running(wdog_scale_io_regs_cfg_read_running),
+    .scale_io_regs_cfg_read_countAlways(wdog_scale_io_regs_cfg_read_countAlways),
+    .scale_io_regs_cfg_read_zerocmp(wdog_scale_io_regs_cfg_read_zerocmp),
+    .scale_io_regs_cfg_read_sticky(wdog_scale_io_regs_cfg_read_sticky),
+    .scale_io_regs_cfg_read_scale(wdog_scale_io_regs_cfg_read_scale),
+    .scale_io_regs_cfg_write_ip_0(wdog_scale_io_regs_cfg_write_ip_0),
+    .scale_io_regs_cfg_write_gang_0(wdog_scale_io_regs_cfg_write_gang_0),
+    .scale_io_regs_cfg_write_extra_0(wdog_scale_io_regs_cfg_write_extra_0),
+    .scale_io_regs_cfg_write_center_0(wdog_scale_io_regs_cfg_write_center_0),
+    .scale_io_regs_cfg_write_running(wdog_scale_io_regs_cfg_write_running),
+    .scale_io_regs_cfg_write_countAlways(wdog_scale_io_regs_cfg_write_countAlways),
+    .scale_io_regs_cfg_write_deglitch(wdog_scale_io_regs_cfg_write_deglitch),
+    .scale_io_regs_cfg_write_zerocmp(wdog_scale_io_regs_cfg_write_zerocmp),
+    .scale_io_regs_cfg_write_sticky(wdog_scale_io_regs_cfg_write_sticky),
+    .scale_io_regs_cfg_write_scale(wdog_scale_io_regs_cfg_write_scale),
+    .scale_io_regs_countLo_write_valid(wdog_scale_io_regs_countLo_write_valid),
+    .scale_io_regs_countLo_write_bits(wdog_scale_io_regs_countLo_write_bits),
+    .scale_io_regs_countLo_read(wdog_scale_io_regs_countLo_read),
+    .scale_io_regs_countHi_write_valid(wdog_scale_io_regs_countHi_write_valid),
+    .scale_io_regs_s_write_valid(wdog_scale_io_regs_s_write_valid),
+    .scale_io_regs_s_read(wdog_scale_io_regs_s_read),
+    .scale_io_regs_cmp_0_write_valid(wdog_scale_io_regs_cmp_0_write_valid),
+    .scale_io_regs_cmp_0_write_bits(wdog_scale_io_regs_cmp_0_write_bits),
+    .scale_io_regs_cmp_0_read(wdog_scale_io_regs_cmp_0_read),
+    .scale_io_regs_feed_write_valid(wdog_scale_io_regs_feed_write_valid),
+    .scale_io_regs_feed_write_bits(wdog_scale_io_regs_feed_write_bits),
+    .scale_io_regs_key_write_valid(wdog_scale_io_regs_key_write_valid),
+    .scale_io_regs_key_write_bits(wdog_scale_io_regs_key_write_bits),
+    .scale_io_regs_key_read(wdog_scale_io_regs_key_read),
+    .scale_io_ip_0(wdog_scale_io_ip_0),
+    .scale_io_corerst(wdog_scale_io_corerst),
+    .scale_io_rst(wdog_scale_io_rst)
+  );
+  Queue_23 out_back ( // @[Decoupled.scala 361:21]
+    .clock(out_back_clock),
+    .reset(out_back_reset),
+    .io_enq_ready(out_back_io_enq_ready),
+    .io_enq_valid(out_back_io_enq_valid),
+    .io_enq_bits_read(out_back_io_enq_bits_read),
+    .io_enq_bits_index(out_back_io_enq_bits_index),
+    .io_enq_bits_data(out_back_io_enq_bits_data),
+    .io_enq_bits_mask(out_back_io_enq_bits_mask),
+    .io_enq_bits_extra_tlrr_extra_source(out_back_io_enq_bits_extra_tlrr_extra_source),
+    .io_enq_bits_extra_tlrr_extra_size(out_back_io_enq_bits_extra_tlrr_extra_size),
+    .io_deq_ready(out_back_io_deq_ready),
+    .io_deq_valid(out_back_io_deq_valid),
+    .io_deq_bits_read(out_back_io_deq_bits_read),
+    .io_deq_bits_index(out_back_io_deq_bits_index),
+    .io_deq_bits_data(out_back_io_deq_bits_data),
+    .io_deq_bits_mask(out_back_io_deq_bits_mask),
+    .io_deq_bits_extra_tlrr_extra_source(out_back_io_deq_bits_extra_tlrr_extra_source),
+    .io_deq_bits_extra_tlrr_extra_size(out_back_io_deq_bits_extra_tlrr_extra_size)
+  );
+  assign auto_int_out_0 = wdog_scale_io_ip_0; // @[Nodes.scala 1207:84 MockAON.scala 82:17]
+  assign auto_int_out_1 = rtc_scale_io_ip_0; // @[Nodes.scala 1207:84 MockAON.scala 77:17]
+  assign auto_in_a_ready = out_back_io_enq_ready; // @[Decoupled.scala 365:17 RegisterRouter.scala 83:24]
+  assign auto_in_d_valid = out_back_io_deq_valid; // @[RegisterRouter.scala 83:24]
+  assign auto_in_d_bits_opcode = {{2'd0}, out_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign auto_in_d_bits_size = out_back_io_deq_bits_extra_tlrr_extra_size; // @[RegisterRouter.scala 83:{24,24}]
+  assign auto_in_d_bits_source = out_back_io_deq_bits_extra_tlrr_extra_source; // @[RegisterRouter.scala 83:{24,24}]
+  assign auto_in_d_bits_data = out_out_bits_data_out ? out_out_bits_data_out_1 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign io_moff_corerst = pmu_io_control_corerst; // @[MockAON.scala 65:11]
+  assign io_wdog_rst = wdog_scale_io_rst; // @[MockAON.scala 80:15]
+  assign io_lfclk = io_lfextclk; // @[MockAON.scala 85:12]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = out_back_io_enq_ready; // @[Decoupled.scala 365:17 RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = out_back_io_deq_valid; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, out_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = out_back_io_deq_bits_extra_tlrr_extra_size; // @[RegisterRouter.scala 83:{24,24}]
+  assign monitor_io_in_d_bits_source = out_back_io_deq_bits_extra_tlrr_extra_source; // @[RegisterRouter.scala 83:{24,24}]
+  assign rtc_clock = clock;
+  assign rtc_reset = reset;
+  assign rtc_scale_io_regs_cfg_write__countAlways = out_back_io_deq_bits_data[12]; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_cfg_write__scale = out_back_io_deq_bits_data[3:0]; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_cfg_write_countAlways = out_woready_51 & out_womask_7; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_cfg_write_scale = out_woready_51 & out_womask_1; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_countLo_write_valid = out_woready_49 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_countLo_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_countHi_write_valid = out_woready_76 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_countHi_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_cmp_0_write_valid = out_woready_19 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign rtc_scale_io_regs_cmp_0_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_clock = clock;
+  assign pmu_reset = reset;
+  assign pmu_io_wakeup_rtc = rtc_scale_io_ip_0; // @[MockAON.scala 69:21]
+  assign pmu_io_regs_ie_write_valid = out_woready_47 & out_womask_1; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_ie_write_bits = out_back_io_deq_bits_data[3:0]; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_cause_write_valid = out_woready_41 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleep_write_valid = out_woready_74 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_key_write_valid = out_woready_81 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_key_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_0_write_valid = out_woready_37 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_0_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_1_write_valid = out_woready_29 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_1_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_2_write_valid = out_woready_45 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_2_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_3_write_valid = out_woready_50 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_3_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_4_write_valid = out_woready_80 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_4_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_5_write_valid = out_woready_0 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_5_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_6_write_valid = out_woready_27 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_6_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_7_write_valid = out_woready_40 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_wakeupProgram_7_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_0_write_valid = out_woready_68 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_0_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_1_write_valid = out_woready_32 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_1_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_2_write_valid = out_woready_24 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_2_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_3_write_valid = out_woready_73 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_3_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_4_write_valid = out_woready_42 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_4_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_5_write_valid = out_woready_30 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_5_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_6_write_valid = out_woready_23 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_6_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_7_write_valid = out_woready_78 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_regs_sleepProgram_7_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign pmu_io_resetCauses_wdogrst = io_resetCauses_wdogrst; // @[MockAON.scala 70:22]
+  assign pmu_io_resetCauses_erst = io_resetCauses_erst; // @[MockAON.scala 70:22]
+  assign wdog_clock = clock;
+  assign wdog_reset = reset;
+  assign wdog_scale_io_regs_cfg_write__ip_0 = out_back_io_deq_bits_data[28]; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write__running = out_back_io_deq_bits_data[13]; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write__countAlways = out_back_io_deq_bits_data[12]; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write__zerocmp = out_back_io_deq_bits_data[9]; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write__sticky = out_back_io_deq_bits_data[8]; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write__scale = out_back_io_deq_bits_data[3:0]; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_ip_0 = out_woready_1 & out_womask_16; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_gang_0 = out_woready_1 & out_womask_14; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_extra_0 = out_woready_1 & out_womask_12; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_center_0 = out_woready_1 & out_womask_10; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_running = out_woready_1 & out_womask_8; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_countAlways = out_woready_1 & out_womask_7; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_deglitch = out_woready_1 & out_womask_5; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_zerocmp = out_woready_1 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_sticky = out_woready_1 & out_womask_3; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cfg_write_scale = out_woready_1 & out_womask_1; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_countLo_write_valid = out_woready_33 & out_womask_33; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_countLo_write_bits = out_back_io_deq_bits_data[30:0]; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_countHi_write_valid = out_woready_46 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_s_write_valid = out_woready_77 & out_womask_72; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cmp_0_write_valid = out_woready_72 & out_womask_72; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_cmp_0_write_bits = out_back_io_deq_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_feed_write_valid = out_woready_25 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_feed_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_key_write_valid = out_woready_43 & out_womask; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_regs_key_write_bits = out_back_io_deq_bits_data; // @[RegisterRouter.scala 83:24]
+  assign wdog_scale_io_corerst = pmu_io_control_corerst; // @[MockAON.scala 81:19]
+  assign out_back_clock = clock;
+  assign out_back_reset = reset;
+  assign out_back_io_enq_valid = auto_in_a_valid; // @[RegisterRouter.scala 83:24]
+  assign out_back_io_enq_bits_read = auto_in_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  assign out_back_io_enq_bits_index = auto_in_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  assign out_back_io_enq_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign out_back_io_enq_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign out_back_io_enq_bits_extra_tlrr_extra_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign out_back_io_enq_bits_extra_tlrr_extra_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign out_back_io_deq_ready = auto_in_d_ready; // @[RegisterRouter.scala 83:24]
+  always @(posedge clock) begin
+    if (out_f_woready_34) begin // @[RegField.scala 74:88]
+      backupRegs_0 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_28) begin // @[RegField.scala 74:88]
+      backupRegs_1 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_35) begin // @[RegField.scala 74:88]
+      backupRegs_2 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_48) begin // @[RegField.scala 74:88]
+      backupRegs_3 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_75) begin // @[RegField.scala 74:88]
+      backupRegs_4 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_20) begin // @[RegField.scala 74:88]
+      backupRegs_5 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_26) begin // @[RegField.scala 74:88]
+      backupRegs_6 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_44) begin // @[RegField.scala 74:88]
+      backupRegs_7 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_70) begin // @[RegField.scala 74:88]
+      backupRegs_8 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_31) begin // @[RegField.scala 74:88]
+      backupRegs_9 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_18) begin // @[RegField.scala 74:88]
+      backupRegs_10 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_69) begin // @[RegField.scala 74:88]
+      backupRegs_11 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_39) begin // @[RegField.scala 74:88]
+      backupRegs_12 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_36) begin // @[RegField.scala 74:88]
+      backupRegs_13 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_22) begin // @[RegField.scala 74:88]
+      backupRegs_14 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_79) begin // @[RegField.scala 74:88]
+      backupRegs_15 <= _out_T_100; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  backupRegs_0 = _RAND_0[31:0];
+  _RAND_1 = {1{`RANDOM}};
+  backupRegs_1 = _RAND_1[31:0];
+  _RAND_2 = {1{`RANDOM}};
+  backupRegs_2 = _RAND_2[31:0];
+  _RAND_3 = {1{`RANDOM}};
+  backupRegs_3 = _RAND_3[31:0];
+  _RAND_4 = {1{`RANDOM}};
+  backupRegs_4 = _RAND_4[31:0];
+  _RAND_5 = {1{`RANDOM}};
+  backupRegs_5 = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  backupRegs_6 = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  backupRegs_7 = _RAND_7[31:0];
+  _RAND_8 = {1{`RANDOM}};
+  backupRegs_8 = _RAND_8[31:0];
+  _RAND_9 = {1{`RANDOM}};
+  backupRegs_9 = _RAND_9[31:0];
+  _RAND_10 = {1{`RANDOM}};
+  backupRegs_10 = _RAND_10[31:0];
+  _RAND_11 = {1{`RANDOM}};
+  backupRegs_11 = _RAND_11[31:0];
+  _RAND_12 = {1{`RANDOM}};
+  backupRegs_12 = _RAND_12[31:0];
+  _RAND_13 = {1{`RANDOM}};
+  backupRegs_13 = _RAND_13[31:0];
+  _RAND_14 = {1{`RANDOM}};
+  backupRegs_14 = _RAND_14[31:0];
+  _RAND_15 = {1{`RANDOM}};
+  backupRegs_15 = _RAND_15[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module IsoZero(
+  input   io_in,
+  input   io_iso,
+  output  io_out
+);
+  assign io_out = io_in & ~io_iso; // @[MockAONWrapper.scala 158:19]
+endmodule
+module TLIsolation(
+  input  [2:0]  auto_in_a_mem_0_opcode,
+  input  [2:0]  auto_in_a_mem_0_param,
+  input  [1:0]  auto_in_a_mem_0_size,
+  input  [6:0]  auto_in_a_mem_0_source,
+  input  [28:0] auto_in_a_mem_0_address,
+  input  [3:0]  auto_in_a_mem_0_mask,
+  input  [31:0] auto_in_a_mem_0_data,
+  input         auto_in_a_mem_0_corrupt,
+  output        auto_in_a_ridx,
+  input         auto_in_a_widx,
+  output        auto_in_a_safe_ridx_valid,
+  input         auto_in_a_safe_widx_valid,
+  input         auto_in_a_safe_source_reset_n,
+  output        auto_in_a_safe_sink_reset_n,
+  output [2:0]  auto_in_d_mem_0_opcode,
+  output [1:0]  auto_in_d_mem_0_param,
+  output [1:0]  auto_in_d_mem_0_size,
+  output [6:0]  auto_in_d_mem_0_source,
+  output        auto_in_d_mem_0_sink,
+  output        auto_in_d_mem_0_denied,
+  output [31:0] auto_in_d_mem_0_data,
+  output        auto_in_d_mem_0_corrupt,
+  input         auto_in_d_ridx,
+  output        auto_in_d_widx,
+  input         auto_in_d_safe_ridx_valid,
+  output        auto_in_d_safe_widx_valid,
+  output        auto_in_d_safe_source_reset_n,
+  input         auto_in_d_safe_sink_reset_n,
+  output [2:0]  auto_out_a_mem_0_opcode,
+  output [2:0]  auto_out_a_mem_0_param,
+  output [1:0]  auto_out_a_mem_0_size,
+  output [6:0]  auto_out_a_mem_0_source,
+  output [28:0] auto_out_a_mem_0_address,
+  output [3:0]  auto_out_a_mem_0_mask,
+  output [31:0] auto_out_a_mem_0_data,
+  output        auto_out_a_mem_0_corrupt,
+  input         auto_out_a_ridx,
+  output        auto_out_a_widx,
+  input         auto_out_a_safe_ridx_valid,
+  output        auto_out_a_safe_widx_valid,
+  output        auto_out_a_safe_source_reset_n,
+  input         auto_out_a_safe_sink_reset_n,
+  input  [2:0]  auto_out_d_mem_0_opcode,
+  input  [1:0]  auto_out_d_mem_0_size,
+  input  [6:0]  auto_out_d_mem_0_source,
+  input  [31:0] auto_out_d_mem_0_data,
+  output        auto_out_d_ridx,
+  input         auto_out_d_widx,
+  output        auto_out_d_safe_ridx_valid,
+  input         auto_out_d_safe_widx_valid,
+  input         auto_out_d_safe_source_reset_n,
+  output        auto_out_d_safe_sink_reset_n,
+  input         io_iso_out
+);
+  wire  iso_0_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_0_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_0_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_1_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_1_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_1_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_2_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_2_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_2_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_3_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_3_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_3_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_4_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_4_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_4_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_5_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_5_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_5_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_6_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_6_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_6_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_7_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_7_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_7_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_8_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_8_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_8_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_9_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_9_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_9_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_10_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_10_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_10_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_11_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_11_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_11_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_12_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_12_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_12_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_13_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_13_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_13_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_14_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_14_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_14_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_15_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_15_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_15_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_16_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_16_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_16_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_17_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_17_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_17_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_18_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_18_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_18_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_19_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_19_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_19_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_20_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_20_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_20_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_21_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_21_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_21_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_22_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_22_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_22_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_23_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_23_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_23_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_24_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_24_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_24_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_25_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_25_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_25_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_26_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_26_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_26_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_27_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_27_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_27_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_28_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_28_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_28_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_29_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_29_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_29_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_30_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_30_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_30_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_31_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_31_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_31_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_32_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_32_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_32_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_33_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_33_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_33_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_34_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_34_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_34_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_35_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_35_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_35_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_36_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_36_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_36_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_37_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_37_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_37_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_38_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_38_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_38_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_39_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_39_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_39_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_40_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_40_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_40_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_41_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_41_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_41_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_42_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_42_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_42_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_43_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_43_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_43_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_44_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_44_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_44_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_45_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_45_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_45_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_46_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_46_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_46_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_47_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_47_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_47_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_48_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_48_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_48_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_49_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_49_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_49_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_50_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_50_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_50_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_51_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_51_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_51_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_52_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_52_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_52_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_53_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_53_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_53_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_54_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_54_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_54_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_55_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_55_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_55_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_56_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_56_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_56_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_57_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_57_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_57_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_58_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_58_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_58_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_59_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_59_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_59_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_60_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_60_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_60_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_61_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_61_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_61_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_62_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_62_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_62_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_63_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_63_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_63_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_64_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_64_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_64_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_65_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_65_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_65_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_66_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_66_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_66_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_67_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_67_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_67_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_68_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_68_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_68_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_69_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_69_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_69_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_70_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_70_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_70_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_71_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_71_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_71_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_72_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_72_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_72_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_73_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_73_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_73_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_74_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_74_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_74_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_75_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_75_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_75_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_76_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_76_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_76_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_77_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_77_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_77_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_78_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_78_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_78_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_79_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_79_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_79_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  iso_80_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  iso_80_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  iso_80_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_widx_iso_0_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_widx_iso_0_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_widx_iso_0_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_safe_widx_valid_iso_0_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_safe_widx_valid_iso_0_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_safe_widx_valid_iso_0_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_safe_source_reset_n_iso_0_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_safe_source_reset_n_iso_0_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_a_safe_source_reset_n_iso_0_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_ridx_iso_0_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_ridx_iso_0_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_ridx_iso_0_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_safe_ridx_valid_iso_0_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_safe_ridx_valid_iso_0_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_safe_ridx_valid_iso_0_io_out; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_safe_sink_reset_n_iso_0_io_in; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_safe_sink_reset_n_iso_0_io_iso; // @[MockAONWrapper.scala 166:18]
+  wire  bundleOut_0_d_safe_sink_reset_n_iso_0_io_out; // @[MockAONWrapper.scala 166:18]
+  wire [80:0] _T = {auto_in_a_mem_0_opcode,auto_in_a_mem_0_param,auto_in_a_mem_0_size,auto_in_a_mem_0_source,
+    auto_in_a_mem_0_address,auto_in_a_mem_0_mask,auto_in_a_mem_0_data,auto_in_a_mem_0_corrupt}; // @[Isolation.scala 21:66]
+  wire [9:0] lo_lo_lo = {iso_9_io_out,iso_8_io_out,iso_7_io_out,iso_6_io_out,iso_5_io_out,iso_4_io_out,iso_3_io_out,
+    iso_2_io_out,iso_1_io_out,iso_0_io_out}; // @[Cat.scala 31:58]
+  wire [9:0] lo_lo_hi = {iso_19_io_out,iso_18_io_out,iso_17_io_out,iso_16_io_out,iso_15_io_out,iso_14_io_out,
+    iso_13_io_out,iso_12_io_out,iso_11_io_out,iso_10_io_out}; // @[Cat.scala 31:58]
+  wire [9:0] lo_hi_lo = {iso_29_io_out,iso_28_io_out,iso_27_io_out,iso_26_io_out,iso_25_io_out,iso_24_io_out,
+    iso_23_io_out,iso_22_io_out,iso_21_io_out,iso_20_io_out}; // @[Cat.scala 31:58]
+  wire [9:0] lo_hi_hi = {iso_39_io_out,iso_38_io_out,iso_37_io_out,iso_36_io_out,iso_35_io_out,iso_34_io_out,
+    iso_33_io_out,iso_32_io_out,iso_31_io_out,iso_30_io_out}; // @[Cat.scala 31:58]
+  wire [9:0] hi_lo_lo = {iso_49_io_out,iso_48_io_out,iso_47_io_out,iso_46_io_out,iso_45_io_out,iso_44_io_out,
+    iso_43_io_out,iso_42_io_out,iso_41_io_out,iso_40_io_out}; // @[Cat.scala 31:58]
+  wire [9:0] hi_lo_hi = {iso_59_io_out,iso_58_io_out,iso_57_io_out,iso_56_io_out,iso_55_io_out,iso_54_io_out,
+    iso_53_io_out,iso_52_io_out,iso_51_io_out,iso_50_io_out}; // @[Cat.scala 31:58]
+  wire [9:0] hi_hi_lo = {iso_69_io_out,iso_68_io_out,iso_67_io_out,iso_66_io_out,iso_65_io_out,iso_64_io_out,
+    iso_63_io_out,iso_62_io_out,iso_61_io_out,iso_60_io_out}; // @[Cat.scala 31:58]
+  wire [4:0] hi_hi_hi_lo = {iso_74_io_out,iso_73_io_out,iso_72_io_out,iso_71_io_out,iso_70_io_out}; // @[Cat.scala 31:58]
+  wire [40:0] hi_1 = {iso_80_io_out,iso_79_io_out,iso_78_io_out,iso_77_io_out,iso_76_io_out,iso_75_io_out,hi_hi_hi_lo,
+    hi_hi_lo,hi_lo_hi,hi_lo_lo}; // @[Cat.scala 31:58]
+  wire [80:0] _T_1 = {hi_1,lo_hi_hi,lo_hi_lo,lo_lo_hi,lo_lo_lo}; // @[Cat.scala 31:58]
+  wire [48:0] _T_10 = {auto_out_d_mem_0_opcode,2'h0,auto_out_d_mem_0_size,auto_out_d_mem_0_source,2'h0,
+    auto_out_d_mem_0_data,1'h0}; // @[Isolation.scala 22:66]
+  IsoZero iso_0 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_0_io_in),
+    .io_iso(iso_0_io_iso),
+    .io_out(iso_0_io_out)
+  );
+  IsoZero iso_1 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_1_io_in),
+    .io_iso(iso_1_io_iso),
+    .io_out(iso_1_io_out)
+  );
+  IsoZero iso_2 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_2_io_in),
+    .io_iso(iso_2_io_iso),
+    .io_out(iso_2_io_out)
+  );
+  IsoZero iso_3 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_3_io_in),
+    .io_iso(iso_3_io_iso),
+    .io_out(iso_3_io_out)
+  );
+  IsoZero iso_4 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_4_io_in),
+    .io_iso(iso_4_io_iso),
+    .io_out(iso_4_io_out)
+  );
+  IsoZero iso_5 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_5_io_in),
+    .io_iso(iso_5_io_iso),
+    .io_out(iso_5_io_out)
+  );
+  IsoZero iso_6 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_6_io_in),
+    .io_iso(iso_6_io_iso),
+    .io_out(iso_6_io_out)
+  );
+  IsoZero iso_7 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_7_io_in),
+    .io_iso(iso_7_io_iso),
+    .io_out(iso_7_io_out)
+  );
+  IsoZero iso_8 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_8_io_in),
+    .io_iso(iso_8_io_iso),
+    .io_out(iso_8_io_out)
+  );
+  IsoZero iso_9 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_9_io_in),
+    .io_iso(iso_9_io_iso),
+    .io_out(iso_9_io_out)
+  );
+  IsoZero iso_10 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_10_io_in),
+    .io_iso(iso_10_io_iso),
+    .io_out(iso_10_io_out)
+  );
+  IsoZero iso_11 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_11_io_in),
+    .io_iso(iso_11_io_iso),
+    .io_out(iso_11_io_out)
+  );
+  IsoZero iso_12 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_12_io_in),
+    .io_iso(iso_12_io_iso),
+    .io_out(iso_12_io_out)
+  );
+  IsoZero iso_13 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_13_io_in),
+    .io_iso(iso_13_io_iso),
+    .io_out(iso_13_io_out)
+  );
+  IsoZero iso_14 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_14_io_in),
+    .io_iso(iso_14_io_iso),
+    .io_out(iso_14_io_out)
+  );
+  IsoZero iso_15 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_15_io_in),
+    .io_iso(iso_15_io_iso),
+    .io_out(iso_15_io_out)
+  );
+  IsoZero iso_16 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_16_io_in),
+    .io_iso(iso_16_io_iso),
+    .io_out(iso_16_io_out)
+  );
+  IsoZero iso_17 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_17_io_in),
+    .io_iso(iso_17_io_iso),
+    .io_out(iso_17_io_out)
+  );
+  IsoZero iso_18 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_18_io_in),
+    .io_iso(iso_18_io_iso),
+    .io_out(iso_18_io_out)
+  );
+  IsoZero iso_19 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_19_io_in),
+    .io_iso(iso_19_io_iso),
+    .io_out(iso_19_io_out)
+  );
+  IsoZero iso_20 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_20_io_in),
+    .io_iso(iso_20_io_iso),
+    .io_out(iso_20_io_out)
+  );
+  IsoZero iso_21 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_21_io_in),
+    .io_iso(iso_21_io_iso),
+    .io_out(iso_21_io_out)
+  );
+  IsoZero iso_22 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_22_io_in),
+    .io_iso(iso_22_io_iso),
+    .io_out(iso_22_io_out)
+  );
+  IsoZero iso_23 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_23_io_in),
+    .io_iso(iso_23_io_iso),
+    .io_out(iso_23_io_out)
+  );
+  IsoZero iso_24 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_24_io_in),
+    .io_iso(iso_24_io_iso),
+    .io_out(iso_24_io_out)
+  );
+  IsoZero iso_25 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_25_io_in),
+    .io_iso(iso_25_io_iso),
+    .io_out(iso_25_io_out)
+  );
+  IsoZero iso_26 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_26_io_in),
+    .io_iso(iso_26_io_iso),
+    .io_out(iso_26_io_out)
+  );
+  IsoZero iso_27 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_27_io_in),
+    .io_iso(iso_27_io_iso),
+    .io_out(iso_27_io_out)
+  );
+  IsoZero iso_28 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_28_io_in),
+    .io_iso(iso_28_io_iso),
+    .io_out(iso_28_io_out)
+  );
+  IsoZero iso_29 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_29_io_in),
+    .io_iso(iso_29_io_iso),
+    .io_out(iso_29_io_out)
+  );
+  IsoZero iso_30 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_30_io_in),
+    .io_iso(iso_30_io_iso),
+    .io_out(iso_30_io_out)
+  );
+  IsoZero iso_31 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_31_io_in),
+    .io_iso(iso_31_io_iso),
+    .io_out(iso_31_io_out)
+  );
+  IsoZero iso_32 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_32_io_in),
+    .io_iso(iso_32_io_iso),
+    .io_out(iso_32_io_out)
+  );
+  IsoZero iso_33 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_33_io_in),
+    .io_iso(iso_33_io_iso),
+    .io_out(iso_33_io_out)
+  );
+  IsoZero iso_34 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_34_io_in),
+    .io_iso(iso_34_io_iso),
+    .io_out(iso_34_io_out)
+  );
+  IsoZero iso_35 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_35_io_in),
+    .io_iso(iso_35_io_iso),
+    .io_out(iso_35_io_out)
+  );
+  IsoZero iso_36 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_36_io_in),
+    .io_iso(iso_36_io_iso),
+    .io_out(iso_36_io_out)
+  );
+  IsoZero iso_37 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_37_io_in),
+    .io_iso(iso_37_io_iso),
+    .io_out(iso_37_io_out)
+  );
+  IsoZero iso_38 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_38_io_in),
+    .io_iso(iso_38_io_iso),
+    .io_out(iso_38_io_out)
+  );
+  IsoZero iso_39 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_39_io_in),
+    .io_iso(iso_39_io_iso),
+    .io_out(iso_39_io_out)
+  );
+  IsoZero iso_40 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_40_io_in),
+    .io_iso(iso_40_io_iso),
+    .io_out(iso_40_io_out)
+  );
+  IsoZero iso_41 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_41_io_in),
+    .io_iso(iso_41_io_iso),
+    .io_out(iso_41_io_out)
+  );
+  IsoZero iso_42 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_42_io_in),
+    .io_iso(iso_42_io_iso),
+    .io_out(iso_42_io_out)
+  );
+  IsoZero iso_43 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_43_io_in),
+    .io_iso(iso_43_io_iso),
+    .io_out(iso_43_io_out)
+  );
+  IsoZero iso_44 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_44_io_in),
+    .io_iso(iso_44_io_iso),
+    .io_out(iso_44_io_out)
+  );
+  IsoZero iso_45 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_45_io_in),
+    .io_iso(iso_45_io_iso),
+    .io_out(iso_45_io_out)
+  );
+  IsoZero iso_46 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_46_io_in),
+    .io_iso(iso_46_io_iso),
+    .io_out(iso_46_io_out)
+  );
+  IsoZero iso_47 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_47_io_in),
+    .io_iso(iso_47_io_iso),
+    .io_out(iso_47_io_out)
+  );
+  IsoZero iso_48 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_48_io_in),
+    .io_iso(iso_48_io_iso),
+    .io_out(iso_48_io_out)
+  );
+  IsoZero iso_49 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_49_io_in),
+    .io_iso(iso_49_io_iso),
+    .io_out(iso_49_io_out)
+  );
+  IsoZero iso_50 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_50_io_in),
+    .io_iso(iso_50_io_iso),
+    .io_out(iso_50_io_out)
+  );
+  IsoZero iso_51 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_51_io_in),
+    .io_iso(iso_51_io_iso),
+    .io_out(iso_51_io_out)
+  );
+  IsoZero iso_52 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_52_io_in),
+    .io_iso(iso_52_io_iso),
+    .io_out(iso_52_io_out)
+  );
+  IsoZero iso_53 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_53_io_in),
+    .io_iso(iso_53_io_iso),
+    .io_out(iso_53_io_out)
+  );
+  IsoZero iso_54 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_54_io_in),
+    .io_iso(iso_54_io_iso),
+    .io_out(iso_54_io_out)
+  );
+  IsoZero iso_55 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_55_io_in),
+    .io_iso(iso_55_io_iso),
+    .io_out(iso_55_io_out)
+  );
+  IsoZero iso_56 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_56_io_in),
+    .io_iso(iso_56_io_iso),
+    .io_out(iso_56_io_out)
+  );
+  IsoZero iso_57 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_57_io_in),
+    .io_iso(iso_57_io_iso),
+    .io_out(iso_57_io_out)
+  );
+  IsoZero iso_58 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_58_io_in),
+    .io_iso(iso_58_io_iso),
+    .io_out(iso_58_io_out)
+  );
+  IsoZero iso_59 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_59_io_in),
+    .io_iso(iso_59_io_iso),
+    .io_out(iso_59_io_out)
+  );
+  IsoZero iso_60 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_60_io_in),
+    .io_iso(iso_60_io_iso),
+    .io_out(iso_60_io_out)
+  );
+  IsoZero iso_61 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_61_io_in),
+    .io_iso(iso_61_io_iso),
+    .io_out(iso_61_io_out)
+  );
+  IsoZero iso_62 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_62_io_in),
+    .io_iso(iso_62_io_iso),
+    .io_out(iso_62_io_out)
+  );
+  IsoZero iso_63 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_63_io_in),
+    .io_iso(iso_63_io_iso),
+    .io_out(iso_63_io_out)
+  );
+  IsoZero iso_64 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_64_io_in),
+    .io_iso(iso_64_io_iso),
+    .io_out(iso_64_io_out)
+  );
+  IsoZero iso_65 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_65_io_in),
+    .io_iso(iso_65_io_iso),
+    .io_out(iso_65_io_out)
+  );
+  IsoZero iso_66 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_66_io_in),
+    .io_iso(iso_66_io_iso),
+    .io_out(iso_66_io_out)
+  );
+  IsoZero iso_67 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_67_io_in),
+    .io_iso(iso_67_io_iso),
+    .io_out(iso_67_io_out)
+  );
+  IsoZero iso_68 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_68_io_in),
+    .io_iso(iso_68_io_iso),
+    .io_out(iso_68_io_out)
+  );
+  IsoZero iso_69 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_69_io_in),
+    .io_iso(iso_69_io_iso),
+    .io_out(iso_69_io_out)
+  );
+  IsoZero iso_70 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_70_io_in),
+    .io_iso(iso_70_io_iso),
+    .io_out(iso_70_io_out)
+  );
+  IsoZero iso_71 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_71_io_in),
+    .io_iso(iso_71_io_iso),
+    .io_out(iso_71_io_out)
+  );
+  IsoZero iso_72 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_72_io_in),
+    .io_iso(iso_72_io_iso),
+    .io_out(iso_72_io_out)
+  );
+  IsoZero iso_73 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_73_io_in),
+    .io_iso(iso_73_io_iso),
+    .io_out(iso_73_io_out)
+  );
+  IsoZero iso_74 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_74_io_in),
+    .io_iso(iso_74_io_iso),
+    .io_out(iso_74_io_out)
+  );
+  IsoZero iso_75 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_75_io_in),
+    .io_iso(iso_75_io_iso),
+    .io_out(iso_75_io_out)
+  );
+  IsoZero iso_76 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_76_io_in),
+    .io_iso(iso_76_io_iso),
+    .io_out(iso_76_io_out)
+  );
+  IsoZero iso_77 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_77_io_in),
+    .io_iso(iso_77_io_iso),
+    .io_out(iso_77_io_out)
+  );
+  IsoZero iso_78 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_78_io_in),
+    .io_iso(iso_78_io_iso),
+    .io_out(iso_78_io_out)
+  );
+  IsoZero iso_79 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_79_io_in),
+    .io_iso(iso_79_io_iso),
+    .io_out(iso_79_io_out)
+  );
+  IsoZero iso_80 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(iso_80_io_in),
+    .io_iso(iso_80_io_iso),
+    .io_out(iso_80_io_out)
+  );
+  IsoZero bundleOut_0_a_widx_iso_0 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(bundleOut_0_a_widx_iso_0_io_in),
+    .io_iso(bundleOut_0_a_widx_iso_0_io_iso),
+    .io_out(bundleOut_0_a_widx_iso_0_io_out)
+  );
+  IsoZero bundleOut_0_a_safe_widx_valid_iso_0 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(bundleOut_0_a_safe_widx_valid_iso_0_io_in),
+    .io_iso(bundleOut_0_a_safe_widx_valid_iso_0_io_iso),
+    .io_out(bundleOut_0_a_safe_widx_valid_iso_0_io_out)
+  );
+  IsoZero bundleOut_0_a_safe_source_reset_n_iso_0 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(bundleOut_0_a_safe_source_reset_n_iso_0_io_in),
+    .io_iso(bundleOut_0_a_safe_source_reset_n_iso_0_io_iso),
+    .io_out(bundleOut_0_a_safe_source_reset_n_iso_0_io_out)
+  );
+  IsoZero bundleOut_0_d_ridx_iso_0 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(bundleOut_0_d_ridx_iso_0_io_in),
+    .io_iso(bundleOut_0_d_ridx_iso_0_io_iso),
+    .io_out(bundleOut_0_d_ridx_iso_0_io_out)
+  );
+  IsoZero bundleOut_0_d_safe_ridx_valid_iso_0 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(bundleOut_0_d_safe_ridx_valid_iso_0_io_in),
+    .io_iso(bundleOut_0_d_safe_ridx_valid_iso_0_io_iso),
+    .io_out(bundleOut_0_d_safe_ridx_valid_iso_0_io_out)
+  );
+  IsoZero bundleOut_0_d_safe_sink_reset_n_iso_0 ( // @[MockAONWrapper.scala 166:18]
+    .io_in(bundleOut_0_d_safe_sink_reset_n_iso_0_io_in),
+    .io_iso(bundleOut_0_d_safe_sink_reset_n_iso_0_io_iso),
+    .io_out(bundleOut_0_d_safe_sink_reset_n_iso_0_io_out)
+  );
+  assign auto_in_a_ridx = auto_out_a_ridx; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_a_safe_ridx_valid = auto_out_a_safe_ridx_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_a_safe_sink_reset_n = auto_out_a_safe_sink_reset_n; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_mem_0_opcode = _T_10[48:46]; // @[Isolation.scala 22:46]
+  assign auto_in_d_mem_0_param = _T_10[45:44]; // @[Isolation.scala 22:46]
+  assign auto_in_d_mem_0_size = _T_10[43:42]; // @[Isolation.scala 22:46]
+  assign auto_in_d_mem_0_source = _T_10[41:35]; // @[Isolation.scala 22:46]
+  assign auto_in_d_mem_0_sink = _T_10[34]; // @[Isolation.scala 22:46]
+  assign auto_in_d_mem_0_denied = _T_10[33]; // @[Isolation.scala 22:46]
+  assign auto_in_d_mem_0_data = _T_10[32:1]; // @[Isolation.scala 22:46]
+  assign auto_in_d_mem_0_corrupt = _T_10[0]; // @[Isolation.scala 22:46]
+  assign auto_in_d_widx = auto_out_d_widx; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_safe_widx_valid = auto_out_d_safe_widx_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_safe_source_reset_n = auto_out_d_safe_source_reset_n; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_mem_0_opcode = _T_1[80:78]; // @[Isolation.scala 21:46]
+  assign auto_out_a_mem_0_param = _T_1[77:75]; // @[Isolation.scala 21:46]
+  assign auto_out_a_mem_0_size = _T_1[74:73]; // @[Isolation.scala 21:46]
+  assign auto_out_a_mem_0_source = _T_1[72:66]; // @[Isolation.scala 21:46]
+  assign auto_out_a_mem_0_address = _T_1[65:37]; // @[Isolation.scala 21:46]
+  assign auto_out_a_mem_0_mask = _T_1[36:33]; // @[Isolation.scala 21:46]
+  assign auto_out_a_mem_0_data = _T_1[32:1]; // @[Isolation.scala 21:46]
+  assign auto_out_a_mem_0_corrupt = _T_1[0]; // @[Isolation.scala 21:46]
+  assign auto_out_a_widx = bundleOut_0_a_widx_iso_0_io_out; // @[Isolation.scala 21:{46,46}]
+  assign auto_out_a_safe_widx_valid = bundleOut_0_a_safe_widx_valid_iso_0_io_out; // @[Isolation.scala 21:{46,46}]
+  assign auto_out_a_safe_source_reset_n = bundleOut_0_a_safe_source_reset_n_iso_0_io_out; // @[Isolation.scala 21:{46,46}]
+  assign auto_out_d_ridx = bundleOut_0_d_ridx_iso_0_io_out; // @[Isolation.scala 21:{46,46}]
+  assign auto_out_d_safe_ridx_valid = bundleOut_0_d_safe_ridx_valid_iso_0_io_out; // @[Isolation.scala 21:{46,46}]
+  assign auto_out_d_safe_sink_reset_n = bundleOut_0_d_safe_sink_reset_n_iso_0_io_out; // @[Isolation.scala 21:{46,46}]
+  assign iso_0_io_in = _T[0]; // @[MockAONWrapper.scala 169:20]
+  assign iso_0_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_1_io_in = _T[1]; // @[MockAONWrapper.scala 169:20]
+  assign iso_1_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_2_io_in = _T[2]; // @[MockAONWrapper.scala 169:20]
+  assign iso_2_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_3_io_in = _T[3]; // @[MockAONWrapper.scala 169:20]
+  assign iso_3_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_4_io_in = _T[4]; // @[MockAONWrapper.scala 169:20]
+  assign iso_4_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_5_io_in = _T[5]; // @[MockAONWrapper.scala 169:20]
+  assign iso_5_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_6_io_in = _T[6]; // @[MockAONWrapper.scala 169:20]
+  assign iso_6_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_7_io_in = _T[7]; // @[MockAONWrapper.scala 169:20]
+  assign iso_7_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_8_io_in = _T[8]; // @[MockAONWrapper.scala 169:20]
+  assign iso_8_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_9_io_in = _T[9]; // @[MockAONWrapper.scala 169:20]
+  assign iso_9_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_10_io_in = _T[10]; // @[MockAONWrapper.scala 169:20]
+  assign iso_10_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_11_io_in = _T[11]; // @[MockAONWrapper.scala 169:20]
+  assign iso_11_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_12_io_in = _T[12]; // @[MockAONWrapper.scala 169:20]
+  assign iso_12_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_13_io_in = _T[13]; // @[MockAONWrapper.scala 169:20]
+  assign iso_13_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_14_io_in = _T[14]; // @[MockAONWrapper.scala 169:20]
+  assign iso_14_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_15_io_in = _T[15]; // @[MockAONWrapper.scala 169:20]
+  assign iso_15_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_16_io_in = _T[16]; // @[MockAONWrapper.scala 169:20]
+  assign iso_16_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_17_io_in = _T[17]; // @[MockAONWrapper.scala 169:20]
+  assign iso_17_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_18_io_in = _T[18]; // @[MockAONWrapper.scala 169:20]
+  assign iso_18_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_19_io_in = _T[19]; // @[MockAONWrapper.scala 169:20]
+  assign iso_19_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_20_io_in = _T[20]; // @[MockAONWrapper.scala 169:20]
+  assign iso_20_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_21_io_in = _T[21]; // @[MockAONWrapper.scala 169:20]
+  assign iso_21_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_22_io_in = _T[22]; // @[MockAONWrapper.scala 169:20]
+  assign iso_22_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_23_io_in = _T[23]; // @[MockAONWrapper.scala 169:20]
+  assign iso_23_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_24_io_in = _T[24]; // @[MockAONWrapper.scala 169:20]
+  assign iso_24_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_25_io_in = _T[25]; // @[MockAONWrapper.scala 169:20]
+  assign iso_25_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_26_io_in = _T[26]; // @[MockAONWrapper.scala 169:20]
+  assign iso_26_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_27_io_in = _T[27]; // @[MockAONWrapper.scala 169:20]
+  assign iso_27_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_28_io_in = _T[28]; // @[MockAONWrapper.scala 169:20]
+  assign iso_28_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_29_io_in = _T[29]; // @[MockAONWrapper.scala 169:20]
+  assign iso_29_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_30_io_in = _T[30]; // @[MockAONWrapper.scala 169:20]
+  assign iso_30_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_31_io_in = _T[31]; // @[MockAONWrapper.scala 169:20]
+  assign iso_31_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_32_io_in = _T[32]; // @[MockAONWrapper.scala 169:20]
+  assign iso_32_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_33_io_in = _T[33]; // @[MockAONWrapper.scala 169:20]
+  assign iso_33_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_34_io_in = _T[34]; // @[MockAONWrapper.scala 169:20]
+  assign iso_34_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_35_io_in = _T[35]; // @[MockAONWrapper.scala 169:20]
+  assign iso_35_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_36_io_in = _T[36]; // @[MockAONWrapper.scala 169:20]
+  assign iso_36_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_37_io_in = _T[37]; // @[MockAONWrapper.scala 169:20]
+  assign iso_37_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_38_io_in = _T[38]; // @[MockAONWrapper.scala 169:20]
+  assign iso_38_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_39_io_in = _T[39]; // @[MockAONWrapper.scala 169:20]
+  assign iso_39_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_40_io_in = _T[40]; // @[MockAONWrapper.scala 169:20]
+  assign iso_40_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_41_io_in = _T[41]; // @[MockAONWrapper.scala 169:20]
+  assign iso_41_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_42_io_in = _T[42]; // @[MockAONWrapper.scala 169:20]
+  assign iso_42_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_43_io_in = _T[43]; // @[MockAONWrapper.scala 169:20]
+  assign iso_43_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_44_io_in = _T[44]; // @[MockAONWrapper.scala 169:20]
+  assign iso_44_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_45_io_in = _T[45]; // @[MockAONWrapper.scala 169:20]
+  assign iso_45_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_46_io_in = _T[46]; // @[MockAONWrapper.scala 169:20]
+  assign iso_46_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_47_io_in = _T[47]; // @[MockAONWrapper.scala 169:20]
+  assign iso_47_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_48_io_in = _T[48]; // @[MockAONWrapper.scala 169:20]
+  assign iso_48_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_49_io_in = _T[49]; // @[MockAONWrapper.scala 169:20]
+  assign iso_49_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_50_io_in = _T[50]; // @[MockAONWrapper.scala 169:20]
+  assign iso_50_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_51_io_in = _T[51]; // @[MockAONWrapper.scala 169:20]
+  assign iso_51_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_52_io_in = _T[52]; // @[MockAONWrapper.scala 169:20]
+  assign iso_52_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_53_io_in = _T[53]; // @[MockAONWrapper.scala 169:20]
+  assign iso_53_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_54_io_in = _T[54]; // @[MockAONWrapper.scala 169:20]
+  assign iso_54_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_55_io_in = _T[55]; // @[MockAONWrapper.scala 169:20]
+  assign iso_55_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_56_io_in = _T[56]; // @[MockAONWrapper.scala 169:20]
+  assign iso_56_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_57_io_in = _T[57]; // @[MockAONWrapper.scala 169:20]
+  assign iso_57_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_58_io_in = _T[58]; // @[MockAONWrapper.scala 169:20]
+  assign iso_58_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_59_io_in = _T[59]; // @[MockAONWrapper.scala 169:20]
+  assign iso_59_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_60_io_in = _T[60]; // @[MockAONWrapper.scala 169:20]
+  assign iso_60_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_61_io_in = _T[61]; // @[MockAONWrapper.scala 169:20]
+  assign iso_61_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_62_io_in = _T[62]; // @[MockAONWrapper.scala 169:20]
+  assign iso_62_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_63_io_in = _T[63]; // @[MockAONWrapper.scala 169:20]
+  assign iso_63_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_64_io_in = _T[64]; // @[MockAONWrapper.scala 169:20]
+  assign iso_64_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_65_io_in = _T[65]; // @[MockAONWrapper.scala 169:20]
+  assign iso_65_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_66_io_in = _T[66]; // @[MockAONWrapper.scala 169:20]
+  assign iso_66_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_67_io_in = _T[67]; // @[MockAONWrapper.scala 169:20]
+  assign iso_67_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_68_io_in = _T[68]; // @[MockAONWrapper.scala 169:20]
+  assign iso_68_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_69_io_in = _T[69]; // @[MockAONWrapper.scala 169:20]
+  assign iso_69_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_70_io_in = _T[70]; // @[MockAONWrapper.scala 169:20]
+  assign iso_70_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_71_io_in = _T[71]; // @[MockAONWrapper.scala 169:20]
+  assign iso_71_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_72_io_in = _T[72]; // @[MockAONWrapper.scala 169:20]
+  assign iso_72_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_73_io_in = _T[73]; // @[MockAONWrapper.scala 169:20]
+  assign iso_73_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_74_io_in = _T[74]; // @[MockAONWrapper.scala 169:20]
+  assign iso_74_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_75_io_in = _T[75]; // @[MockAONWrapper.scala 169:20]
+  assign iso_75_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_76_io_in = _T[76]; // @[MockAONWrapper.scala 169:20]
+  assign iso_76_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_77_io_in = _T[77]; // @[MockAONWrapper.scala 169:20]
+  assign iso_77_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_78_io_in = _T[78]; // @[MockAONWrapper.scala 169:20]
+  assign iso_78_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_79_io_in = _T[79]; // @[MockAONWrapper.scala 169:20]
+  assign iso_79_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign iso_80_io_in = _T[80]; // @[MockAONWrapper.scala 169:20]
+  assign iso_80_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign bundleOut_0_a_widx_iso_0_io_in = auto_in_a_widx; // @[MockAONWrapper.scala 169:20]
+  assign bundleOut_0_a_widx_iso_0_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign bundleOut_0_a_safe_widx_valid_iso_0_io_in = auto_in_a_safe_widx_valid; // @[MockAONWrapper.scala 169:20]
+  assign bundleOut_0_a_safe_widx_valid_iso_0_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign bundleOut_0_a_safe_source_reset_n_iso_0_io_in = auto_in_a_safe_source_reset_n; // @[MockAONWrapper.scala 169:20]
+  assign bundleOut_0_a_safe_source_reset_n_iso_0_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign bundleOut_0_d_ridx_iso_0_io_in = auto_in_d_ridx; // @[MockAONWrapper.scala 169:20]
+  assign bundleOut_0_d_ridx_iso_0_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign bundleOut_0_d_safe_ridx_valid_iso_0_io_in = auto_in_d_safe_ridx_valid; // @[MockAONWrapper.scala 169:20]
+  assign bundleOut_0_d_safe_ridx_valid_iso_0_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+  assign bundleOut_0_d_safe_sink_reset_n_iso_0_io_in = auto_in_d_safe_sink_reset_n; // @[MockAONWrapper.scala 169:20]
+  assign bundleOut_0_d_safe_sink_reset_n_iso_0_io_iso = io_iso_out; // @[MockAONWrapper.scala 170:16]
+endmodule
+module ClockCrossingReg_w81(
+  input         clock,
+  input  [80:0] io_d,
+  output [80:0] io_q,
+  input         io_en
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [95:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [80:0] cdc_reg; // @[Reg.scala 16:16]
+  assign io_q = cdc_reg; // @[SynchronizerReg.scala 202:8]
+  always @(posedge clock) begin
+    if (io_en) begin // @[Reg.scala 17:18]
+      cdc_reg <= io_d; // @[Reg.scala 17:22]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {3{`RANDOM}};
+  cdc_reg = _RAND_0[80:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncQueueSink_4(
+  input         clock,
+  input         reset,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [2:0]  io_deq_bits_opcode,
+  output [2:0]  io_deq_bits_param,
+  output [1:0]  io_deq_bits_size,
+  output [6:0]  io_deq_bits_source,
+  output [28:0] io_deq_bits_address,
+  output [3:0]  io_deq_bits_mask,
+  output [31:0] io_deq_bits_data,
+  output        io_deq_bits_corrupt,
+  input  [2:0]  io_async_mem_0_opcode,
+  input  [2:0]  io_async_mem_0_param,
+  input  [1:0]  io_async_mem_0_size,
+  input  [6:0]  io_async_mem_0_source,
+  input  [28:0] io_async_mem_0_address,
+  input  [3:0]  io_async_mem_0_mask,
+  input  [31:0] io_async_mem_0_data,
+  input         io_async_mem_0_corrupt,
+  output        io_async_ridx,
+  input         io_async_widx,
+  output        io_async_safe_ridx_valid,
+  input         io_async_safe_widx_valid,
+  input         io_async_safe_source_reset_n,
+  output        io_async_safe_sink_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  wire  widx_widx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  widx_widx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  io_deq_bits_deq_bits_reg_clock; // @[SynchronizerReg.scala 207:25]
+  wire [80:0] io_deq_bits_deq_bits_reg_io_d; // @[SynchronizerReg.scala 207:25]
+  wire [80:0] io_deq_bits_deq_bits_reg_io_q; // @[SynchronizerReg.scala 207:25]
+  wire  io_deq_bits_deq_bits_reg_io_en; // @[SynchronizerReg.scala 207:25]
+  wire  sink_valid_0_io_in; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_io_out; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_clock; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_0_reset; // @[AsyncQueue.scala 168:33]
+  wire  sink_valid_1_io_in; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_io_out; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_clock; // @[AsyncQueue.scala 169:33]
+  wire  sink_valid_1_reset; // @[AsyncQueue.scala 169:33]
+  wire  source_extend_io_in; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_io_out; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_clock; // @[AsyncQueue.scala 171:31]
+  wire  source_extend_reset; // @[AsyncQueue.scala 171:31]
+  wire  source_valid_io_in; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_io_out; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_clock; // @[AsyncQueue.scala 172:31]
+  wire  source_valid_reset; // @[AsyncQueue.scala 172:31]
+  wire  _ridx_T_1 = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  wire  source_ready = source_valid_io_out;
+  wire  _ridx_T_2 = ~source_ready; // @[AsyncQueue.scala 144:79]
+  reg  ridx_ridx_bin; // @[AsyncQueue.scala 52:25]
+  wire  ridx_incremented = _ridx_T_2 ? 1'h0 : ridx_ridx_bin + _ridx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  widx = widx_widx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [65:0] io_deq_bits_deq_bits_reg_io_d_lo = {io_async_mem_0_address,io_async_mem_0_mask,io_async_mem_0_data,
+    io_async_mem_0_corrupt}; // @[SynchronizerReg.scala 209:24]
+  wire [14:0] io_deq_bits_deq_bits_reg_io_d_hi = {io_async_mem_0_opcode,io_async_mem_0_param,io_async_mem_0_size,
+    io_async_mem_0_source}; // @[SynchronizerReg.scala 209:24]
+  wire [80:0] _io_deq_bits_WIRE_1 = io_deq_bits_deq_bits_reg_io_q;
+  reg  valid_reg; // @[AsyncQueue.scala 161:56]
+  reg  ridx_gray; // @[AsyncQueue.scala 164:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 widx_widx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(widx_widx_gray_clock),
+    .reset(widx_widx_gray_reset),
+    .io_d(widx_widx_gray_io_d),
+    .io_q(widx_widx_gray_io_q)
+  );
+  ClockCrossingReg_w81 io_deq_bits_deq_bits_reg ( // @[SynchronizerReg.scala 207:25]
+    .clock(io_deq_bits_deq_bits_reg_clock),
+    .io_d(io_deq_bits_deq_bits_reg_io_d),
+    .io_q(io_deq_bits_deq_bits_reg_io_q),
+    .io_en(io_deq_bits_deq_bits_reg_io_en)
+  );
+  AsyncValidSync sink_valid_0 ( // @[AsyncQueue.scala 168:33]
+    .io_in(sink_valid_0_io_in),
+    .io_out(sink_valid_0_io_out),
+    .clock(sink_valid_0_clock),
+    .reset(sink_valid_0_reset)
+  );
+  AsyncValidSync sink_valid_1 ( // @[AsyncQueue.scala 169:33]
+    .io_in(sink_valid_1_io_in),
+    .io_out(sink_valid_1_io_out),
+    .clock(sink_valid_1_clock),
+    .reset(sink_valid_1_reset)
+  );
+  AsyncValidSync source_extend ( // @[AsyncQueue.scala 171:31]
+    .io_in(source_extend_io_in),
+    .io_out(source_extend_io_out),
+    .clock(source_extend_clock),
+    .reset(source_extend_reset)
+  );
+  AsyncValidSync source_valid ( // @[AsyncQueue.scala 172:31]
+    .io_in(source_valid_io_in),
+    .io_out(source_valid_io_out),
+    .clock(source_valid_clock),
+    .reset(source_valid_reset)
+  );
+  assign io_deq_valid = valid_reg & source_ready; // @[AsyncQueue.scala 162:29]
+  assign io_deq_bits_opcode = _io_deq_bits_WIRE_1[80:78]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_param = _io_deq_bits_WIRE_1[77:75]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_size = _io_deq_bits_WIRE_1[74:73]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_source = _io_deq_bits_WIRE_1[72:66]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_address = _io_deq_bits_WIRE_1[65:37]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_mask = _io_deq_bits_WIRE_1[36:33]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_data = _io_deq_bits_WIRE_1[32:1]; // @[SynchronizerReg.scala 211:26]
+  assign io_deq_bits_corrupt = _io_deq_bits_WIRE_1[0]; // @[SynchronizerReg.scala 211:26]
+  assign io_async_ridx = ridx_gray; // @[AsyncQueue.scala 165:17]
+  assign io_async_safe_ridx_valid = sink_valid_1_io_out; // @[AsyncQueue.scala 185:20]
+  assign io_async_safe_sink_reset_n = ~reset; // @[AsyncQueue.scala 189:25]
+  assign widx_widx_gray_clock = clock;
+  assign widx_widx_gray_reset = reset;
+  assign widx_widx_gray_io_d = io_async_widx; // @[ShiftReg.scala 47:16]
+  assign io_deq_bits_deq_bits_reg_clock = clock;
+  assign io_deq_bits_deq_bits_reg_io_d = {io_deq_bits_deq_bits_reg_io_d_hi,io_deq_bits_deq_bits_reg_io_d_lo}; // @[SynchronizerReg.scala 209:24]
+  assign io_deq_bits_deq_bits_reg_io_en = source_ready & ridx_incremented != widx; // @[AsyncQueue.scala 146:28]
+  assign sink_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 183:24]
+  assign sink_valid_0_clock = clock; // @[AsyncQueue.scala 178:25]
+  assign sink_valid_0_reset = reset | ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 173:66]
+  assign sink_valid_1_io_in = sink_valid_0_io_out; // @[AsyncQueue.scala 184:24]
+  assign sink_valid_1_clock = clock; // @[AsyncQueue.scala 179:25]
+  assign sink_valid_1_reset = reset | ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 174:66]
+  assign source_extend_io_in = io_async_safe_widx_valid; // @[AsyncQueue.scala 186:25]
+  assign source_extend_clock = clock; // @[AsyncQueue.scala 180:25]
+  assign source_extend_reset = reset | ~io_async_safe_source_reset_n; // @[AsyncQueue.scala 175:66]
+  assign source_valid_io_in = source_extend_io_out; // @[AsyncQueue.scala 187:24]
+  assign source_valid_clock = clock; // @[AsyncQueue.scala 181:25]
+  assign source_valid_reset = reset; // @[AsyncQueue.scala 176:34]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      ridx_ridx_bin <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_ridx_bin <= 1'h0;
+    end else begin
+      ridx_ridx_bin <= ridx_ridx_bin + _ridx_T_1;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 146:28]
+      valid_reg <= 1'h0;
+    end else begin
+      valid_reg <= source_ready & ridx_incremented != widx;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      ridx_gray <= 1'h0;
+    end else if (_ridx_T_2) begin
+      ridx_gray <= 1'h0;
+    end else begin
+      ridx_gray <= ridx_ridx_bin + _ridx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ridx_ridx_bin = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  valid_reg = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ridx_gray = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    ridx_ridx_bin = 1'h0;
+  end
+  if (reset) begin
+    valid_reg = 1'h0;
+  end
+  if (reset) begin
+    ridx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncQueueSource_4(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input  [2:0]  io_enq_bits_opcode,
+  input  [1:0]  io_enq_bits_size,
+  input  [6:0]  io_enq_bits_source,
+  input  [31:0] io_enq_bits_data,
+  output [2:0]  io_async_mem_0_opcode,
+  output [1:0]  io_async_mem_0_size,
+  output [6:0]  io_async_mem_0_source,
+  output [31:0] io_async_mem_0_data,
+  input         io_async_ridx,
+  output        io_async_widx,
+  input         io_async_safe_ridx_valid,
+  output        io_async_safe_widx_valid,
+  output        io_async_safe_source_reset_n,
+  input         io_async_safe_sink_reset_n
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_REG_INIT
+  wire  ridx_ridx_gray_clock; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_reset; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_d; // @[ShiftReg.scala 45:23]
+  wire  ridx_ridx_gray_io_q; // @[ShiftReg.scala 45:23]
+  wire  source_valid_0_io_in; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_io_out; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_clock; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_0_reset; // @[AsyncQueue.scala 100:32]
+  wire  source_valid_1_io_in; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_io_out; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_clock; // @[AsyncQueue.scala 101:32]
+  wire  source_valid_1_reset; // @[AsyncQueue.scala 101:32]
+  wire  sink_extend_io_in; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_io_out; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_clock; // @[AsyncQueue.scala 103:30]
+  wire  sink_extend_reset; // @[AsyncQueue.scala 103:30]
+  wire  sink_valid_io_in; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_io_out; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_clock; // @[AsyncQueue.scala 104:30]
+  wire  sink_valid_reset; // @[AsyncQueue.scala 104:30]
+  reg [2:0] mem_0_opcode; // @[AsyncQueue.scala 80:16]
+  reg [1:0] mem_0_size; // @[AsyncQueue.scala 80:16]
+  reg [6:0] mem_0_source; // @[AsyncQueue.scala 80:16]
+  reg [31:0] mem_0_data; // @[AsyncQueue.scala 80:16]
+  wire  _widx_T_1 = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  sink_ready = sink_valid_io_out;
+  wire  _widx_T_2 = ~sink_ready; // @[AsyncQueue.scala 81:79]
+  reg  widx_widx_bin; // @[AsyncQueue.scala 52:25]
+  wire  widx_incremented = _widx_T_2 ? 1'h0 : widx_widx_bin + _widx_T_1; // @[AsyncQueue.scala 53:23]
+  wire  ridx = ridx_ridx_gray_io_q; // @[ShiftReg.scala 48:{24,24}]
+  reg  ready_reg; // @[AsyncQueue.scala 88:56]
+  reg  widx_gray; // @[AsyncQueue.scala 91:55]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 ridx_ridx_gray ( // @[ShiftReg.scala 45:23]
+    .clock(ridx_ridx_gray_clock),
+    .reset(ridx_ridx_gray_reset),
+    .io_d(ridx_ridx_gray_io_d),
+    .io_q(ridx_ridx_gray_io_q)
+  );
+  AsyncValidSync source_valid_0 ( // @[AsyncQueue.scala 100:32]
+    .io_in(source_valid_0_io_in),
+    .io_out(source_valid_0_io_out),
+    .clock(source_valid_0_clock),
+    .reset(source_valid_0_reset)
+  );
+  AsyncValidSync source_valid_1 ( // @[AsyncQueue.scala 101:32]
+    .io_in(source_valid_1_io_in),
+    .io_out(source_valid_1_io_out),
+    .clock(source_valid_1_clock),
+    .reset(source_valid_1_reset)
+  );
+  AsyncValidSync sink_extend ( // @[AsyncQueue.scala 103:30]
+    .io_in(sink_extend_io_in),
+    .io_out(sink_extend_io_out),
+    .clock(sink_extend_clock),
+    .reset(sink_extend_reset)
+  );
+  AsyncValidSync sink_valid ( // @[AsyncQueue.scala 104:30]
+    .io_in(sink_valid_io_in),
+    .io_out(sink_valid_io_out),
+    .clock(sink_valid_clock),
+    .reset(sink_valid_reset)
+  );
+  assign io_enq_ready = ready_reg & sink_ready; // @[AsyncQueue.scala 89:29]
+  assign io_async_mem_0_opcode = mem_0_opcode; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_size = mem_0_size; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_source = mem_0_source; // @[AsyncQueue.scala 96:31]
+  assign io_async_mem_0_data = mem_0_data; // @[AsyncQueue.scala 96:31]
+  assign io_async_widx = widx_gray; // @[AsyncQueue.scala 92:17]
+  assign io_async_safe_widx_valid = source_valid_1_io_out; // @[AsyncQueue.scala 117:20]
+  assign io_async_safe_source_reset_n = ~reset; // @[AsyncQueue.scala 121:27]
+  assign ridx_ridx_gray_clock = clock;
+  assign ridx_ridx_gray_reset = reset;
+  assign ridx_ridx_gray_io_d = io_async_ridx; // @[ShiftReg.scala 47:16]
+  assign source_valid_0_io_in = 1'h1; // @[AsyncQueue.scala 115:26]
+  assign source_valid_0_clock = clock; // @[AsyncQueue.scala 110:26]
+  assign source_valid_0_reset = reset | ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 105:65]
+  assign source_valid_1_io_in = source_valid_0_io_out; // @[AsyncQueue.scala 116:26]
+  assign source_valid_1_clock = clock; // @[AsyncQueue.scala 111:26]
+  assign source_valid_1_reset = reset | ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 106:65]
+  assign sink_extend_io_in = io_async_safe_ridx_valid; // @[AsyncQueue.scala 118:23]
+  assign sink_extend_clock = clock; // @[AsyncQueue.scala 112:26]
+  assign sink_extend_reset = reset | ~io_async_safe_sink_reset_n; // @[AsyncQueue.scala 107:65]
+  assign sink_valid_io_in = sink_extend_io_out; // @[AsyncQueue.scala 119:22]
+  assign sink_valid_clock = clock; // @[AsyncQueue.scala 113:26]
+  assign sink_valid_reset = reset; // @[AsyncQueue.scala 108:35]
+  always @(posedge clock) begin
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_opcode <= io_enq_bits_opcode; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_size <= io_enq_bits_size; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_source <= io_enq_bits_source; // @[AsyncQueue.scala 86:37]
+    end
+    if (_widx_T_1) begin // @[AsyncQueue.scala 86:24]
+      mem_0_data <= io_enq_bits_data; // @[AsyncQueue.scala 86:37]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      widx_widx_bin <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_widx_bin <= 1'h0;
+    end else begin
+      widx_widx_bin <= widx_widx_bin + _widx_T_1;
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 83:26]
+      ready_reg <= 1'h0;
+    end else begin
+      ready_reg <= sink_ready & widx_incremented != (ridx ^ 1'h1);
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncQueue.scala 53:23]
+      widx_gray <= 1'h0;
+    end else if (_widx_T_2) begin
+      widx_gray <= 1'h0;
+    end else begin
+      widx_gray <= widx_widx_bin + _widx_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  mem_0_opcode = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  mem_0_size = _RAND_1[1:0];
+  _RAND_2 = {1{`RANDOM}};
+  mem_0_source = _RAND_2[6:0];
+  _RAND_3 = {1{`RANDOM}};
+  mem_0_data = _RAND_3[31:0];
+  _RAND_4 = {1{`RANDOM}};
+  widx_widx_bin = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  ready_reg = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  widx_gray = _RAND_6[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    widx_widx_bin = 1'h0;
+  end
+  if (reset) begin
+    ready_reg = 1'h0;
+  end
+  if (reset) begin
+    widx_gray = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLAsyncCrossingSink_1(
+  input         clock,
+  input         reset,
+  input  [2:0]  auto_in_a_mem_0_opcode,
+  input  [2:0]  auto_in_a_mem_0_param,
+  input  [1:0]  auto_in_a_mem_0_size,
+  input  [6:0]  auto_in_a_mem_0_source,
+  input  [28:0] auto_in_a_mem_0_address,
+  input  [3:0]  auto_in_a_mem_0_mask,
+  input  [31:0] auto_in_a_mem_0_data,
+  input         auto_in_a_mem_0_corrupt,
+  output        auto_in_a_ridx,
+  input         auto_in_a_widx,
+  output        auto_in_a_safe_ridx_valid,
+  input         auto_in_a_safe_widx_valid,
+  input         auto_in_a_safe_source_reset_n,
+  output        auto_in_a_safe_sink_reset_n,
+  output [2:0]  auto_in_d_mem_0_opcode,
+  output [1:0]  auto_in_d_mem_0_size,
+  output [6:0]  auto_in_d_mem_0_source,
+  output [31:0] auto_in_d_mem_0_data,
+  input         auto_in_d_ridx,
+  output        auto_in_d_widx,
+  input         auto_in_d_safe_ridx_valid,
+  output        auto_in_d_safe_widx_valid,
+  output        auto_in_d_safe_source_reset_n,
+  input         auto_in_d_safe_sink_reset_n,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  wire  bundleOut_0_a_sink_clock; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_reset; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_deq_ready; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_deq_valid; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleOut_0_a_sink_io_deq_bits_opcode; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleOut_0_a_sink_io_deq_bits_param; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleOut_0_a_sink_io_deq_bits_size; // @[AsyncQueue.scala 207:22]
+  wire [6:0] bundleOut_0_a_sink_io_deq_bits_source; // @[AsyncQueue.scala 207:22]
+  wire [28:0] bundleOut_0_a_sink_io_deq_bits_address; // @[AsyncQueue.scala 207:22]
+  wire [3:0] bundleOut_0_a_sink_io_deq_bits_mask; // @[AsyncQueue.scala 207:22]
+  wire [31:0] bundleOut_0_a_sink_io_deq_bits_data; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_deq_bits_corrupt; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleOut_0_a_sink_io_async_mem_0_opcode; // @[AsyncQueue.scala 207:22]
+  wire [2:0] bundleOut_0_a_sink_io_async_mem_0_param; // @[AsyncQueue.scala 207:22]
+  wire [1:0] bundleOut_0_a_sink_io_async_mem_0_size; // @[AsyncQueue.scala 207:22]
+  wire [6:0] bundleOut_0_a_sink_io_async_mem_0_source; // @[AsyncQueue.scala 207:22]
+  wire [28:0] bundleOut_0_a_sink_io_async_mem_0_address; // @[AsyncQueue.scala 207:22]
+  wire [3:0] bundleOut_0_a_sink_io_async_mem_0_mask; // @[AsyncQueue.scala 207:22]
+  wire [31:0] bundleOut_0_a_sink_io_async_mem_0_data; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_mem_0_corrupt; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_ridx; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_widx; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_safe_ridx_valid; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_safe_widx_valid; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_safe_source_reset_n; // @[AsyncQueue.scala 207:22]
+  wire  bundleOut_0_a_sink_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_source_clock; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_reset; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_enq_ready; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_enq_valid; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleIn_0_d_source_io_enq_bits_opcode; // @[AsyncQueue.scala 216:24]
+  wire [1:0] bundleIn_0_d_source_io_enq_bits_size; // @[AsyncQueue.scala 216:24]
+  wire [6:0] bundleIn_0_d_source_io_enq_bits_source; // @[AsyncQueue.scala 216:24]
+  wire [31:0] bundleIn_0_d_source_io_enq_bits_data; // @[AsyncQueue.scala 216:24]
+  wire [2:0] bundleIn_0_d_source_io_async_mem_0_opcode; // @[AsyncQueue.scala 216:24]
+  wire [1:0] bundleIn_0_d_source_io_async_mem_0_size; // @[AsyncQueue.scala 216:24]
+  wire [6:0] bundleIn_0_d_source_io_async_mem_0_source; // @[AsyncQueue.scala 216:24]
+  wire [31:0] bundleIn_0_d_source_io_async_mem_0_data; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_ridx; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_widx; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_safe_ridx_valid; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_safe_widx_valid; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_safe_source_reset_n; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 216:24]
+  AsyncQueueSink_4 bundleOut_0_a_sink ( // @[AsyncQueue.scala 207:22]
+    .clock(bundleOut_0_a_sink_clock),
+    .reset(bundleOut_0_a_sink_reset),
+    .io_deq_ready(bundleOut_0_a_sink_io_deq_ready),
+    .io_deq_valid(bundleOut_0_a_sink_io_deq_valid),
+    .io_deq_bits_opcode(bundleOut_0_a_sink_io_deq_bits_opcode),
+    .io_deq_bits_param(bundleOut_0_a_sink_io_deq_bits_param),
+    .io_deq_bits_size(bundleOut_0_a_sink_io_deq_bits_size),
+    .io_deq_bits_source(bundleOut_0_a_sink_io_deq_bits_source),
+    .io_deq_bits_address(bundleOut_0_a_sink_io_deq_bits_address),
+    .io_deq_bits_mask(bundleOut_0_a_sink_io_deq_bits_mask),
+    .io_deq_bits_data(bundleOut_0_a_sink_io_deq_bits_data),
+    .io_deq_bits_corrupt(bundleOut_0_a_sink_io_deq_bits_corrupt),
+    .io_async_mem_0_opcode(bundleOut_0_a_sink_io_async_mem_0_opcode),
+    .io_async_mem_0_param(bundleOut_0_a_sink_io_async_mem_0_param),
+    .io_async_mem_0_size(bundleOut_0_a_sink_io_async_mem_0_size),
+    .io_async_mem_0_source(bundleOut_0_a_sink_io_async_mem_0_source),
+    .io_async_mem_0_address(bundleOut_0_a_sink_io_async_mem_0_address),
+    .io_async_mem_0_mask(bundleOut_0_a_sink_io_async_mem_0_mask),
+    .io_async_mem_0_data(bundleOut_0_a_sink_io_async_mem_0_data),
+    .io_async_mem_0_corrupt(bundleOut_0_a_sink_io_async_mem_0_corrupt),
+    .io_async_ridx(bundleOut_0_a_sink_io_async_ridx),
+    .io_async_widx(bundleOut_0_a_sink_io_async_widx),
+    .io_async_safe_ridx_valid(bundleOut_0_a_sink_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(bundleOut_0_a_sink_io_async_safe_widx_valid),
+    .io_async_safe_source_reset_n(bundleOut_0_a_sink_io_async_safe_source_reset_n),
+    .io_async_safe_sink_reset_n(bundleOut_0_a_sink_io_async_safe_sink_reset_n)
+  );
+  AsyncQueueSource_4 bundleIn_0_d_source ( // @[AsyncQueue.scala 216:24]
+    .clock(bundleIn_0_d_source_clock),
+    .reset(bundleIn_0_d_source_reset),
+    .io_enq_ready(bundleIn_0_d_source_io_enq_ready),
+    .io_enq_valid(bundleIn_0_d_source_io_enq_valid),
+    .io_enq_bits_opcode(bundleIn_0_d_source_io_enq_bits_opcode),
+    .io_enq_bits_size(bundleIn_0_d_source_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_source_io_enq_bits_source),
+    .io_enq_bits_data(bundleIn_0_d_source_io_enq_bits_data),
+    .io_async_mem_0_opcode(bundleIn_0_d_source_io_async_mem_0_opcode),
+    .io_async_mem_0_size(bundleIn_0_d_source_io_async_mem_0_size),
+    .io_async_mem_0_source(bundleIn_0_d_source_io_async_mem_0_source),
+    .io_async_mem_0_data(bundleIn_0_d_source_io_async_mem_0_data),
+    .io_async_ridx(bundleIn_0_d_source_io_async_ridx),
+    .io_async_widx(bundleIn_0_d_source_io_async_widx),
+    .io_async_safe_ridx_valid(bundleIn_0_d_source_io_async_safe_ridx_valid),
+    .io_async_safe_widx_valid(bundleIn_0_d_source_io_async_safe_widx_valid),
+    .io_async_safe_source_reset_n(bundleIn_0_d_source_io_async_safe_source_reset_n),
+    .io_async_safe_sink_reset_n(bundleIn_0_d_source_io_async_safe_sink_reset_n)
+  );
+  assign auto_in_a_ridx = bundleOut_0_a_sink_io_async_ridx; // @[Nodes.scala 1210:84 AsyncQueue.scala 208:19]
+  assign auto_in_a_safe_ridx_valid = bundleOut_0_a_sink_io_async_safe_ridx_valid; // @[Nodes.scala 1210:84 AsyncQueue.scala 208:19]
+  assign auto_in_a_safe_sink_reset_n = bundleOut_0_a_sink_io_async_safe_sink_reset_n; // @[Nodes.scala 1210:84 AsyncQueue.scala 208:19]
+  assign auto_in_d_mem_0_opcode = bundleIn_0_d_source_io_async_mem_0_opcode; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_mem_0_size = bundleIn_0_d_source_io_async_mem_0_size; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_mem_0_source = bundleIn_0_d_source_io_async_mem_0_source; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_mem_0_data = bundleIn_0_d_source_io_async_mem_0_data; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_widx = bundleIn_0_d_source_io_async_widx; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_safe_widx_valid = bundleIn_0_d_source_io_async_safe_widx_valid; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_in_d_safe_source_reset_n = bundleIn_0_d_source_io_async_safe_source_reset_n; // @[Nodes.scala 1210:84 AsyncCrossing.scala 58:12]
+  assign auto_out_a_valid = bundleOut_0_a_sink_io_deq_valid; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_opcode = bundleOut_0_a_sink_io_deq_bits_opcode; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_param = bundleOut_0_a_sink_io_deq_bits_param; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_size = bundleOut_0_a_sink_io_deq_bits_size; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_source = bundleOut_0_a_sink_io_deq_bits_source; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_address = bundleOut_0_a_sink_io_deq_bits_address; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_mask = bundleOut_0_a_sink_io_deq_bits_mask; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_data = bundleOut_0_a_sink_io_deq_bits_data; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_a_bits_corrupt = bundleOut_0_a_sink_io_deq_bits_corrupt; // @[Nodes.scala 1207:84 AsyncCrossing.scala 57:13]
+  assign auto_out_d_ready = bundleIn_0_d_source_io_enq_ready; // @[Nodes.scala 1207:84 AsyncQueue.scala 217:19]
+  assign bundleOut_0_a_sink_clock = clock;
+  assign bundleOut_0_a_sink_reset = reset;
+  assign bundleOut_0_a_sink_io_deq_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleOut_0_a_sink_io_async_mem_0_opcode = auto_in_a_mem_0_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_param = auto_in_a_mem_0_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_size = auto_in_a_mem_0_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_source = auto_in_a_mem_0_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_address = auto_in_a_mem_0_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_mask = auto_in_a_mem_0_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_data = auto_in_a_mem_0_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_mem_0_corrupt = auto_in_a_mem_0_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_widx = auto_in_a_widx; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_safe_widx_valid = auto_in_a_safe_widx_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_a_sink_io_async_safe_source_reset_n = auto_in_a_safe_source_reset_n; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_d_source_clock = clock;
+  assign bundleIn_0_d_source_reset = reset;
+  assign bundleIn_0_d_source_io_enq_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_enq_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_enq_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_enq_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_enq_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign bundleIn_0_d_source_io_async_ridx = auto_in_d_ridx; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_d_source_io_async_safe_ridx_valid = auto_in_d_safe_ridx_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleIn_0_d_source_io_async_safe_sink_reset_n = auto_in_d_safe_sink_reset_n; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module IntSyncCrossingSource_8(
+  input   auto_in_0,
+  input   auto_in_1,
+  output  auto_out_sync_0,
+  output  auto_out_sync_1
+);
+  assign auto_out_sync_0 = auto_in_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_sync_1 = auto_in_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ResetCatchAndSync_d3(
+  input   clock,
+  input   reset,
+  output  io_sync_reset
+);
+  wire  io_sync_reset_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  io_sync_reset_chain_reset; // @[ShiftReg.scala 45:23]
+  wire  io_sync_reset_chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  io_sync_reset_chain_io_q; // @[ShiftReg.scala 45:23]
+  wire  _io_sync_reset_WIRE = io_sync_reset_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 io_sync_reset_chain ( // @[ShiftReg.scala 45:23]
+    .clock(io_sync_reset_chain_clock),
+    .reset(io_sync_reset_chain_reset),
+    .io_d(io_sync_reset_chain_io_d),
+    .io_q(io_sync_reset_chain_io_q)
+  );
+  assign io_sync_reset = ~_io_sync_reset_WIRE; // @[ResetCatchAndSync.scala 29:7]
+  assign io_sync_reset_chain_clock = clock;
+  assign io_sync_reset_chain_reset = reset; // @[ResetCatchAndSync.scala 26:27]
+  assign io_sync_reset_chain_io_d = 1'h1; // @[ShiftReg.scala 47:16]
+endmodule
+module ResetCatchAndSync_d3_1(
+  input   clock,
+  input   reset,
+  output  io_sync_reset
+);
+  wire  io_sync_reset_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  io_sync_reset_chain_reset; // @[ShiftReg.scala 45:23]
+  wire  io_sync_reset_chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  io_sync_reset_chain_io_q; // @[ShiftReg.scala 45:23]
+  wire  _io_sync_reset_WIRE = io_sync_reset_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 io_sync_reset_chain ( // @[ShiftReg.scala 45:23]
+    .clock(io_sync_reset_chain_clock),
+    .reset(io_sync_reset_chain_reset),
+    .io_d(io_sync_reset_chain_io_d),
+    .io_q(io_sync_reset_chain_io_q)
+  );
+  assign io_sync_reset = ~_io_sync_reset_WIRE; // @[ResetCatchAndSync.scala 29:7]
+  assign io_sync_reset_chain_clock = clock;
+  assign io_sync_reset_chain_reset = reset; // @[ResetCatchAndSync.scala 26:27]
+  assign io_sync_reset_chain_io_d = 1'h1; // @[ShiftReg.scala 47:16]
+endmodule
+module MockAONWrapper(
+  output        auto_intsource_out_sync_0,
+  output        auto_intsource_out_sync_1,
+  input  [2:0]  auto_isolation_in_a_mem_0_opcode,
+  input  [2:0]  auto_isolation_in_a_mem_0_param,
+  input  [1:0]  auto_isolation_in_a_mem_0_size,
+  input  [6:0]  auto_isolation_in_a_mem_0_source,
+  input  [28:0] auto_isolation_in_a_mem_0_address,
+  input  [3:0]  auto_isolation_in_a_mem_0_mask,
+  input  [31:0] auto_isolation_in_a_mem_0_data,
+  input         auto_isolation_in_a_mem_0_corrupt,
+  output        auto_isolation_in_a_ridx,
+  input         auto_isolation_in_a_widx,
+  output        auto_isolation_in_a_safe_ridx_valid,
+  input         auto_isolation_in_a_safe_widx_valid,
+  input         auto_isolation_in_a_safe_source_reset_n,
+  output        auto_isolation_in_a_safe_sink_reset_n,
+  output [2:0]  auto_isolation_in_d_mem_0_opcode,
+  output [1:0]  auto_isolation_in_d_mem_0_param,
+  output [1:0]  auto_isolation_in_d_mem_0_size,
+  output [6:0]  auto_isolation_in_d_mem_0_source,
+  output        auto_isolation_in_d_mem_0_sink,
+  output        auto_isolation_in_d_mem_0_denied,
+  output [31:0] auto_isolation_in_d_mem_0_data,
+  output        auto_isolation_in_d_mem_0_corrupt,
+  input         auto_isolation_in_d_ridx,
+  output        auto_isolation_in_d_widx,
+  input         auto_isolation_in_d_safe_ridx_valid,
+  output        auto_isolation_in_d_safe_widx_valid,
+  output        auto_isolation_in_d_safe_source_reset_n,
+  input         auto_isolation_in_d_safe_sink_reset_n,
+  input         io_pins_erst_n_i_ival,
+  input         io_pins_lfextclk_i_ival,
+  output        io_rsts_corerst,
+  output        io_rtc,
+  input         io_ndreset
+);
+  wire  aon_clock; // @[MockAONWrapper.scala 35:23]
+  wire  aon_reset; // @[MockAONWrapper.scala 35:23]
+  wire  aon_auto_int_out_0; // @[MockAONWrapper.scala 35:23]
+  wire  aon_auto_int_out_1; // @[MockAONWrapper.scala 35:23]
+  wire  aon_auto_in_a_ready; // @[MockAONWrapper.scala 35:23]
+  wire  aon_auto_in_a_valid; // @[MockAONWrapper.scala 35:23]
+  wire [2:0] aon_auto_in_a_bits_opcode; // @[MockAONWrapper.scala 35:23]
+  wire [2:0] aon_auto_in_a_bits_param; // @[MockAONWrapper.scala 35:23]
+  wire [1:0] aon_auto_in_a_bits_size; // @[MockAONWrapper.scala 35:23]
+  wire [6:0] aon_auto_in_a_bits_source; // @[MockAONWrapper.scala 35:23]
+  wire [28:0] aon_auto_in_a_bits_address; // @[MockAONWrapper.scala 35:23]
+  wire [3:0] aon_auto_in_a_bits_mask; // @[MockAONWrapper.scala 35:23]
+  wire [31:0] aon_auto_in_a_bits_data; // @[MockAONWrapper.scala 35:23]
+  wire  aon_auto_in_a_bits_corrupt; // @[MockAONWrapper.scala 35:23]
+  wire  aon_auto_in_d_ready; // @[MockAONWrapper.scala 35:23]
+  wire  aon_auto_in_d_valid; // @[MockAONWrapper.scala 35:23]
+  wire [2:0] aon_auto_in_d_bits_opcode; // @[MockAONWrapper.scala 35:23]
+  wire [1:0] aon_auto_in_d_bits_size; // @[MockAONWrapper.scala 35:23]
+  wire [6:0] aon_auto_in_d_bits_source; // @[MockAONWrapper.scala 35:23]
+  wire [31:0] aon_auto_in_d_bits_data; // @[MockAONWrapper.scala 35:23]
+  wire  aon_io_moff_corerst; // @[MockAONWrapper.scala 35:23]
+  wire  aon_io_wdog_rst; // @[MockAONWrapper.scala 35:23]
+  wire  aon_io_lfclk; // @[MockAONWrapper.scala 35:23]
+  wire  aon_io_lfextclk; // @[MockAONWrapper.scala 35:23]
+  wire  aon_io_resetCauses_wdogrst; // @[MockAONWrapper.scala 35:23]
+  wire  aon_io_resetCauses_erst; // @[MockAONWrapper.scala 35:23]
+  wire [2:0] isolation_auto_in_a_mem_0_opcode; // @[MockAONWrapper.scala 45:29]
+  wire [2:0] isolation_auto_in_a_mem_0_param; // @[MockAONWrapper.scala 45:29]
+  wire [1:0] isolation_auto_in_a_mem_0_size; // @[MockAONWrapper.scala 45:29]
+  wire [6:0] isolation_auto_in_a_mem_0_source; // @[MockAONWrapper.scala 45:29]
+  wire [28:0] isolation_auto_in_a_mem_0_address; // @[MockAONWrapper.scala 45:29]
+  wire [3:0] isolation_auto_in_a_mem_0_mask; // @[MockAONWrapper.scala 45:29]
+  wire [31:0] isolation_auto_in_a_mem_0_data; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_a_mem_0_corrupt; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_a_ridx; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_a_widx; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_a_safe_ridx_valid; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_a_safe_widx_valid; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_a_safe_source_reset_n; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_a_safe_sink_reset_n; // @[MockAONWrapper.scala 45:29]
+  wire [2:0] isolation_auto_in_d_mem_0_opcode; // @[MockAONWrapper.scala 45:29]
+  wire [1:0] isolation_auto_in_d_mem_0_param; // @[MockAONWrapper.scala 45:29]
+  wire [1:0] isolation_auto_in_d_mem_0_size; // @[MockAONWrapper.scala 45:29]
+  wire [6:0] isolation_auto_in_d_mem_0_source; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_mem_0_sink; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_mem_0_denied; // @[MockAONWrapper.scala 45:29]
+  wire [31:0] isolation_auto_in_d_mem_0_data; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_mem_0_corrupt; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_ridx; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_widx; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_safe_ridx_valid; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_safe_widx_valid; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_safe_source_reset_n; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_in_d_safe_sink_reset_n; // @[MockAONWrapper.scala 45:29]
+  wire [2:0] isolation_auto_out_a_mem_0_opcode; // @[MockAONWrapper.scala 45:29]
+  wire [2:0] isolation_auto_out_a_mem_0_param; // @[MockAONWrapper.scala 45:29]
+  wire [1:0] isolation_auto_out_a_mem_0_size; // @[MockAONWrapper.scala 45:29]
+  wire [6:0] isolation_auto_out_a_mem_0_source; // @[MockAONWrapper.scala 45:29]
+  wire [28:0] isolation_auto_out_a_mem_0_address; // @[MockAONWrapper.scala 45:29]
+  wire [3:0] isolation_auto_out_a_mem_0_mask; // @[MockAONWrapper.scala 45:29]
+  wire [31:0] isolation_auto_out_a_mem_0_data; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_a_mem_0_corrupt; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_a_ridx; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_a_widx; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_a_safe_ridx_valid; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_a_safe_widx_valid; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_a_safe_source_reset_n; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_a_safe_sink_reset_n; // @[MockAONWrapper.scala 45:29]
+  wire [2:0] isolation_auto_out_d_mem_0_opcode; // @[MockAONWrapper.scala 45:29]
+  wire [1:0] isolation_auto_out_d_mem_0_size; // @[MockAONWrapper.scala 45:29]
+  wire [6:0] isolation_auto_out_d_mem_0_source; // @[MockAONWrapper.scala 45:29]
+  wire [31:0] isolation_auto_out_d_mem_0_data; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_d_ridx; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_d_widx; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_d_safe_ridx_valid; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_d_safe_widx_valid; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_d_safe_source_reset_n; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_auto_out_d_safe_sink_reset_n; // @[MockAONWrapper.scala 45:29]
+  wire  isolation_io_iso_out; // @[MockAONWrapper.scala 45:29]
+  wire  crossing_clock; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_reset; // @[MockAONWrapper.scala 46:28]
+  wire [2:0] crossing_auto_in_a_mem_0_opcode; // @[MockAONWrapper.scala 46:28]
+  wire [2:0] crossing_auto_in_a_mem_0_param; // @[MockAONWrapper.scala 46:28]
+  wire [1:0] crossing_auto_in_a_mem_0_size; // @[MockAONWrapper.scala 46:28]
+  wire [6:0] crossing_auto_in_a_mem_0_source; // @[MockAONWrapper.scala 46:28]
+  wire [28:0] crossing_auto_in_a_mem_0_address; // @[MockAONWrapper.scala 46:28]
+  wire [3:0] crossing_auto_in_a_mem_0_mask; // @[MockAONWrapper.scala 46:28]
+  wire [31:0] crossing_auto_in_a_mem_0_data; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_a_mem_0_corrupt; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_a_ridx; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_a_widx; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_a_safe_ridx_valid; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_a_safe_widx_valid; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_a_safe_source_reset_n; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_a_safe_sink_reset_n; // @[MockAONWrapper.scala 46:28]
+  wire [2:0] crossing_auto_in_d_mem_0_opcode; // @[MockAONWrapper.scala 46:28]
+  wire [1:0] crossing_auto_in_d_mem_0_size; // @[MockAONWrapper.scala 46:28]
+  wire [6:0] crossing_auto_in_d_mem_0_source; // @[MockAONWrapper.scala 46:28]
+  wire [31:0] crossing_auto_in_d_mem_0_data; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_d_ridx; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_d_widx; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_d_safe_ridx_valid; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_d_safe_widx_valid; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_d_safe_source_reset_n; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_in_d_safe_sink_reset_n; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_out_a_ready; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_out_a_valid; // @[MockAONWrapper.scala 46:28]
+  wire [2:0] crossing_auto_out_a_bits_opcode; // @[MockAONWrapper.scala 46:28]
+  wire [2:0] crossing_auto_out_a_bits_param; // @[MockAONWrapper.scala 46:28]
+  wire [1:0] crossing_auto_out_a_bits_size; // @[MockAONWrapper.scala 46:28]
+  wire [6:0] crossing_auto_out_a_bits_source; // @[MockAONWrapper.scala 46:28]
+  wire [28:0] crossing_auto_out_a_bits_address; // @[MockAONWrapper.scala 46:28]
+  wire [3:0] crossing_auto_out_a_bits_mask; // @[MockAONWrapper.scala 46:28]
+  wire [31:0] crossing_auto_out_a_bits_data; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_out_a_bits_corrupt; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_out_d_ready; // @[MockAONWrapper.scala 46:28]
+  wire  crossing_auto_out_d_valid; // @[MockAONWrapper.scala 46:28]
+  wire [2:0] crossing_auto_out_d_bits_opcode; // @[MockAONWrapper.scala 46:28]
+  wire [1:0] crossing_auto_out_d_bits_size; // @[MockAONWrapper.scala 46:28]
+  wire [6:0] crossing_auto_out_d_bits_source; // @[MockAONWrapper.scala 46:28]
+  wire [31:0] crossing_auto_out_d_bits_data; // @[MockAONWrapper.scala 46:28]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_1; // @[Crossing.scala 26:31]
+  wire  aonrst_catch_clock; // @[MockAONWrapper.scala 99:31]
+  wire  aonrst_catch_reset; // @[MockAONWrapper.scala 99:31]
+  wire  aonrst_catch_io_sync_reset; // @[MockAONWrapper.scala 99:31]
+  wire  crossing_slave_reset_catcher_clock; // @[ResetCatchAndSync.scala 39:28]
+  wire  crossing_slave_reset_catcher_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  crossing_slave_reset_catcher_io_sync_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  erst = ~io_pins_erst_n_i_ival; // @[MockAONWrapper.scala 67:16]
+  wire  _crossing_slave_reset_T = aon_reset; // @[compatibility.scala 290:56]
+  TLMockAON aon ( // @[MockAONWrapper.scala 35:23]
+    .clock(aon_clock),
+    .reset(aon_reset),
+    .auto_int_out_0(aon_auto_int_out_0),
+    .auto_int_out_1(aon_auto_int_out_1),
+    .auto_in_a_ready(aon_auto_in_a_ready),
+    .auto_in_a_valid(aon_auto_in_a_valid),
+    .auto_in_a_bits_opcode(aon_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(aon_auto_in_a_bits_param),
+    .auto_in_a_bits_size(aon_auto_in_a_bits_size),
+    .auto_in_a_bits_source(aon_auto_in_a_bits_source),
+    .auto_in_a_bits_address(aon_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(aon_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(aon_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(aon_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(aon_auto_in_d_ready),
+    .auto_in_d_valid(aon_auto_in_d_valid),
+    .auto_in_d_bits_opcode(aon_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(aon_auto_in_d_bits_size),
+    .auto_in_d_bits_source(aon_auto_in_d_bits_source),
+    .auto_in_d_bits_data(aon_auto_in_d_bits_data),
+    .io_moff_corerst(aon_io_moff_corerst),
+    .io_wdog_rst(aon_io_wdog_rst),
+    .io_lfclk(aon_io_lfclk),
+    .io_lfextclk(aon_io_lfextclk),
+    .io_resetCauses_wdogrst(aon_io_resetCauses_wdogrst),
+    .io_resetCauses_erst(aon_io_resetCauses_erst)
+  );
+  TLIsolation isolation ( // @[MockAONWrapper.scala 45:29]
+    .auto_in_a_mem_0_opcode(isolation_auto_in_a_mem_0_opcode),
+    .auto_in_a_mem_0_param(isolation_auto_in_a_mem_0_param),
+    .auto_in_a_mem_0_size(isolation_auto_in_a_mem_0_size),
+    .auto_in_a_mem_0_source(isolation_auto_in_a_mem_0_source),
+    .auto_in_a_mem_0_address(isolation_auto_in_a_mem_0_address),
+    .auto_in_a_mem_0_mask(isolation_auto_in_a_mem_0_mask),
+    .auto_in_a_mem_0_data(isolation_auto_in_a_mem_0_data),
+    .auto_in_a_mem_0_corrupt(isolation_auto_in_a_mem_0_corrupt),
+    .auto_in_a_ridx(isolation_auto_in_a_ridx),
+    .auto_in_a_widx(isolation_auto_in_a_widx),
+    .auto_in_a_safe_ridx_valid(isolation_auto_in_a_safe_ridx_valid),
+    .auto_in_a_safe_widx_valid(isolation_auto_in_a_safe_widx_valid),
+    .auto_in_a_safe_source_reset_n(isolation_auto_in_a_safe_source_reset_n),
+    .auto_in_a_safe_sink_reset_n(isolation_auto_in_a_safe_sink_reset_n),
+    .auto_in_d_mem_0_opcode(isolation_auto_in_d_mem_0_opcode),
+    .auto_in_d_mem_0_param(isolation_auto_in_d_mem_0_param),
+    .auto_in_d_mem_0_size(isolation_auto_in_d_mem_0_size),
+    .auto_in_d_mem_0_source(isolation_auto_in_d_mem_0_source),
+    .auto_in_d_mem_0_sink(isolation_auto_in_d_mem_0_sink),
+    .auto_in_d_mem_0_denied(isolation_auto_in_d_mem_0_denied),
+    .auto_in_d_mem_0_data(isolation_auto_in_d_mem_0_data),
+    .auto_in_d_mem_0_corrupt(isolation_auto_in_d_mem_0_corrupt),
+    .auto_in_d_ridx(isolation_auto_in_d_ridx),
+    .auto_in_d_widx(isolation_auto_in_d_widx),
+    .auto_in_d_safe_ridx_valid(isolation_auto_in_d_safe_ridx_valid),
+    .auto_in_d_safe_widx_valid(isolation_auto_in_d_safe_widx_valid),
+    .auto_in_d_safe_source_reset_n(isolation_auto_in_d_safe_source_reset_n),
+    .auto_in_d_safe_sink_reset_n(isolation_auto_in_d_safe_sink_reset_n),
+    .auto_out_a_mem_0_opcode(isolation_auto_out_a_mem_0_opcode),
+    .auto_out_a_mem_0_param(isolation_auto_out_a_mem_0_param),
+    .auto_out_a_mem_0_size(isolation_auto_out_a_mem_0_size),
+    .auto_out_a_mem_0_source(isolation_auto_out_a_mem_0_source),
+    .auto_out_a_mem_0_address(isolation_auto_out_a_mem_0_address),
+    .auto_out_a_mem_0_mask(isolation_auto_out_a_mem_0_mask),
+    .auto_out_a_mem_0_data(isolation_auto_out_a_mem_0_data),
+    .auto_out_a_mem_0_corrupt(isolation_auto_out_a_mem_0_corrupt),
+    .auto_out_a_ridx(isolation_auto_out_a_ridx),
+    .auto_out_a_widx(isolation_auto_out_a_widx),
+    .auto_out_a_safe_ridx_valid(isolation_auto_out_a_safe_ridx_valid),
+    .auto_out_a_safe_widx_valid(isolation_auto_out_a_safe_widx_valid),
+    .auto_out_a_safe_source_reset_n(isolation_auto_out_a_safe_source_reset_n),
+    .auto_out_a_safe_sink_reset_n(isolation_auto_out_a_safe_sink_reset_n),
+    .auto_out_d_mem_0_opcode(isolation_auto_out_d_mem_0_opcode),
+    .auto_out_d_mem_0_size(isolation_auto_out_d_mem_0_size),
+    .auto_out_d_mem_0_source(isolation_auto_out_d_mem_0_source),
+    .auto_out_d_mem_0_data(isolation_auto_out_d_mem_0_data),
+    .auto_out_d_ridx(isolation_auto_out_d_ridx),
+    .auto_out_d_widx(isolation_auto_out_d_widx),
+    .auto_out_d_safe_ridx_valid(isolation_auto_out_d_safe_ridx_valid),
+    .auto_out_d_safe_widx_valid(isolation_auto_out_d_safe_widx_valid),
+    .auto_out_d_safe_source_reset_n(isolation_auto_out_d_safe_source_reset_n),
+    .auto_out_d_safe_sink_reset_n(isolation_auto_out_d_safe_sink_reset_n),
+    .io_iso_out(isolation_io_iso_out)
+  );
+  TLAsyncCrossingSink_1 crossing ( // @[MockAONWrapper.scala 46:28]
+    .clock(crossing_clock),
+    .reset(crossing_reset),
+    .auto_in_a_mem_0_opcode(crossing_auto_in_a_mem_0_opcode),
+    .auto_in_a_mem_0_param(crossing_auto_in_a_mem_0_param),
+    .auto_in_a_mem_0_size(crossing_auto_in_a_mem_0_size),
+    .auto_in_a_mem_0_source(crossing_auto_in_a_mem_0_source),
+    .auto_in_a_mem_0_address(crossing_auto_in_a_mem_0_address),
+    .auto_in_a_mem_0_mask(crossing_auto_in_a_mem_0_mask),
+    .auto_in_a_mem_0_data(crossing_auto_in_a_mem_0_data),
+    .auto_in_a_mem_0_corrupt(crossing_auto_in_a_mem_0_corrupt),
+    .auto_in_a_ridx(crossing_auto_in_a_ridx),
+    .auto_in_a_widx(crossing_auto_in_a_widx),
+    .auto_in_a_safe_ridx_valid(crossing_auto_in_a_safe_ridx_valid),
+    .auto_in_a_safe_widx_valid(crossing_auto_in_a_safe_widx_valid),
+    .auto_in_a_safe_source_reset_n(crossing_auto_in_a_safe_source_reset_n),
+    .auto_in_a_safe_sink_reset_n(crossing_auto_in_a_safe_sink_reset_n),
+    .auto_in_d_mem_0_opcode(crossing_auto_in_d_mem_0_opcode),
+    .auto_in_d_mem_0_size(crossing_auto_in_d_mem_0_size),
+    .auto_in_d_mem_0_source(crossing_auto_in_d_mem_0_source),
+    .auto_in_d_mem_0_data(crossing_auto_in_d_mem_0_data),
+    .auto_in_d_ridx(crossing_auto_in_d_ridx),
+    .auto_in_d_widx(crossing_auto_in_d_widx),
+    .auto_in_d_safe_ridx_valid(crossing_auto_in_d_safe_ridx_valid),
+    .auto_in_d_safe_widx_valid(crossing_auto_in_d_safe_widx_valid),
+    .auto_in_d_safe_source_reset_n(crossing_auto_in_d_safe_source_reset_n),
+    .auto_in_d_safe_sink_reset_n(crossing_auto_in_d_safe_sink_reset_n),
+    .auto_out_a_ready(crossing_auto_out_a_ready),
+    .auto_out_a_valid(crossing_auto_out_a_valid),
+    .auto_out_a_bits_opcode(crossing_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(crossing_auto_out_a_bits_param),
+    .auto_out_a_bits_size(crossing_auto_out_a_bits_size),
+    .auto_out_a_bits_source(crossing_auto_out_a_bits_source),
+    .auto_out_a_bits_address(crossing_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(crossing_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(crossing_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(crossing_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(crossing_auto_out_d_ready),
+    .auto_out_d_valid(crossing_auto_out_d_valid),
+    .auto_out_d_bits_opcode(crossing_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(crossing_auto_out_d_bits_size),
+    .auto_out_d_bits_source(crossing_auto_out_d_bits_source),
+    .auto_out_d_bits_data(crossing_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_8 intsource ( // @[Crossing.scala 26:31]
+    .auto_in_0(intsource_auto_in_0),
+    .auto_in_1(intsource_auto_in_1),
+    .auto_out_sync_0(intsource_auto_out_sync_0),
+    .auto_out_sync_1(intsource_auto_out_sync_1)
+  );
+  ResetCatchAndSync_d3 aonrst_catch ( // @[MockAONWrapper.scala 99:31]
+    .clock(aonrst_catch_clock),
+    .reset(aonrst_catch_reset),
+    .io_sync_reset(aonrst_catch_io_sync_reset)
+  );
+  ResetCatchAndSync_d3_1 crossing_slave_reset_catcher ( // @[ResetCatchAndSync.scala 39:28]
+    .clock(crossing_slave_reset_catcher_clock),
+    .reset(crossing_slave_reset_catcher_reset),
+    .io_sync_reset(crossing_slave_reset_catcher_io_sync_reset)
+  );
+  assign auto_intsource_out_sync_0 = intsource_auto_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_intsource_out_sync_1 = intsource_auto_out_sync_1; // @[LazyModule.scala 311:12]
+  assign auto_isolation_in_a_ridx = isolation_auto_in_a_ridx; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_a_safe_ridx_valid = isolation_auto_in_a_safe_ridx_valid; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_a_safe_sink_reset_n = isolation_auto_in_a_safe_sink_reset_n; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_mem_0_opcode = isolation_auto_in_d_mem_0_opcode; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_mem_0_param = isolation_auto_in_d_mem_0_param; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_mem_0_size = isolation_auto_in_d_mem_0_size; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_mem_0_source = isolation_auto_in_d_mem_0_source; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_mem_0_sink = isolation_auto_in_d_mem_0_sink; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_mem_0_denied = isolation_auto_in_d_mem_0_denied; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_mem_0_data = isolation_auto_in_d_mem_0_data; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_mem_0_corrupt = isolation_auto_in_d_mem_0_corrupt; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_widx = isolation_auto_in_d_widx; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_safe_widx_valid = isolation_auto_in_d_safe_widx_valid; // @[LazyModule.scala 309:16]
+  assign auto_isolation_in_d_safe_source_reset_n = isolation_auto_in_d_safe_source_reset_n; // @[LazyModule.scala 309:16]
+  assign io_rsts_corerst = aon_io_moff_corerst; // @[MockAONWrapper.scala 81:22]
+  assign io_rtc = aon_io_lfclk; // @[MockAONWrapper.scala 143:12]
+  assign aon_clock = aon_io_lfclk; // @[MockAONWrapper.scala 104:22]
+  assign aon_reset = aonrst_catch_io_sync_reset; // @[MockAONWrapper.scala 102:22]
+  assign aon_auto_in_a_valid = crossing_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_a_bits_opcode = crossing_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_a_bits_param = crossing_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_a_bits_size = crossing_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_a_bits_source = crossing_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_a_bits_address = crossing_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_a_bits_mask = crossing_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_a_bits_data = crossing_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_a_bits_corrupt = crossing_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign aon_auto_in_d_ready = crossing_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign aon_io_lfextclk = io_pins_lfextclk_i_ival; // @[MockAONWrapper.scala 94:33]
+  assign aon_io_resetCauses_wdogrst = aon_io_wdog_rst; // @[MockAONWrapper.scala 69:32]
+  assign aon_io_resetCauses_erst = ~io_pins_erst_n_i_ival; // @[MockAONWrapper.scala 67:16]
+  assign isolation_auto_in_a_mem_0_opcode = auto_isolation_in_a_mem_0_opcode; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_mem_0_param = auto_isolation_in_a_mem_0_param; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_mem_0_size = auto_isolation_in_a_mem_0_size; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_mem_0_source = auto_isolation_in_a_mem_0_source; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_mem_0_address = auto_isolation_in_a_mem_0_address; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_mem_0_mask = auto_isolation_in_a_mem_0_mask; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_mem_0_data = auto_isolation_in_a_mem_0_data; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_mem_0_corrupt = auto_isolation_in_a_mem_0_corrupt; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_widx = auto_isolation_in_a_widx; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_safe_widx_valid = auto_isolation_in_a_safe_widx_valid; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_a_safe_source_reset_n = auto_isolation_in_a_safe_source_reset_n; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_d_ridx = auto_isolation_in_d_ridx; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_d_safe_ridx_valid = auto_isolation_in_d_safe_ridx_valid; // @[LazyModule.scala 309:16]
+  assign isolation_auto_in_d_safe_sink_reset_n = auto_isolation_in_d_safe_sink_reset_n; // @[LazyModule.scala 309:16]
+  assign isolation_auto_out_a_ridx = crossing_auto_in_a_ridx; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_a_safe_ridx_valid = crossing_auto_in_a_safe_ridx_valid; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_a_safe_sink_reset_n = crossing_auto_in_a_safe_sink_reset_n; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_d_mem_0_opcode = crossing_auto_in_d_mem_0_opcode; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_d_mem_0_size = crossing_auto_in_d_mem_0_size; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_d_mem_0_source = crossing_auto_in_d_mem_0_source; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_d_mem_0_data = crossing_auto_in_d_mem_0_data; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_d_widx = crossing_auto_in_d_widx; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_d_safe_widx_valid = crossing_auto_in_d_safe_widx_valid; // @[LazyModule.scala 298:16]
+  assign isolation_auto_out_d_safe_source_reset_n = crossing_auto_in_d_safe_source_reset_n; // @[LazyModule.scala 298:16]
+  assign isolation_io_iso_out = aon_io_moff_corerst; // @[MockAONWrapper.scala 123:33]
+  assign crossing_clock = aon_io_lfclk; // @[MockAONWrapper.scala 118:27]
+  assign crossing_reset = crossing_slave_reset_catcher_io_sync_reset; // @[MockAONWrapper.scala 119:27]
+  assign crossing_auto_in_a_mem_0_opcode = isolation_auto_out_a_mem_0_opcode; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_mem_0_param = isolation_auto_out_a_mem_0_param; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_mem_0_size = isolation_auto_out_a_mem_0_size; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_mem_0_source = isolation_auto_out_a_mem_0_source; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_mem_0_address = isolation_auto_out_a_mem_0_address; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_mem_0_mask = isolation_auto_out_a_mem_0_mask; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_mem_0_data = isolation_auto_out_a_mem_0_data; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_mem_0_corrupt = isolation_auto_out_a_mem_0_corrupt; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_widx = isolation_auto_out_a_widx; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_safe_widx_valid = isolation_auto_out_a_safe_widx_valid; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_a_safe_source_reset_n = isolation_auto_out_a_safe_source_reset_n; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_d_ridx = isolation_auto_out_d_ridx; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_d_safe_ridx_valid = isolation_auto_out_d_safe_ridx_valid; // @[LazyModule.scala 298:16]
+  assign crossing_auto_in_d_safe_sink_reset_n = isolation_auto_out_d_safe_sink_reset_n; // @[LazyModule.scala 298:16]
+  assign crossing_auto_out_a_ready = aon_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign crossing_auto_out_d_valid = aon_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign crossing_auto_out_d_bits_opcode = aon_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign crossing_auto_out_d_bits_size = aon_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign crossing_auto_out_d_bits_source = aon_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign crossing_auto_out_d_bits_data = aon_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign intsource_auto_in_0 = aon_auto_int_out_0; // @[LazyModule.scala 298:16]
+  assign intsource_auto_in_1 = aon_auto_int_out_1; // @[LazyModule.scala 298:16]
+  assign aonrst_catch_clock = aon_io_lfclk; // @[MockAONWrapper.scala 101:24]
+  assign aonrst_catch_reset = erst | aon_io_wdog_rst | io_ndreset; // @[MockAONWrapper.scala 100:50]
+  assign crossing_slave_reset_catcher_clock = aon_io_lfclk;
+  assign crossing_slave_reset_catcher_reset = aon_io_moff_corerst | _crossing_slave_reset_T; // @[MockAONWrapper.scala 116:34]
+endmodule
+module SynchronizerShiftReg_w2_d3(
+  input        clock,
+  input  [1:0] io_d,
+  output [1:0] io_q
+);
+  wire  output_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_1_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_1_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_1_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_1 = output_chain_1_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_0 = output_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_clock),
+    .io_d(output_chain_io_d),
+    .io_q(output_chain_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_1 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_1_clock),
+    .io_d(output_chain_1_io_d),
+    .io_q(output_chain_1_io_q)
+  );
+  assign io_q = {output_1,output_0}; // @[Cat.scala 31:58]
+  assign output_chain_clock = clock;
+  assign output_chain_io_d = io_d[0]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_1_clock = clock;
+  assign output_chain_1_io_d = io_d[1]; // @[SynchronizerReg.scala 173:39]
+endmodule
+module IntSyncAsyncCrossingSink_1(
+  input   clock,
+  input   auto_in_sync_0,
+  input   auto_in_sync_1,
+  output  auto_out_0,
+  output  auto_out_1
+);
+  wire  chain_clock; // @[ShiftReg.scala 45:23]
+  wire [1:0] chain_io_d; // @[ShiftReg.scala 45:23]
+  wire [1:0] chain_io_q; // @[ShiftReg.scala 45:23]
+  wire [1:0] _WIRE_1 = chain_io_q;
+  SynchronizerShiftReg_w2_d3 chain ( // @[ShiftReg.scala 45:23]
+    .clock(chain_clock),
+    .io_d(chain_io_d),
+    .io_q(chain_io_q)
+  );
+  assign auto_out_0 = _WIRE_1[0]; // @[ShiftReg.scala 48:24]
+  assign auto_out_1 = _WIRE_1[1]; // @[ShiftReg.scala 48:24]
+  assign chain_clock = clock;
+  assign chain_io_d = {auto_in_sync_1,auto_in_sync_0}; // @[ShiftReg.scala 47:22]
+endmodule
+module TLBuffer_13(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [1:0]  auto_in_a_bits_size,
+  input  [6:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input  [31:0] auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output [1:0]  auto_in_d_bits_size,
+  output [6:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output [1:0]  auto_out_a_bits_size,
+  output [6:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [3:0]  auto_out_a_bits_mask,
+  output [31:0] auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input  [1:0]  auto_out_d_bits_size,
+  input  [6:0]  auto_out_d_bits_source,
+  input  [31:0] auto_out_d_bits_data
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_56(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10013000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module UARTTx(
+  input         clock,
+  input         reset,
+  input         io_en,
+  output        io_in_ready,
+  input         io_in_valid,
+  input  [7:0]  io_in_bits,
+  output        io_out,
+  input  [15:0] io_div,
+  input         io_nstop
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  reg [15:0] prescaler; // @[UARTTx.scala 23:22]
+  wire  pulse = prescaler == 16'h0; // @[UARTTx.scala 24:26]
+  reg [3:0] counter; // @[UARTTx.scala 27:20]
+  reg [8:0] shifter; // @[UARTTx.scala 28:20]
+  reg  out; // @[UARTTx.scala 29:16]
+  wire  plusarg_tx = |plusarg_reader_out; // @[UARTTx.scala 32:90]
+  wire  busy = counter != 4'h0; // @[UARTTx.scala 34:23]
+  wire  _T = io_in_ready & io_in_valid; // @[Decoupled.scala 50:35]
+  wire [9:0] _shifter_T_1 = {1'h1,io_in_bits,1'h0}; // @[Cat.scala 31:58]
+  wire  _counter_T = ~io_nstop; // @[UARTTx.scala 57:19]
+  wire [3:0] _counter_T_2 = _counter_T ? 4'ha : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _counter_T_3 = io_nstop ? 4'hb : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _counter_T_4 = _counter_T_2 | _counter_T_3; // @[Mux.scala 27:73]
+  wire [3:0] _counter_T_6 = _counter_T_4 - 4'h0; // @[UARTTx.scala 57:53]
+  wire [9:0] _GEN_0 = _T & plusarg_tx ? _shifter_T_1 : {{1'd0}, shifter}; // @[UARTTx.scala 40:37 55:15 28:20]
+  wire [15:0] _prescaler_T_2 = prescaler - 16'h1; // @[UARTTx.scala 61:78]
+  wire [3:0] _counter_T_8 = counter - 4'h1; // @[UARTTx.scala 64:24]
+  wire [8:0] _shifter_T_3 = {1'h1,shifter[8:1]}; // @[Cat.scala 31:58]
+  wire [9:0] _GEN_4 = pulse & busy ? {{1'd0}, _shifter_T_3} : _GEN_0; // @[UARTTx.scala 63:24 65:13]
+  wire  _GEN_5 = pulse & busy ? shifter[0] : out; // @[UARTTx.scala 29:16 63:24 66:9]
+  plusarg_reader #(.FORMAT("uart_tx=%d"), .DEFAULT(1), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  assign io_in_ready = io_en & ~busy; // @[UARTTx.scala 35:24]
+  assign io_out = out; // @[UARTTx.scala 30:10]
+  always @(posedge clock) begin
+    if (reset) begin // @[UARTTx.scala 23:22]
+      prescaler <= 16'h0; // @[UARTTx.scala 23:22]
+    end else if (busy) begin // @[UARTTx.scala 60:15]
+      if (pulse) begin // @[UARTTx.scala 61:21]
+        prescaler <= io_div;
+      end else begin
+        prescaler <= _prescaler_T_2;
+      end
+    end
+    if (reset) begin // @[UARTTx.scala 27:20]
+      counter <= 4'h0; // @[UARTTx.scala 27:20]
+    end else if (pulse & busy) begin // @[UARTTx.scala 63:24]
+      counter <= _counter_T_8; // @[UARTTx.scala 64:13]
+    end else if (_T & plusarg_tx) begin // @[UARTTx.scala 40:37]
+      counter <= _counter_T_6; // @[UARTTx.scala 56:15]
+    end
+    shifter <= _GEN_4[8:0];
+    out <= reset | _GEN_5; // @[UARTTx.scala 29:{16,16}]
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T & ~reset) begin
+          $fwrite(32'h80000002,"UART TX (%x): %c\n",io_in_bits,io_in_bits); // @[UARTTx.scala 38:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  prescaler = _RAND_0[15:0];
+  _RAND_1 = {1{`RANDOM}};
+  counter = _RAND_1[3:0];
+  _RAND_2 = {1{`RANDOM}};
+  shifter = _RAND_2[8:0];
+  _RAND_3 = {1{`RANDOM}};
+  out = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module QueueCompatibility(
+  input        clock,
+  input        reset,
+  output       io_enq_ready,
+  input        io_enq_valid,
+  input  [7:0] io_enq_bits,
+  input        io_deq_ready,
+  output       io_deq_valid,
+  output [7:0] io_deq_bits,
+  output [3:0] io_count
+);
+`ifdef RANDOMIZE_MEM_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  reg [7:0] ram [0:7]; // @[Decoupled.scala 259:95]
+  wire  ram_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_io_deq_bits_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire [7:0] ram_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7:0] ram_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2:0] ram_MPORT_addr; // @[Decoupled.scala 259:95]
+  wire  ram_MPORT_mask; // @[Decoupled.scala 259:95]
+  wire  ram_MPORT_en; // @[Decoupled.scala 259:95]
+  reg [2:0] enq_ptr_value; // @[Counter.scala 62:40]
+  reg [2:0] deq_ptr_value; // @[Counter.scala 62:40]
+  reg  maybe_full; // @[Decoupled.scala 262:27]
+  wire  ptr_match = enq_ptr_value == deq_ptr_value; // @[Decoupled.scala 263:33]
+  wire  empty = ptr_match & ~maybe_full; // @[Decoupled.scala 264:25]
+  wire  full = ptr_match & maybe_full; // @[Decoupled.scala 265:24]
+  wire  do_enq = io_enq_ready & io_enq_valid; // @[Decoupled.scala 50:35]
+  wire  do_deq = io_deq_ready & io_deq_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] _value_T_1 = enq_ptr_value + 3'h1; // @[Counter.scala 78:24]
+  wire [2:0] _value_T_3 = deq_ptr_value + 3'h1; // @[Counter.scala 78:24]
+  wire [2:0] ptr_diff = enq_ptr_value - deq_ptr_value; // @[Decoupled.scala 312:32]
+  wire [3:0] _io_count_T_1 = maybe_full & ptr_match ? 4'h8 : 4'h0; // @[Decoupled.scala 315:20]
+  wire [3:0] _GEN_11 = {{1'd0}, ptr_diff}; // @[Decoupled.scala 315:62]
+  assign ram_io_deq_bits_MPORT_en = 1'h1;
+  assign ram_io_deq_bits_MPORT_addr = deq_ptr_value;
+  assign ram_io_deq_bits_MPORT_data = ram[ram_io_deq_bits_MPORT_addr]; // @[Decoupled.scala 259:95]
+  assign ram_MPORT_data = io_enq_bits;
+  assign ram_MPORT_addr = enq_ptr_value;
+  assign ram_MPORT_mask = 1'h1;
+  assign ram_MPORT_en = io_enq_ready & io_enq_valid;
+  assign io_enq_ready = ~full; // @[Decoupled.scala 289:19]
+  assign io_deq_valid = ~empty; // @[Decoupled.scala 288:19]
+  assign io_deq_bits = ram_io_deq_bits_MPORT_data; // @[Decoupled.scala 296:17]
+  assign io_count = _io_count_T_1 | _GEN_11; // @[Decoupled.scala 315:62]
+  always @(posedge clock) begin
+    if (ram_MPORT_en & ram_MPORT_mask) begin
+      ram[ram_MPORT_addr] <= ram_MPORT_data; // @[Decoupled.scala 259:95]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      enq_ptr_value <= 3'h0; // @[Counter.scala 62:40]
+    end else if (do_enq) begin // @[Decoupled.scala 272:16]
+      enq_ptr_value <= _value_T_1; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      deq_ptr_value <= 3'h0; // @[Counter.scala 62:40]
+    end else if (do_deq) begin // @[Decoupled.scala 276:16]
+      deq_ptr_value <= _value_T_3; // @[Counter.scala 78:15]
+    end
+    if (reset) begin // @[Decoupled.scala 262:27]
+      maybe_full <= 1'h0; // @[Decoupled.scala 262:27]
+    end else if (do_enq != do_deq) begin // @[Decoupled.scala 279:27]
+      maybe_full <= do_enq; // @[Decoupled.scala 280:16]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 8; initvar = initvar+1)
+    ram[initvar] = _RAND_0[7:0];
+`endif // RANDOMIZE_MEM_INIT
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_1 = {1{`RANDOM}};
+  enq_ptr_value = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  deq_ptr_value = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  maybe_full = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module UARTRx(
+  input         clock,
+  input         reset,
+  input         io_en,
+  input         io_in,
+  output        io_out_valid,
+  output [7:0]  io_out_bits,
+  input  [15:0] io_div
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  reg [1:0] debounce; // @[UARTRx.scala 24:21]
+  wire  debounce_max = debounce == 2'h3; // @[UARTRx.scala 25:32]
+  wire  debounce_min = debounce == 2'h0; // @[UARTRx.scala 26:32]
+  reg [12:0] prescaler; // @[UARTRx.scala 28:22]
+  wire  pulse = prescaler == 13'h0; // @[UARTRx.scala 30:26]
+  reg [3:0] data_count; // @[UARTRx.scala 34:23]
+  wire  data_last = data_count == 4'h0; // @[UARTRx.scala 35:31]
+  reg [3:0] sample_count; // @[UARTRx.scala 37:25]
+  wire  sample_mid = sample_count == 4'h7; // @[UARTRx.scala 38:34]
+  wire [7:0] _countdown_T = {data_count,sample_count}; // @[Cat.scala 31:58]
+  wire [7:0] countdown = _countdown_T - 8'h1; // @[UARTRx.scala 40:49]
+  wire [3:0] remainder = io_div[3:0]; // @[UARTRx.scala 45:25]
+  wire  extend = sample_count < remainder; // @[UARTRx.scala 46:30]
+  reg  state; // @[UARTRx.scala 61:18]
+  wire  _T_5 = ~io_in; // @[UARTRx.scala 68:13]
+  wire  _GEN_8 = ~io_in & debounce_max; // @[UARTRx.scala 68:21]
+  wire  start = ~state & _GEN_8; // @[UARTRx.scala 63:18]
+  wire  restore = start | pulse; // @[UARTRx.scala 47:23]
+  wire [12:0] prescaler_in = restore ? {{1'd0}, io_div[15:4]} : prescaler; // @[UARTRx.scala 48:25]
+  wire  _prescaler_next_T_1 = restore & extend ? 1'h0 : 1'h1; // @[UARTRx.scala 49:42]
+  wire [12:0] _GEN_41 = {{12'd0}, _prescaler_next_T_1}; // @[UARTRx.scala 49:37]
+  wire [12:0] prescaler_next = prescaler_in - _GEN_41; // @[UARTRx.scala 49:37]
+  reg [2:0] sample; // @[UARTRx.scala 51:19]
+  wire  _voter_T_3 = sample[0] & sample[1]; // @[Misc.scala 166:48]
+  wire  _voter_T_4 = sample[0] & sample[2]; // @[Misc.scala 166:48]
+  wire  _voter_T_6 = sample[1] & sample[2]; // @[Misc.scala 166:48]
+  wire  voter = _voter_T_3 | _voter_T_4 | _voter_T_6; // @[Misc.scala 167:22]
+  reg [7:0] shifter; // @[UARTRx.scala 53:20]
+  reg  valid; // @[UARTRx.scala 55:18]
+  wire [1:0] _debounce_T_1 = debounce - 2'h1; // @[UARTRx.scala 66:30]
+  wire [1:0] _GEN_0 = ~_T_5 & ~debounce_min ? _debounce_T_1 : debounce; // @[UARTRx.scala 65:41 66:18 24:21]
+  wire [1:0] _debounce_T_3 = debounce + 2'h1; // @[UARTRx.scala 69:30]
+  wire [3:0] _data_count_T_3 = 4'h9 - 4'h0; // @[UARTRx.scala 74:94]
+  wire  _GEN_1 = debounce_max | state; // @[UARTRx.scala 70:29 71:17 61:18]
+  wire [3:0] _sample_T = {sample,io_in}; // @[Cat.scala 31:58]
+  wire [7:0] _shifter_T_1 = {voter,shifter[7:1]}; // @[Cat.scala 31:58]
+  wire  _GEN_12 = data_last ? 1'h0 : state; // @[UARTRx.scala 102:30 103:21 61:18]
+  wire [7:0] _GEN_14 = data_last ? shifter : _shifter_T_1; // @[UARTRx.scala 102:30 53:20 106:23]
+  wire  _GEN_15 = sample_mid ? _GEN_12 : state; // @[UARTRx.scala 61:18 87:27]
+  wire  _GEN_16 = sample_mid & data_last; // @[UARTRx.scala 87:27 56:9]
+  wire [3:0] _GEN_18 = pulse ? _sample_T : {{1'd0}, sample}; // @[UARTRx.scala 82:20 83:16 51:19]
+  wire  _GEN_22 = pulse & _GEN_16; // @[UARTRx.scala 82:20 56:9]
+  wire [3:0] _GEN_25 = state ? _GEN_18 : {{1'd0}, sample}; // @[UARTRx.scala 63:18 51:19]
+  wire [3:0] _GEN_37 = ~state ? {{1'd0}, sample} : _GEN_25; // @[UARTRx.scala 63:18 51:19]
+  assign io_out_valid = valid; // @[UARTRx.scala 57:16]
+  assign io_out_bits = shifter; // @[UARTRx.scala 58:15]
+  always @(posedge clock) begin
+    if (reset) begin // @[UARTRx.scala 24:21]
+      debounce <= 2'h0; // @[UARTRx.scala 24:21]
+    end else if (~io_en) begin // @[UARTRx.scala 114:17]
+      debounce <= 2'h0; // @[UARTRx.scala 115:14]
+    end else if (~state) begin // @[UARTRx.scala 63:18]
+      if (~io_in) begin // @[UARTRx.scala 68:21]
+        debounce <= _debounce_T_3; // @[UARTRx.scala 69:18]
+      end else begin
+        debounce <= _GEN_0;
+      end
+    end
+    if (~state) begin // @[UARTRx.scala 63:18]
+      if (~io_in) begin // @[UARTRx.scala 68:21]
+        if (debounce_max) begin // @[UARTRx.scala 70:29]
+          prescaler <= prescaler_next; // @[UARTRx.scala 73:21]
+        end
+      end
+    end else if (state) begin // @[UARTRx.scala 63:18]
+      prescaler <= prescaler_next; // @[UARTRx.scala 81:17]
+    end
+    if (~state) begin // @[UARTRx.scala 63:18]
+      if (~io_in) begin // @[UARTRx.scala 68:21]
+        if (debounce_max) begin // @[UARTRx.scala 70:29]
+          data_count <= _data_count_T_3; // @[UARTRx.scala 74:22]
+        end
+      end
+    end else if (state) begin // @[UARTRx.scala 63:18]
+      if (pulse) begin // @[UARTRx.scala 82:20]
+        data_count <= countdown[7:4]; // @[UARTRx.scala 84:20]
+      end
+    end
+    if (~state) begin // @[UARTRx.scala 63:18]
+      if (~io_in) begin // @[UARTRx.scala 68:21]
+        if (debounce_max) begin // @[UARTRx.scala 70:29]
+          sample_count <= 4'hf; // @[UARTRx.scala 75:24]
+        end
+      end
+    end else if (state) begin // @[UARTRx.scala 63:18]
+      if (pulse) begin // @[UARTRx.scala 82:20]
+        sample_count <= countdown[3:0]; // @[UARTRx.scala 85:22]
+      end
+    end
+    if (reset) begin // @[UARTRx.scala 61:18]
+      state <= 1'h0; // @[UARTRx.scala 61:18]
+    end else if (~state) begin // @[UARTRx.scala 63:18]
+      if (~io_in) begin // @[UARTRx.scala 68:21]
+        state <= _GEN_1;
+      end
+    end else if (state) begin // @[UARTRx.scala 63:18]
+      if (pulse) begin // @[UARTRx.scala 82:20]
+        state <= _GEN_15;
+      end
+    end
+    sample <= _GEN_37[2:0];
+    if (!(~state)) begin // @[UARTRx.scala 63:18]
+      if (state) begin // @[UARTRx.scala 63:18]
+        if (pulse) begin // @[UARTRx.scala 82:20]
+          if (sample_mid) begin // @[UARTRx.scala 87:27]
+            shifter <= _GEN_14;
+          end
+        end
+      end
+    end
+    if (reset) begin // @[UARTRx.scala 55:18]
+      valid <= 1'h0; // @[UARTRx.scala 55:18]
+    end else if (~state) begin // @[UARTRx.scala 63:18]
+      valid <= 1'h0; // @[UARTRx.scala 56:9]
+    end else begin
+      valid <= state & _GEN_22;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  debounce = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  prescaler = _RAND_1[12:0];
+  _RAND_2 = {1{`RANDOM}};
+  data_count = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  sample_count = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  state = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  sample = _RAND_5[2:0];
+  _RAND_6 = {1{`RANDOM}};
+  shifter = _RAND_6[7:0];
+  _RAND_7 = {1{`RANDOM}};
+  valid = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLUART(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_txd,
+  input         auto_io_out_rxd
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  txm_clock; // @[UART.scala 79:19]
+  wire  txm_reset; // @[UART.scala 79:19]
+  wire  txm_io_en; // @[UART.scala 79:19]
+  wire  txm_io_in_ready; // @[UART.scala 79:19]
+  wire  txm_io_in_valid; // @[UART.scala 79:19]
+  wire [7:0] txm_io_in_bits; // @[UART.scala 79:19]
+  wire  txm_io_out; // @[UART.scala 79:19]
+  wire [15:0] txm_io_div; // @[UART.scala 79:19]
+  wire  txm_io_nstop; // @[UART.scala 79:19]
+  wire  txq_clock; // @[UART.scala 80:19]
+  wire  txq_reset; // @[UART.scala 80:19]
+  wire  txq_io_enq_ready; // @[UART.scala 80:19]
+  wire  txq_io_enq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_enq_bits; // @[UART.scala 80:19]
+  wire  txq_io_deq_ready; // @[UART.scala 80:19]
+  wire  txq_io_deq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_deq_bits; // @[UART.scala 80:19]
+  wire [3:0] txq_io_count; // @[UART.scala 80:19]
+  wire  rxm_clock; // @[UART.scala 82:19]
+  wire  rxm_reset; // @[UART.scala 82:19]
+  wire  rxm_io_en; // @[UART.scala 82:19]
+  wire  rxm_io_in; // @[UART.scala 82:19]
+  wire  rxm_io_out_valid; // @[UART.scala 82:19]
+  wire [7:0] rxm_io_out_bits; // @[UART.scala 82:19]
+  wire [15:0] rxm_io_div; // @[UART.scala 82:19]
+  wire  rxq_clock; // @[UART.scala 83:19]
+  wire  rxq_reset; // @[UART.scala 83:19]
+  wire  rxq_io_enq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_enq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_enq_bits; // @[UART.scala 83:19]
+  wire  rxq_io_deq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_deq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_deq_bits; // @[UART.scala 83:19]
+  wire [3:0] rxq_io_count; // @[UART.scala 83:19]
+  reg [15:0] div; // @[UART.scala 85:16]
+  reg  txen; // @[UART.scala 91:17]
+  reg  rxen; // @[UART.scala 92:17]
+  reg [3:0] txwm; // @[UART.scala 99:17]
+  reg [3:0] rxwm; // @[UART.scala 100:17]
+  reg  nstop; // @[UART.scala 101:18]
+  reg  ie_rxwm; // @[UART.scala 135:15]
+  reg  ie_txwm; // @[UART.scala 135:15]
+  wire  ip_txwm = txq_io_count < txwm; // @[UART.scala 138:28]
+  wire  ip_rxwm = rxq_io_count > rxwm; // @[UART.scala 139:28]
+  wire  _T = ~txq_io_enq_ready; // @[RegMapFIFO.scala 25:9]
+  wire  _T_1 = ~rxq_io_deq_valid; // @[RegMapFIFO.scala 46:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3f8; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_rimask = |out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [2:0] out_oindex = {in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [7:0] _out_frontSel_T = 8'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_womask_2 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_wivalid_0 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_2 & bundleIn_0_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [31:0] out_prepend_1 = {_T,31'h0}; // @[Cat.scala 31:58]
+  wire  out_wimask_3 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_2 = {ip_rxwm,ip_txwm}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_T_66 = rxq_io_deq_bits; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_3 = {1'h0,_out_T_66}; // @[Cat.scala 31:58]
+  wire [30:0] _out_T_75 = {{22'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_4 = {_T_1,_out_T_75}; // @[Cat.scala 31:58]
+  wire  out_wimask_8 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_8 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_8 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_9 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_5 = {nstop,txen}; // @[Cat.scala 31:58]
+  wire  out_wimask_11 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_11 = out_wivalid_9 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_6 = {{14'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_6 = {txwm,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_12 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_12 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_12 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_7 = {{15'd0}, rxen}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_7 = {rxwm,_out_prepend_T_7}; // @[Cat.scala 31:58]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_15 = out_wivalid_14 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_8 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  _GEN_41 = 3'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_42 = 3'h2 == out_oindex ? _out_T : _GEN_41; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_43 = 3'h3 == out_oindex ? _out_T : _GEN_42; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_44 = 3'h4 == out_oindex ? _out_T : _GEN_43; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_45 = 3'h5 == out_oindex ? _out_T : _GEN_44; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_46 = 3'h6 == out_oindex ? _out_T : _GEN_45; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_47 = 3'h7 == out_oindex | _GEN_46; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_49 = 3'h1 == out_oindex ? out_prepend_4 : out_prepend_1; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_2 = {{12'd0}, out_prepend_6}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_50 = 3'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_49; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_3 = {{12'd0}, out_prepend_7}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_51 = 3'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_50; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_52 = 3'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_51; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_5 = {{30'd0}, out_prepend_2}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_53 = 3'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_52; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{16'd0}, div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_54 = 3'h6 == out_oindex ? _out_out_bits_data_WIRE_1_6 : _GEN_53; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_55 = 3'h7 == out_oindex ? 32'h0 : _GEN_54; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_56 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  UARTTx txm ( // @[UART.scala 79:19]
+    .clock(txm_clock),
+    .reset(txm_reset),
+    .io_en(txm_io_en),
+    .io_in_ready(txm_io_in_ready),
+    .io_in_valid(txm_io_in_valid),
+    .io_in_bits(txm_io_in_bits),
+    .io_out(txm_io_out),
+    .io_div(txm_io_div),
+    .io_nstop(txm_io_nstop)
+  );
+  QueueCompatibility txq ( // @[UART.scala 80:19]
+    .clock(txq_clock),
+    .reset(txq_reset),
+    .io_enq_ready(txq_io_enq_ready),
+    .io_enq_valid(txq_io_enq_valid),
+    .io_enq_bits(txq_io_enq_bits),
+    .io_deq_ready(txq_io_deq_ready),
+    .io_deq_valid(txq_io_deq_valid),
+    .io_deq_bits(txq_io_deq_bits),
+    .io_count(txq_io_count)
+  );
+  UARTRx rxm ( // @[UART.scala 82:19]
+    .clock(rxm_clock),
+    .reset(rxm_reset),
+    .io_en(rxm_io_en),
+    .io_in(rxm_io_in),
+    .io_out_valid(rxm_io_out_valid),
+    .io_out_bits(rxm_io_out_bits),
+    .io_div(rxm_io_div)
+  );
+  QueueCompatibility rxq ( // @[UART.scala 83:19]
+    .clock(rxq_clock),
+    .reset(rxq_reset),
+    .io_enq_ready(rxq_io_enq_ready),
+    .io_enq_valid(rxq_io_enq_valid),
+    .io_enq_bits(rxq_io_enq_bits),
+    .io_deq_ready(rxq_io_deq_ready),
+    .io_deq_valid(rxq_io_deq_valid),
+    .io_deq_bits(rxq_io_deq_bits),
+    .io_count(rxq_io_count)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_txd = txm_io_out; // @[Nodes.scala 1207:84 UART.scala 113:12]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_47 ? _GEN_55 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = ip_txwm & ie_txwm | ip_rxwm & ie_rxwm; // @[UART.scala 140:41]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign txm_clock = clock;
+  assign txm_reset = reset;
+  assign txm_io_en = txen; // @[UART.scala 109:15]
+  assign txm_io_in_valid = txq_io_deq_valid; // @[UART.scala 110:13]
+  assign txm_io_in_bits = txq_io_deq_bits; // @[UART.scala 110:13]
+  assign txm_io_div = div; // @[UART.scala 111:14]
+  assign txm_io_nstop = nstop; // @[UART.scala 112:16]
+  assign txq_clock = clock;
+  assign txq_reset = reset;
+  assign txq_io_enq_valid = out_f_wivalid & ~quash; // @[RegMapFIFO.scala 19:30]
+  assign txq_io_enq_bits = bundleIn_0_a_bits_data[7:0]; // @[RegisterRouter.scala 83:24]
+  assign txq_io_deq_ready = txm_io_in_ready; // @[UART.scala 110:13]
+  assign rxm_clock = clock;
+  assign rxm_reset = reset;
+  assign rxm_io_en = rxen; // @[UART.scala 120:13]
+  assign rxm_io_in = auto_io_out_rxd; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign rxm_io_div = div; // @[UART.scala 123:14]
+  assign rxq_clock = clock;
+  assign rxq_reset = reset;
+  assign rxq_io_enq_valid = rxm_io_out_valid; // @[UART.scala 122:14]
+  assign rxq_io_enq_bits = rxm_io_out_bits; // @[UART.scala 122:14]
+  assign rxq_io_deq_ready = out_rivalid_5 & out_rimask; // @[RegisterRouter.scala 83:24]
+  always @(posedge clock) begin
+    if (reset) begin // @[UART.scala 85:16]
+      div <= 16'h364; // @[UART.scala 85:16]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      div <= bundleIn_0_a_bits_data[15:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 91:17]
+      txen <= 1'h0; // @[UART.scala 91:17]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      txen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 92:17]
+      rxen <= 1'h0; // @[UART.scala 92:17]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      rxen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 99:17]
+      txwm <= 4'h0; // @[UART.scala 99:17]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      txwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 100:17]
+      rxwm <= 4'h0; // @[UART.scala 100:17]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      rxwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 101:18]
+      nstop <= 1'h0; // @[UART.scala 101:18]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      nstop <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_rxwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_15) begin // @[RegField.scala 74:88]
+      ie_rxwm <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_txwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      ie_txwm <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  div = _RAND_0[15:0];
+  _RAND_1 = {1{`RANDOM}};
+  txen = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  rxen = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  txwm = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  rxwm = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  nstop = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ie_rxwm = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ie_txwm = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_1(
+  output        auto_uart_0_int_xing_out_sync_0,
+  output        auto_uart_0_control_xing_in_a_ready,
+  input         auto_uart_0_control_xing_in_a_valid,
+  input  [2:0]  auto_uart_0_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_uart_0_control_xing_in_a_bits_param,
+  input  [1:0]  auto_uart_0_control_xing_in_a_bits_size,
+  input  [6:0]  auto_uart_0_control_xing_in_a_bits_source,
+  input  [28:0] auto_uart_0_control_xing_in_a_bits_address,
+  input  [3:0]  auto_uart_0_control_xing_in_a_bits_mask,
+  input  [31:0] auto_uart_0_control_xing_in_a_bits_data,
+  input         auto_uart_0_control_xing_in_a_bits_corrupt,
+  input         auto_uart_0_control_xing_in_d_ready,
+  output        auto_uart_0_control_xing_in_d_valid,
+  output [2:0]  auto_uart_0_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_uart_0_control_xing_in_d_bits_size,
+  output [6:0]  auto_uart_0_control_xing_in_d_bits_source,
+  output [31:0] auto_uart_0_control_xing_in_d_bits_data,
+  output        auto_uart_0_io_out_txd,
+  input         auto_uart_0_io_out_rxd,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  uart_0_clock; // @[UART.scala 243:51]
+  wire  uart_0_reset; // @[UART.scala 243:51]
+  wire  uart_0_auto_int_xing_out_sync_0; // @[UART.scala 243:51]
+  wire  uart_0_auto_control_xing_in_a_ready; // @[UART.scala 243:51]
+  wire  uart_0_auto_control_xing_in_a_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_0_auto_control_xing_in_a_bits_opcode; // @[UART.scala 243:51]
+  wire [2:0] uart_0_auto_control_xing_in_a_bits_param; // @[UART.scala 243:51]
+  wire [1:0] uart_0_auto_control_xing_in_a_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_0_auto_control_xing_in_a_bits_source; // @[UART.scala 243:51]
+  wire [28:0] uart_0_auto_control_xing_in_a_bits_address; // @[UART.scala 243:51]
+  wire [3:0] uart_0_auto_control_xing_in_a_bits_mask; // @[UART.scala 243:51]
+  wire [31:0] uart_0_auto_control_xing_in_a_bits_data; // @[UART.scala 243:51]
+  wire  uart_0_auto_control_xing_in_a_bits_corrupt; // @[UART.scala 243:51]
+  wire  uart_0_auto_control_xing_in_d_ready; // @[UART.scala 243:51]
+  wire  uart_0_auto_control_xing_in_d_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_0_auto_control_xing_in_d_bits_opcode; // @[UART.scala 243:51]
+  wire [1:0] uart_0_auto_control_xing_in_d_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_0_auto_control_xing_in_d_bits_source; // @[UART.scala 243:51]
+  wire [31:0] uart_0_auto_control_xing_in_d_bits_data; // @[UART.scala 243:51]
+  wire  uart_0_auto_io_out_txd; // @[UART.scala 243:51]
+  wire  uart_0_auto_io_out_rxd; // @[UART.scala 243:51]
+  TLUART uart_0 ( // @[UART.scala 243:51]
+    .clock(uart_0_clock),
+    .reset(uart_0_reset),
+    .auto_int_xing_out_sync_0(uart_0_auto_int_xing_out_sync_0),
+    .auto_control_xing_in_a_ready(uart_0_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(uart_0_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(uart_0_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(uart_0_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(uart_0_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(uart_0_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(uart_0_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(uart_0_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(uart_0_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(uart_0_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(uart_0_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(uart_0_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(uart_0_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(uart_0_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(uart_0_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(uart_0_auto_control_xing_in_d_bits_data),
+    .auto_io_out_txd(uart_0_auto_io_out_txd),
+    .auto_io_out_rxd(uart_0_auto_io_out_rxd)
+  );
+  assign auto_uart_0_int_xing_out_sync_0 = uart_0_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_uart_0_control_xing_in_a_ready = uart_0_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_uart_0_control_xing_in_d_valid = uart_0_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_uart_0_control_xing_in_d_bits_opcode = uart_0_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_uart_0_control_xing_in_d_bits_size = uart_0_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_uart_0_control_xing_in_d_bits_source = uart_0_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_uart_0_control_xing_in_d_bits_data = uart_0_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_uart_0_io_out_txd = uart_0_auto_io_out_txd; // @[LazyModule.scala 311:12]
+  assign uart_0_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_0_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_valid = auto_uart_0_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_bits_opcode = auto_uart_0_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_bits_param = auto_uart_0_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_bits_size = auto_uart_0_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_bits_source = auto_uart_0_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_bits_address = auto_uart_0_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_bits_mask = auto_uart_0_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_bits_data = auto_uart_0_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_a_bits_corrupt = auto_uart_0_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_control_xing_in_d_ready = auto_uart_0_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign uart_0_auto_io_out_rxd = auto_uart_0_io_out_rxd; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_57(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10023000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLUART_1(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_txd,
+  input         auto_io_out_rxd
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  txm_clock; // @[UART.scala 79:19]
+  wire  txm_reset; // @[UART.scala 79:19]
+  wire  txm_io_en; // @[UART.scala 79:19]
+  wire  txm_io_in_ready; // @[UART.scala 79:19]
+  wire  txm_io_in_valid; // @[UART.scala 79:19]
+  wire [7:0] txm_io_in_bits; // @[UART.scala 79:19]
+  wire  txm_io_out; // @[UART.scala 79:19]
+  wire [15:0] txm_io_div; // @[UART.scala 79:19]
+  wire  txm_io_nstop; // @[UART.scala 79:19]
+  wire  txq_clock; // @[UART.scala 80:19]
+  wire  txq_reset; // @[UART.scala 80:19]
+  wire  txq_io_enq_ready; // @[UART.scala 80:19]
+  wire  txq_io_enq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_enq_bits; // @[UART.scala 80:19]
+  wire  txq_io_deq_ready; // @[UART.scala 80:19]
+  wire  txq_io_deq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_deq_bits; // @[UART.scala 80:19]
+  wire [3:0] txq_io_count; // @[UART.scala 80:19]
+  wire  rxm_clock; // @[UART.scala 82:19]
+  wire  rxm_reset; // @[UART.scala 82:19]
+  wire  rxm_io_en; // @[UART.scala 82:19]
+  wire  rxm_io_in; // @[UART.scala 82:19]
+  wire  rxm_io_out_valid; // @[UART.scala 82:19]
+  wire [7:0] rxm_io_out_bits; // @[UART.scala 82:19]
+  wire [15:0] rxm_io_div; // @[UART.scala 82:19]
+  wire  rxq_clock; // @[UART.scala 83:19]
+  wire  rxq_reset; // @[UART.scala 83:19]
+  wire  rxq_io_enq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_enq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_enq_bits; // @[UART.scala 83:19]
+  wire  rxq_io_deq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_deq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_deq_bits; // @[UART.scala 83:19]
+  wire [3:0] rxq_io_count; // @[UART.scala 83:19]
+  reg [15:0] div; // @[UART.scala 85:16]
+  reg  txen; // @[UART.scala 91:17]
+  reg  rxen; // @[UART.scala 92:17]
+  reg [3:0] txwm; // @[UART.scala 99:17]
+  reg [3:0] rxwm; // @[UART.scala 100:17]
+  reg  nstop; // @[UART.scala 101:18]
+  reg  ie_rxwm; // @[UART.scala 135:15]
+  reg  ie_txwm; // @[UART.scala 135:15]
+  wire  ip_txwm = txq_io_count < txwm; // @[UART.scala 138:28]
+  wire  ip_rxwm = rxq_io_count > rxwm; // @[UART.scala 139:28]
+  wire  _T = ~txq_io_enq_ready; // @[RegMapFIFO.scala 25:9]
+  wire  _T_1 = ~rxq_io_deq_valid; // @[RegMapFIFO.scala 46:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3f8; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_rimask = |out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [2:0] out_oindex = {in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [7:0] _out_frontSel_T = 8'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_womask_2 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_wivalid_0 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_2 & bundleIn_0_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [31:0] out_prepend_1 = {_T,31'h0}; // @[Cat.scala 31:58]
+  wire  out_wimask_3 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_2 = {ip_rxwm,ip_txwm}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_T_66 = rxq_io_deq_bits; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_3 = {1'h0,_out_T_66}; // @[Cat.scala 31:58]
+  wire [30:0] _out_T_75 = {{22'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_4 = {_T_1,_out_T_75}; // @[Cat.scala 31:58]
+  wire  out_wimask_8 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_8 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_8 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_9 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_5 = {nstop,txen}; // @[Cat.scala 31:58]
+  wire  out_wimask_11 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_11 = out_wivalid_9 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_6 = {{14'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_6 = {txwm,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_12 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_12 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_12 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_7 = {{15'd0}, rxen}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_7 = {rxwm,_out_prepend_T_7}; // @[Cat.scala 31:58]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_15 = out_wivalid_14 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_8 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  _GEN_41 = 3'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_42 = 3'h2 == out_oindex ? _out_T : _GEN_41; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_43 = 3'h3 == out_oindex ? _out_T : _GEN_42; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_44 = 3'h4 == out_oindex ? _out_T : _GEN_43; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_45 = 3'h5 == out_oindex ? _out_T : _GEN_44; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_46 = 3'h6 == out_oindex ? _out_T : _GEN_45; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_47 = 3'h7 == out_oindex | _GEN_46; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_49 = 3'h1 == out_oindex ? out_prepend_4 : out_prepend_1; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_2 = {{12'd0}, out_prepend_6}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_50 = 3'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_49; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_3 = {{12'd0}, out_prepend_7}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_51 = 3'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_50; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_52 = 3'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_51; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_5 = {{30'd0}, out_prepend_2}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_53 = 3'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_52; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{16'd0}, div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_54 = 3'h6 == out_oindex ? _out_out_bits_data_WIRE_1_6 : _GEN_53; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_55 = 3'h7 == out_oindex ? 32'h0 : _GEN_54; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_57 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  UARTTx txm ( // @[UART.scala 79:19]
+    .clock(txm_clock),
+    .reset(txm_reset),
+    .io_en(txm_io_en),
+    .io_in_ready(txm_io_in_ready),
+    .io_in_valid(txm_io_in_valid),
+    .io_in_bits(txm_io_in_bits),
+    .io_out(txm_io_out),
+    .io_div(txm_io_div),
+    .io_nstop(txm_io_nstop)
+  );
+  QueueCompatibility txq ( // @[UART.scala 80:19]
+    .clock(txq_clock),
+    .reset(txq_reset),
+    .io_enq_ready(txq_io_enq_ready),
+    .io_enq_valid(txq_io_enq_valid),
+    .io_enq_bits(txq_io_enq_bits),
+    .io_deq_ready(txq_io_deq_ready),
+    .io_deq_valid(txq_io_deq_valid),
+    .io_deq_bits(txq_io_deq_bits),
+    .io_count(txq_io_count)
+  );
+  UARTRx rxm ( // @[UART.scala 82:19]
+    .clock(rxm_clock),
+    .reset(rxm_reset),
+    .io_en(rxm_io_en),
+    .io_in(rxm_io_in),
+    .io_out_valid(rxm_io_out_valid),
+    .io_out_bits(rxm_io_out_bits),
+    .io_div(rxm_io_div)
+  );
+  QueueCompatibility rxq ( // @[UART.scala 83:19]
+    .clock(rxq_clock),
+    .reset(rxq_reset),
+    .io_enq_ready(rxq_io_enq_ready),
+    .io_enq_valid(rxq_io_enq_valid),
+    .io_enq_bits(rxq_io_enq_bits),
+    .io_deq_ready(rxq_io_deq_ready),
+    .io_deq_valid(rxq_io_deq_valid),
+    .io_deq_bits(rxq_io_deq_bits),
+    .io_count(rxq_io_count)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_txd = txm_io_out; // @[Nodes.scala 1207:84 UART.scala 113:12]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_47 ? _GEN_55 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = ip_txwm & ie_txwm | ip_rxwm & ie_rxwm; // @[UART.scala 140:41]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign txm_clock = clock;
+  assign txm_reset = reset;
+  assign txm_io_en = txen; // @[UART.scala 109:15]
+  assign txm_io_in_valid = txq_io_deq_valid; // @[UART.scala 110:13]
+  assign txm_io_in_bits = txq_io_deq_bits; // @[UART.scala 110:13]
+  assign txm_io_div = div; // @[UART.scala 111:14]
+  assign txm_io_nstop = nstop; // @[UART.scala 112:16]
+  assign txq_clock = clock;
+  assign txq_reset = reset;
+  assign txq_io_enq_valid = out_f_wivalid & ~quash; // @[RegMapFIFO.scala 19:30]
+  assign txq_io_enq_bits = bundleIn_0_a_bits_data[7:0]; // @[RegisterRouter.scala 83:24]
+  assign txq_io_deq_ready = txm_io_in_ready; // @[UART.scala 110:13]
+  assign rxm_clock = clock;
+  assign rxm_reset = reset;
+  assign rxm_io_en = rxen; // @[UART.scala 120:13]
+  assign rxm_io_in = auto_io_out_rxd; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign rxm_io_div = div; // @[UART.scala 123:14]
+  assign rxq_clock = clock;
+  assign rxq_reset = reset;
+  assign rxq_io_enq_valid = rxm_io_out_valid; // @[UART.scala 122:14]
+  assign rxq_io_enq_bits = rxm_io_out_bits; // @[UART.scala 122:14]
+  assign rxq_io_deq_ready = out_rivalid_5 & out_rimask; // @[RegisterRouter.scala 83:24]
+  always @(posedge clock) begin
+    if (reset) begin // @[UART.scala 85:16]
+      div <= 16'h364; // @[UART.scala 85:16]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      div <= bundleIn_0_a_bits_data[15:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 91:17]
+      txen <= 1'h0; // @[UART.scala 91:17]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      txen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 92:17]
+      rxen <= 1'h0; // @[UART.scala 92:17]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      rxen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 99:17]
+      txwm <= 4'h0; // @[UART.scala 99:17]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      txwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 100:17]
+      rxwm <= 4'h0; // @[UART.scala 100:17]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      rxwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 101:18]
+      nstop <= 1'h0; // @[UART.scala 101:18]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      nstop <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_rxwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_15) begin // @[RegField.scala 74:88]
+      ie_rxwm <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_txwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      ie_txwm <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  div = _RAND_0[15:0];
+  _RAND_1 = {1{`RANDOM}};
+  txen = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  rxen = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  txwm = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  rxwm = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  nstop = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ie_rxwm = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ie_txwm = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_2(
+  output        auto_uart_1_int_xing_out_sync_0,
+  output        auto_uart_1_control_xing_in_a_ready,
+  input         auto_uart_1_control_xing_in_a_valid,
+  input  [2:0]  auto_uart_1_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_uart_1_control_xing_in_a_bits_param,
+  input  [1:0]  auto_uart_1_control_xing_in_a_bits_size,
+  input  [6:0]  auto_uart_1_control_xing_in_a_bits_source,
+  input  [28:0] auto_uart_1_control_xing_in_a_bits_address,
+  input  [3:0]  auto_uart_1_control_xing_in_a_bits_mask,
+  input  [31:0] auto_uart_1_control_xing_in_a_bits_data,
+  input         auto_uart_1_control_xing_in_a_bits_corrupt,
+  input         auto_uart_1_control_xing_in_d_ready,
+  output        auto_uart_1_control_xing_in_d_valid,
+  output [2:0]  auto_uart_1_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_uart_1_control_xing_in_d_bits_size,
+  output [6:0]  auto_uart_1_control_xing_in_d_bits_source,
+  output [31:0] auto_uart_1_control_xing_in_d_bits_data,
+  output        auto_uart_1_io_out_txd,
+  input         auto_uart_1_io_out_rxd,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  uart_1_clock; // @[UART.scala 243:51]
+  wire  uart_1_reset; // @[UART.scala 243:51]
+  wire  uart_1_auto_int_xing_out_sync_0; // @[UART.scala 243:51]
+  wire  uart_1_auto_control_xing_in_a_ready; // @[UART.scala 243:51]
+  wire  uart_1_auto_control_xing_in_a_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_1_auto_control_xing_in_a_bits_opcode; // @[UART.scala 243:51]
+  wire [2:0] uart_1_auto_control_xing_in_a_bits_param; // @[UART.scala 243:51]
+  wire [1:0] uart_1_auto_control_xing_in_a_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_1_auto_control_xing_in_a_bits_source; // @[UART.scala 243:51]
+  wire [28:0] uart_1_auto_control_xing_in_a_bits_address; // @[UART.scala 243:51]
+  wire [3:0] uart_1_auto_control_xing_in_a_bits_mask; // @[UART.scala 243:51]
+  wire [31:0] uart_1_auto_control_xing_in_a_bits_data; // @[UART.scala 243:51]
+  wire  uart_1_auto_control_xing_in_a_bits_corrupt; // @[UART.scala 243:51]
+  wire  uart_1_auto_control_xing_in_d_ready; // @[UART.scala 243:51]
+  wire  uart_1_auto_control_xing_in_d_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_1_auto_control_xing_in_d_bits_opcode; // @[UART.scala 243:51]
+  wire [1:0] uart_1_auto_control_xing_in_d_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_1_auto_control_xing_in_d_bits_source; // @[UART.scala 243:51]
+  wire [31:0] uart_1_auto_control_xing_in_d_bits_data; // @[UART.scala 243:51]
+  wire  uart_1_auto_io_out_txd; // @[UART.scala 243:51]
+  wire  uart_1_auto_io_out_rxd; // @[UART.scala 243:51]
+  TLUART_1 uart_1 ( // @[UART.scala 243:51]
+    .clock(uart_1_clock),
+    .reset(uart_1_reset),
+    .auto_int_xing_out_sync_0(uart_1_auto_int_xing_out_sync_0),
+    .auto_control_xing_in_a_ready(uart_1_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(uart_1_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(uart_1_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(uart_1_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(uart_1_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(uart_1_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(uart_1_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(uart_1_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(uart_1_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(uart_1_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(uart_1_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(uart_1_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(uart_1_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(uart_1_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(uart_1_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(uart_1_auto_control_xing_in_d_bits_data),
+    .auto_io_out_txd(uart_1_auto_io_out_txd),
+    .auto_io_out_rxd(uart_1_auto_io_out_rxd)
+  );
+  assign auto_uart_1_int_xing_out_sync_0 = uart_1_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_uart_1_control_xing_in_a_ready = uart_1_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_uart_1_control_xing_in_d_valid = uart_1_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_uart_1_control_xing_in_d_bits_opcode = uart_1_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_uart_1_control_xing_in_d_bits_size = uart_1_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_uart_1_control_xing_in_d_bits_source = uart_1_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_uart_1_control_xing_in_d_bits_data = uart_1_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_uart_1_io_out_txd = uart_1_auto_io_out_txd; // @[LazyModule.scala 311:12]
+  assign uart_1_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_1_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_valid = auto_uart_1_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_bits_opcode = auto_uart_1_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_bits_param = auto_uart_1_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_bits_size = auto_uart_1_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_bits_source = auto_uart_1_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_bits_address = auto_uart_1_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_bits_mask = auto_uart_1_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_bits_data = auto_uart_1_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_a_bits_corrupt = auto_uart_1_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_control_xing_in_d_ready = auto_uart_1_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign uart_1_auto_io_out_rxd = auto_uart_1_io_out_rxd; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_58(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10033000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLUART_2(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_txd,
+  input         auto_io_out_rxd
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  txm_clock; // @[UART.scala 79:19]
+  wire  txm_reset; // @[UART.scala 79:19]
+  wire  txm_io_en; // @[UART.scala 79:19]
+  wire  txm_io_in_ready; // @[UART.scala 79:19]
+  wire  txm_io_in_valid; // @[UART.scala 79:19]
+  wire [7:0] txm_io_in_bits; // @[UART.scala 79:19]
+  wire  txm_io_out; // @[UART.scala 79:19]
+  wire [15:0] txm_io_div; // @[UART.scala 79:19]
+  wire  txm_io_nstop; // @[UART.scala 79:19]
+  wire  txq_clock; // @[UART.scala 80:19]
+  wire  txq_reset; // @[UART.scala 80:19]
+  wire  txq_io_enq_ready; // @[UART.scala 80:19]
+  wire  txq_io_enq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_enq_bits; // @[UART.scala 80:19]
+  wire  txq_io_deq_ready; // @[UART.scala 80:19]
+  wire  txq_io_deq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_deq_bits; // @[UART.scala 80:19]
+  wire [3:0] txq_io_count; // @[UART.scala 80:19]
+  wire  rxm_clock; // @[UART.scala 82:19]
+  wire  rxm_reset; // @[UART.scala 82:19]
+  wire  rxm_io_en; // @[UART.scala 82:19]
+  wire  rxm_io_in; // @[UART.scala 82:19]
+  wire  rxm_io_out_valid; // @[UART.scala 82:19]
+  wire [7:0] rxm_io_out_bits; // @[UART.scala 82:19]
+  wire [15:0] rxm_io_div; // @[UART.scala 82:19]
+  wire  rxq_clock; // @[UART.scala 83:19]
+  wire  rxq_reset; // @[UART.scala 83:19]
+  wire  rxq_io_enq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_enq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_enq_bits; // @[UART.scala 83:19]
+  wire  rxq_io_deq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_deq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_deq_bits; // @[UART.scala 83:19]
+  wire [3:0] rxq_io_count; // @[UART.scala 83:19]
+  reg [15:0] div; // @[UART.scala 85:16]
+  reg  txen; // @[UART.scala 91:17]
+  reg  rxen; // @[UART.scala 92:17]
+  reg [3:0] txwm; // @[UART.scala 99:17]
+  reg [3:0] rxwm; // @[UART.scala 100:17]
+  reg  nstop; // @[UART.scala 101:18]
+  reg  ie_rxwm; // @[UART.scala 135:15]
+  reg  ie_txwm; // @[UART.scala 135:15]
+  wire  ip_txwm = txq_io_count < txwm; // @[UART.scala 138:28]
+  wire  ip_rxwm = rxq_io_count > rxwm; // @[UART.scala 139:28]
+  wire  _T = ~txq_io_enq_ready; // @[RegMapFIFO.scala 25:9]
+  wire  _T_1 = ~rxq_io_deq_valid; // @[RegMapFIFO.scala 46:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3f8; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_rimask = |out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [2:0] out_oindex = {in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [7:0] _out_frontSel_T = 8'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_womask_2 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_wivalid_0 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_2 & bundleIn_0_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [31:0] out_prepend_1 = {_T,31'h0}; // @[Cat.scala 31:58]
+  wire  out_wimask_3 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_2 = {ip_rxwm,ip_txwm}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_T_66 = rxq_io_deq_bits; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_3 = {1'h0,_out_T_66}; // @[Cat.scala 31:58]
+  wire [30:0] _out_T_75 = {{22'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_4 = {_T_1,_out_T_75}; // @[Cat.scala 31:58]
+  wire  out_wimask_8 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_8 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_8 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_9 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_5 = {nstop,txen}; // @[Cat.scala 31:58]
+  wire  out_wimask_11 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_11 = out_wivalid_9 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_6 = {{14'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_6 = {txwm,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_12 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_12 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_12 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_7 = {{15'd0}, rxen}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_7 = {rxwm,_out_prepend_T_7}; // @[Cat.scala 31:58]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_15 = out_wivalid_14 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_8 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  _GEN_41 = 3'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_42 = 3'h2 == out_oindex ? _out_T : _GEN_41; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_43 = 3'h3 == out_oindex ? _out_T : _GEN_42; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_44 = 3'h4 == out_oindex ? _out_T : _GEN_43; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_45 = 3'h5 == out_oindex ? _out_T : _GEN_44; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_46 = 3'h6 == out_oindex ? _out_T : _GEN_45; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_47 = 3'h7 == out_oindex | _GEN_46; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_49 = 3'h1 == out_oindex ? out_prepend_4 : out_prepend_1; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_2 = {{12'd0}, out_prepend_6}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_50 = 3'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_49; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_3 = {{12'd0}, out_prepend_7}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_51 = 3'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_50; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_52 = 3'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_51; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_5 = {{30'd0}, out_prepend_2}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_53 = 3'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_52; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{16'd0}, div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_54 = 3'h6 == out_oindex ? _out_out_bits_data_WIRE_1_6 : _GEN_53; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_55 = 3'h7 == out_oindex ? 32'h0 : _GEN_54; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_58 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  UARTTx txm ( // @[UART.scala 79:19]
+    .clock(txm_clock),
+    .reset(txm_reset),
+    .io_en(txm_io_en),
+    .io_in_ready(txm_io_in_ready),
+    .io_in_valid(txm_io_in_valid),
+    .io_in_bits(txm_io_in_bits),
+    .io_out(txm_io_out),
+    .io_div(txm_io_div),
+    .io_nstop(txm_io_nstop)
+  );
+  QueueCompatibility txq ( // @[UART.scala 80:19]
+    .clock(txq_clock),
+    .reset(txq_reset),
+    .io_enq_ready(txq_io_enq_ready),
+    .io_enq_valid(txq_io_enq_valid),
+    .io_enq_bits(txq_io_enq_bits),
+    .io_deq_ready(txq_io_deq_ready),
+    .io_deq_valid(txq_io_deq_valid),
+    .io_deq_bits(txq_io_deq_bits),
+    .io_count(txq_io_count)
+  );
+  UARTRx rxm ( // @[UART.scala 82:19]
+    .clock(rxm_clock),
+    .reset(rxm_reset),
+    .io_en(rxm_io_en),
+    .io_in(rxm_io_in),
+    .io_out_valid(rxm_io_out_valid),
+    .io_out_bits(rxm_io_out_bits),
+    .io_div(rxm_io_div)
+  );
+  QueueCompatibility rxq ( // @[UART.scala 83:19]
+    .clock(rxq_clock),
+    .reset(rxq_reset),
+    .io_enq_ready(rxq_io_enq_ready),
+    .io_enq_valid(rxq_io_enq_valid),
+    .io_enq_bits(rxq_io_enq_bits),
+    .io_deq_ready(rxq_io_deq_ready),
+    .io_deq_valid(rxq_io_deq_valid),
+    .io_deq_bits(rxq_io_deq_bits),
+    .io_count(rxq_io_count)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_txd = txm_io_out; // @[Nodes.scala 1207:84 UART.scala 113:12]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_47 ? _GEN_55 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = ip_txwm & ie_txwm | ip_rxwm & ie_rxwm; // @[UART.scala 140:41]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign txm_clock = clock;
+  assign txm_reset = reset;
+  assign txm_io_en = txen; // @[UART.scala 109:15]
+  assign txm_io_in_valid = txq_io_deq_valid; // @[UART.scala 110:13]
+  assign txm_io_in_bits = txq_io_deq_bits; // @[UART.scala 110:13]
+  assign txm_io_div = div; // @[UART.scala 111:14]
+  assign txm_io_nstop = nstop; // @[UART.scala 112:16]
+  assign txq_clock = clock;
+  assign txq_reset = reset;
+  assign txq_io_enq_valid = out_f_wivalid & ~quash; // @[RegMapFIFO.scala 19:30]
+  assign txq_io_enq_bits = bundleIn_0_a_bits_data[7:0]; // @[RegisterRouter.scala 83:24]
+  assign txq_io_deq_ready = txm_io_in_ready; // @[UART.scala 110:13]
+  assign rxm_clock = clock;
+  assign rxm_reset = reset;
+  assign rxm_io_en = rxen; // @[UART.scala 120:13]
+  assign rxm_io_in = auto_io_out_rxd; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign rxm_io_div = div; // @[UART.scala 123:14]
+  assign rxq_clock = clock;
+  assign rxq_reset = reset;
+  assign rxq_io_enq_valid = rxm_io_out_valid; // @[UART.scala 122:14]
+  assign rxq_io_enq_bits = rxm_io_out_bits; // @[UART.scala 122:14]
+  assign rxq_io_deq_ready = out_rivalid_5 & out_rimask; // @[RegisterRouter.scala 83:24]
+  always @(posedge clock) begin
+    if (reset) begin // @[UART.scala 85:16]
+      div <= 16'h364; // @[UART.scala 85:16]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      div <= bundleIn_0_a_bits_data[15:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 91:17]
+      txen <= 1'h0; // @[UART.scala 91:17]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      txen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 92:17]
+      rxen <= 1'h0; // @[UART.scala 92:17]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      rxen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 99:17]
+      txwm <= 4'h0; // @[UART.scala 99:17]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      txwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 100:17]
+      rxwm <= 4'h0; // @[UART.scala 100:17]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      rxwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 101:18]
+      nstop <= 1'h0; // @[UART.scala 101:18]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      nstop <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_rxwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_15) begin // @[RegField.scala 74:88]
+      ie_rxwm <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_txwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      ie_txwm <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  div = _RAND_0[15:0];
+  _RAND_1 = {1{`RANDOM}};
+  txen = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  rxen = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  txwm = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  rxwm = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  nstop = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ie_rxwm = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ie_txwm = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_3(
+  output        auto_uart_2_int_xing_out_sync_0,
+  output        auto_uart_2_control_xing_in_a_ready,
+  input         auto_uart_2_control_xing_in_a_valid,
+  input  [2:0]  auto_uart_2_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_uart_2_control_xing_in_a_bits_param,
+  input  [1:0]  auto_uart_2_control_xing_in_a_bits_size,
+  input  [6:0]  auto_uart_2_control_xing_in_a_bits_source,
+  input  [28:0] auto_uart_2_control_xing_in_a_bits_address,
+  input  [3:0]  auto_uart_2_control_xing_in_a_bits_mask,
+  input  [31:0] auto_uart_2_control_xing_in_a_bits_data,
+  input         auto_uart_2_control_xing_in_a_bits_corrupt,
+  input         auto_uart_2_control_xing_in_d_ready,
+  output        auto_uart_2_control_xing_in_d_valid,
+  output [2:0]  auto_uart_2_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_uart_2_control_xing_in_d_bits_size,
+  output [6:0]  auto_uart_2_control_xing_in_d_bits_source,
+  output [31:0] auto_uart_2_control_xing_in_d_bits_data,
+  output        auto_uart_2_io_out_txd,
+  input         auto_uart_2_io_out_rxd,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  uart_2_clock; // @[UART.scala 243:51]
+  wire  uart_2_reset; // @[UART.scala 243:51]
+  wire  uart_2_auto_int_xing_out_sync_0; // @[UART.scala 243:51]
+  wire  uart_2_auto_control_xing_in_a_ready; // @[UART.scala 243:51]
+  wire  uart_2_auto_control_xing_in_a_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_2_auto_control_xing_in_a_bits_opcode; // @[UART.scala 243:51]
+  wire [2:0] uart_2_auto_control_xing_in_a_bits_param; // @[UART.scala 243:51]
+  wire [1:0] uart_2_auto_control_xing_in_a_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_2_auto_control_xing_in_a_bits_source; // @[UART.scala 243:51]
+  wire [28:0] uart_2_auto_control_xing_in_a_bits_address; // @[UART.scala 243:51]
+  wire [3:0] uart_2_auto_control_xing_in_a_bits_mask; // @[UART.scala 243:51]
+  wire [31:0] uart_2_auto_control_xing_in_a_bits_data; // @[UART.scala 243:51]
+  wire  uart_2_auto_control_xing_in_a_bits_corrupt; // @[UART.scala 243:51]
+  wire  uart_2_auto_control_xing_in_d_ready; // @[UART.scala 243:51]
+  wire  uart_2_auto_control_xing_in_d_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_2_auto_control_xing_in_d_bits_opcode; // @[UART.scala 243:51]
+  wire [1:0] uart_2_auto_control_xing_in_d_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_2_auto_control_xing_in_d_bits_source; // @[UART.scala 243:51]
+  wire [31:0] uart_2_auto_control_xing_in_d_bits_data; // @[UART.scala 243:51]
+  wire  uart_2_auto_io_out_txd; // @[UART.scala 243:51]
+  wire  uart_2_auto_io_out_rxd; // @[UART.scala 243:51]
+  TLUART_2 uart_2 ( // @[UART.scala 243:51]
+    .clock(uart_2_clock),
+    .reset(uart_2_reset),
+    .auto_int_xing_out_sync_0(uart_2_auto_int_xing_out_sync_0),
+    .auto_control_xing_in_a_ready(uart_2_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(uart_2_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(uart_2_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(uart_2_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(uart_2_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(uart_2_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(uart_2_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(uart_2_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(uart_2_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(uart_2_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(uart_2_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(uart_2_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(uart_2_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(uart_2_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(uart_2_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(uart_2_auto_control_xing_in_d_bits_data),
+    .auto_io_out_txd(uart_2_auto_io_out_txd),
+    .auto_io_out_rxd(uart_2_auto_io_out_rxd)
+  );
+  assign auto_uart_2_int_xing_out_sync_0 = uart_2_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_uart_2_control_xing_in_a_ready = uart_2_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_uart_2_control_xing_in_d_valid = uart_2_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_uart_2_control_xing_in_d_bits_opcode = uart_2_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_uart_2_control_xing_in_d_bits_size = uart_2_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_uart_2_control_xing_in_d_bits_source = uart_2_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_uart_2_control_xing_in_d_bits_data = uart_2_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_uart_2_io_out_txd = uart_2_auto_io_out_txd; // @[LazyModule.scala 311:12]
+  assign uart_2_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_2_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_valid = auto_uart_2_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_bits_opcode = auto_uart_2_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_bits_param = auto_uart_2_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_bits_size = auto_uart_2_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_bits_source = auto_uart_2_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_bits_address = auto_uart_2_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_bits_mask = auto_uart_2_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_bits_data = auto_uart_2_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_a_bits_corrupt = auto_uart_2_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_control_xing_in_d_ready = auto_uart_2_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign uart_2_auto_io_out_rxd = auto_uart_2_io_out_rxd; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_59(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10043000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLUART_3(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_txd,
+  input         auto_io_out_rxd
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  txm_clock; // @[UART.scala 79:19]
+  wire  txm_reset; // @[UART.scala 79:19]
+  wire  txm_io_en; // @[UART.scala 79:19]
+  wire  txm_io_in_ready; // @[UART.scala 79:19]
+  wire  txm_io_in_valid; // @[UART.scala 79:19]
+  wire [7:0] txm_io_in_bits; // @[UART.scala 79:19]
+  wire  txm_io_out; // @[UART.scala 79:19]
+  wire [15:0] txm_io_div; // @[UART.scala 79:19]
+  wire  txm_io_nstop; // @[UART.scala 79:19]
+  wire  txq_clock; // @[UART.scala 80:19]
+  wire  txq_reset; // @[UART.scala 80:19]
+  wire  txq_io_enq_ready; // @[UART.scala 80:19]
+  wire  txq_io_enq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_enq_bits; // @[UART.scala 80:19]
+  wire  txq_io_deq_ready; // @[UART.scala 80:19]
+  wire  txq_io_deq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_deq_bits; // @[UART.scala 80:19]
+  wire [3:0] txq_io_count; // @[UART.scala 80:19]
+  wire  rxm_clock; // @[UART.scala 82:19]
+  wire  rxm_reset; // @[UART.scala 82:19]
+  wire  rxm_io_en; // @[UART.scala 82:19]
+  wire  rxm_io_in; // @[UART.scala 82:19]
+  wire  rxm_io_out_valid; // @[UART.scala 82:19]
+  wire [7:0] rxm_io_out_bits; // @[UART.scala 82:19]
+  wire [15:0] rxm_io_div; // @[UART.scala 82:19]
+  wire  rxq_clock; // @[UART.scala 83:19]
+  wire  rxq_reset; // @[UART.scala 83:19]
+  wire  rxq_io_enq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_enq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_enq_bits; // @[UART.scala 83:19]
+  wire  rxq_io_deq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_deq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_deq_bits; // @[UART.scala 83:19]
+  wire [3:0] rxq_io_count; // @[UART.scala 83:19]
+  reg [15:0] div; // @[UART.scala 85:16]
+  reg  txen; // @[UART.scala 91:17]
+  reg  rxen; // @[UART.scala 92:17]
+  reg [3:0] txwm; // @[UART.scala 99:17]
+  reg [3:0] rxwm; // @[UART.scala 100:17]
+  reg  nstop; // @[UART.scala 101:18]
+  reg  ie_rxwm; // @[UART.scala 135:15]
+  reg  ie_txwm; // @[UART.scala 135:15]
+  wire  ip_txwm = txq_io_count < txwm; // @[UART.scala 138:28]
+  wire  ip_rxwm = rxq_io_count > rxwm; // @[UART.scala 139:28]
+  wire  _T = ~txq_io_enq_ready; // @[RegMapFIFO.scala 25:9]
+  wire  _T_1 = ~rxq_io_deq_valid; // @[RegMapFIFO.scala 46:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3f8; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_rimask = |out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [2:0] out_oindex = {in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [7:0] _out_frontSel_T = 8'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_womask_2 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_wivalid_0 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_2 & bundleIn_0_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [31:0] out_prepend_1 = {_T,31'h0}; // @[Cat.scala 31:58]
+  wire  out_wimask_3 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_2 = {ip_rxwm,ip_txwm}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_T_66 = rxq_io_deq_bits; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_3 = {1'h0,_out_T_66}; // @[Cat.scala 31:58]
+  wire [30:0] _out_T_75 = {{22'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_4 = {_T_1,_out_T_75}; // @[Cat.scala 31:58]
+  wire  out_wimask_8 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_8 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_8 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_9 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_5 = {nstop,txen}; // @[Cat.scala 31:58]
+  wire  out_wimask_11 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_11 = out_wivalid_9 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_6 = {{14'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_6 = {txwm,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_12 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_12 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_12 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_7 = {{15'd0}, rxen}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_7 = {rxwm,_out_prepend_T_7}; // @[Cat.scala 31:58]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_15 = out_wivalid_14 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_8 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  _GEN_41 = 3'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_42 = 3'h2 == out_oindex ? _out_T : _GEN_41; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_43 = 3'h3 == out_oindex ? _out_T : _GEN_42; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_44 = 3'h4 == out_oindex ? _out_T : _GEN_43; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_45 = 3'h5 == out_oindex ? _out_T : _GEN_44; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_46 = 3'h6 == out_oindex ? _out_T : _GEN_45; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_47 = 3'h7 == out_oindex | _GEN_46; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_49 = 3'h1 == out_oindex ? out_prepend_4 : out_prepend_1; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_2 = {{12'd0}, out_prepend_6}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_50 = 3'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_49; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_3 = {{12'd0}, out_prepend_7}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_51 = 3'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_50; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_52 = 3'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_51; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_5 = {{30'd0}, out_prepend_2}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_53 = 3'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_52; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{16'd0}, div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_54 = 3'h6 == out_oindex ? _out_out_bits_data_WIRE_1_6 : _GEN_53; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_55 = 3'h7 == out_oindex ? 32'h0 : _GEN_54; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_59 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  UARTTx txm ( // @[UART.scala 79:19]
+    .clock(txm_clock),
+    .reset(txm_reset),
+    .io_en(txm_io_en),
+    .io_in_ready(txm_io_in_ready),
+    .io_in_valid(txm_io_in_valid),
+    .io_in_bits(txm_io_in_bits),
+    .io_out(txm_io_out),
+    .io_div(txm_io_div),
+    .io_nstop(txm_io_nstop)
+  );
+  QueueCompatibility txq ( // @[UART.scala 80:19]
+    .clock(txq_clock),
+    .reset(txq_reset),
+    .io_enq_ready(txq_io_enq_ready),
+    .io_enq_valid(txq_io_enq_valid),
+    .io_enq_bits(txq_io_enq_bits),
+    .io_deq_ready(txq_io_deq_ready),
+    .io_deq_valid(txq_io_deq_valid),
+    .io_deq_bits(txq_io_deq_bits),
+    .io_count(txq_io_count)
+  );
+  UARTRx rxm ( // @[UART.scala 82:19]
+    .clock(rxm_clock),
+    .reset(rxm_reset),
+    .io_en(rxm_io_en),
+    .io_in(rxm_io_in),
+    .io_out_valid(rxm_io_out_valid),
+    .io_out_bits(rxm_io_out_bits),
+    .io_div(rxm_io_div)
+  );
+  QueueCompatibility rxq ( // @[UART.scala 83:19]
+    .clock(rxq_clock),
+    .reset(rxq_reset),
+    .io_enq_ready(rxq_io_enq_ready),
+    .io_enq_valid(rxq_io_enq_valid),
+    .io_enq_bits(rxq_io_enq_bits),
+    .io_deq_ready(rxq_io_deq_ready),
+    .io_deq_valid(rxq_io_deq_valid),
+    .io_deq_bits(rxq_io_deq_bits),
+    .io_count(rxq_io_count)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_txd = txm_io_out; // @[Nodes.scala 1207:84 UART.scala 113:12]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_47 ? _GEN_55 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = ip_txwm & ie_txwm | ip_rxwm & ie_rxwm; // @[UART.scala 140:41]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign txm_clock = clock;
+  assign txm_reset = reset;
+  assign txm_io_en = txen; // @[UART.scala 109:15]
+  assign txm_io_in_valid = txq_io_deq_valid; // @[UART.scala 110:13]
+  assign txm_io_in_bits = txq_io_deq_bits; // @[UART.scala 110:13]
+  assign txm_io_div = div; // @[UART.scala 111:14]
+  assign txm_io_nstop = nstop; // @[UART.scala 112:16]
+  assign txq_clock = clock;
+  assign txq_reset = reset;
+  assign txq_io_enq_valid = out_f_wivalid & ~quash; // @[RegMapFIFO.scala 19:30]
+  assign txq_io_enq_bits = bundleIn_0_a_bits_data[7:0]; // @[RegisterRouter.scala 83:24]
+  assign txq_io_deq_ready = txm_io_in_ready; // @[UART.scala 110:13]
+  assign rxm_clock = clock;
+  assign rxm_reset = reset;
+  assign rxm_io_en = rxen; // @[UART.scala 120:13]
+  assign rxm_io_in = auto_io_out_rxd; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign rxm_io_div = div; // @[UART.scala 123:14]
+  assign rxq_clock = clock;
+  assign rxq_reset = reset;
+  assign rxq_io_enq_valid = rxm_io_out_valid; // @[UART.scala 122:14]
+  assign rxq_io_enq_bits = rxm_io_out_bits; // @[UART.scala 122:14]
+  assign rxq_io_deq_ready = out_rivalid_5 & out_rimask; // @[RegisterRouter.scala 83:24]
+  always @(posedge clock) begin
+    if (reset) begin // @[UART.scala 85:16]
+      div <= 16'h364; // @[UART.scala 85:16]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      div <= bundleIn_0_a_bits_data[15:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 91:17]
+      txen <= 1'h0; // @[UART.scala 91:17]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      txen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 92:17]
+      rxen <= 1'h0; // @[UART.scala 92:17]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      rxen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 99:17]
+      txwm <= 4'h0; // @[UART.scala 99:17]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      txwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 100:17]
+      rxwm <= 4'h0; // @[UART.scala 100:17]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      rxwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 101:18]
+      nstop <= 1'h0; // @[UART.scala 101:18]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      nstop <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_rxwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_15) begin // @[RegField.scala 74:88]
+      ie_rxwm <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_txwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      ie_txwm <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  div = _RAND_0[15:0];
+  _RAND_1 = {1{`RANDOM}};
+  txen = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  rxen = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  txwm = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  rxwm = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  nstop = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ie_rxwm = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ie_txwm = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_4(
+  output        auto_uart_3_int_xing_out_sync_0,
+  output        auto_uart_3_control_xing_in_a_ready,
+  input         auto_uart_3_control_xing_in_a_valid,
+  input  [2:0]  auto_uart_3_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_uart_3_control_xing_in_a_bits_param,
+  input  [1:0]  auto_uart_3_control_xing_in_a_bits_size,
+  input  [6:0]  auto_uart_3_control_xing_in_a_bits_source,
+  input  [28:0] auto_uart_3_control_xing_in_a_bits_address,
+  input  [3:0]  auto_uart_3_control_xing_in_a_bits_mask,
+  input  [31:0] auto_uart_3_control_xing_in_a_bits_data,
+  input         auto_uart_3_control_xing_in_a_bits_corrupt,
+  input         auto_uart_3_control_xing_in_d_ready,
+  output        auto_uart_3_control_xing_in_d_valid,
+  output [2:0]  auto_uart_3_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_uart_3_control_xing_in_d_bits_size,
+  output [6:0]  auto_uart_3_control_xing_in_d_bits_source,
+  output [31:0] auto_uart_3_control_xing_in_d_bits_data,
+  output        auto_uart_3_io_out_txd,
+  input         auto_uart_3_io_out_rxd,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  uart_3_clock; // @[UART.scala 243:51]
+  wire  uart_3_reset; // @[UART.scala 243:51]
+  wire  uart_3_auto_int_xing_out_sync_0; // @[UART.scala 243:51]
+  wire  uart_3_auto_control_xing_in_a_ready; // @[UART.scala 243:51]
+  wire  uart_3_auto_control_xing_in_a_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_3_auto_control_xing_in_a_bits_opcode; // @[UART.scala 243:51]
+  wire [2:0] uart_3_auto_control_xing_in_a_bits_param; // @[UART.scala 243:51]
+  wire [1:0] uart_3_auto_control_xing_in_a_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_3_auto_control_xing_in_a_bits_source; // @[UART.scala 243:51]
+  wire [28:0] uart_3_auto_control_xing_in_a_bits_address; // @[UART.scala 243:51]
+  wire [3:0] uart_3_auto_control_xing_in_a_bits_mask; // @[UART.scala 243:51]
+  wire [31:0] uart_3_auto_control_xing_in_a_bits_data; // @[UART.scala 243:51]
+  wire  uart_3_auto_control_xing_in_a_bits_corrupt; // @[UART.scala 243:51]
+  wire  uart_3_auto_control_xing_in_d_ready; // @[UART.scala 243:51]
+  wire  uart_3_auto_control_xing_in_d_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_3_auto_control_xing_in_d_bits_opcode; // @[UART.scala 243:51]
+  wire [1:0] uart_3_auto_control_xing_in_d_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_3_auto_control_xing_in_d_bits_source; // @[UART.scala 243:51]
+  wire [31:0] uart_3_auto_control_xing_in_d_bits_data; // @[UART.scala 243:51]
+  wire  uart_3_auto_io_out_txd; // @[UART.scala 243:51]
+  wire  uart_3_auto_io_out_rxd; // @[UART.scala 243:51]
+  TLUART_3 uart_3 ( // @[UART.scala 243:51]
+    .clock(uart_3_clock),
+    .reset(uart_3_reset),
+    .auto_int_xing_out_sync_0(uart_3_auto_int_xing_out_sync_0),
+    .auto_control_xing_in_a_ready(uart_3_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(uart_3_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(uart_3_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(uart_3_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(uart_3_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(uart_3_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(uart_3_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(uart_3_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(uart_3_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(uart_3_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(uart_3_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(uart_3_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(uart_3_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(uart_3_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(uart_3_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(uart_3_auto_control_xing_in_d_bits_data),
+    .auto_io_out_txd(uart_3_auto_io_out_txd),
+    .auto_io_out_rxd(uart_3_auto_io_out_rxd)
+  );
+  assign auto_uart_3_int_xing_out_sync_0 = uart_3_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_uart_3_control_xing_in_a_ready = uart_3_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_uart_3_control_xing_in_d_valid = uart_3_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_uart_3_control_xing_in_d_bits_opcode = uart_3_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_uart_3_control_xing_in_d_bits_size = uart_3_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_uart_3_control_xing_in_d_bits_source = uart_3_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_uart_3_control_xing_in_d_bits_data = uart_3_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_uart_3_io_out_txd = uart_3_auto_io_out_txd; // @[LazyModule.scala 311:12]
+  assign uart_3_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_3_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_valid = auto_uart_3_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_bits_opcode = auto_uart_3_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_bits_param = auto_uart_3_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_bits_size = auto_uart_3_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_bits_source = auto_uart_3_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_bits_address = auto_uart_3_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_bits_mask = auto_uart_3_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_bits_data = auto_uart_3_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_a_bits_corrupt = auto_uart_3_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_control_xing_in_d_ready = auto_uart_3_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign uart_3_auto_io_out_rxd = auto_uart_3_io_out_rxd; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_60(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10053000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLUART_4(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_txd,
+  input         auto_io_out_rxd
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  txm_clock; // @[UART.scala 79:19]
+  wire  txm_reset; // @[UART.scala 79:19]
+  wire  txm_io_en; // @[UART.scala 79:19]
+  wire  txm_io_in_ready; // @[UART.scala 79:19]
+  wire  txm_io_in_valid; // @[UART.scala 79:19]
+  wire [7:0] txm_io_in_bits; // @[UART.scala 79:19]
+  wire  txm_io_out; // @[UART.scala 79:19]
+  wire [15:0] txm_io_div; // @[UART.scala 79:19]
+  wire  txm_io_nstop; // @[UART.scala 79:19]
+  wire  txq_clock; // @[UART.scala 80:19]
+  wire  txq_reset; // @[UART.scala 80:19]
+  wire  txq_io_enq_ready; // @[UART.scala 80:19]
+  wire  txq_io_enq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_enq_bits; // @[UART.scala 80:19]
+  wire  txq_io_deq_ready; // @[UART.scala 80:19]
+  wire  txq_io_deq_valid; // @[UART.scala 80:19]
+  wire [7:0] txq_io_deq_bits; // @[UART.scala 80:19]
+  wire [3:0] txq_io_count; // @[UART.scala 80:19]
+  wire  rxm_clock; // @[UART.scala 82:19]
+  wire  rxm_reset; // @[UART.scala 82:19]
+  wire  rxm_io_en; // @[UART.scala 82:19]
+  wire  rxm_io_in; // @[UART.scala 82:19]
+  wire  rxm_io_out_valid; // @[UART.scala 82:19]
+  wire [7:0] rxm_io_out_bits; // @[UART.scala 82:19]
+  wire [15:0] rxm_io_div; // @[UART.scala 82:19]
+  wire  rxq_clock; // @[UART.scala 83:19]
+  wire  rxq_reset; // @[UART.scala 83:19]
+  wire  rxq_io_enq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_enq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_enq_bits; // @[UART.scala 83:19]
+  wire  rxq_io_deq_ready; // @[UART.scala 83:19]
+  wire  rxq_io_deq_valid; // @[UART.scala 83:19]
+  wire [7:0] rxq_io_deq_bits; // @[UART.scala 83:19]
+  wire [3:0] rxq_io_count; // @[UART.scala 83:19]
+  reg [15:0] div; // @[UART.scala 85:16]
+  reg  txen; // @[UART.scala 91:17]
+  reg  rxen; // @[UART.scala 92:17]
+  reg [3:0] txwm; // @[UART.scala 99:17]
+  reg [3:0] rxwm; // @[UART.scala 100:17]
+  reg  nstop; // @[UART.scala 101:18]
+  reg  ie_rxwm; // @[UART.scala 135:15]
+  reg  ie_txwm; // @[UART.scala 135:15]
+  wire  ip_txwm = txq_io_count < txwm; // @[UART.scala 138:28]
+  wire  ip_rxwm = rxq_io_count > rxwm; // @[UART.scala 139:28]
+  wire  _T = ~txq_io_enq_ready; // @[RegMapFIFO.scala 25:9]
+  wire  _T_1 = ~rxq_io_deq_valid; // @[RegMapFIFO.scala 46:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3f8; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_rimask = |out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [2:0] out_oindex = {in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [7:0] _out_frontSel_T = 8'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_womask_2 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_wivalid_0 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_2 & bundleIn_0_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [31:0] out_prepend_1 = {_T,31'h0}; // @[Cat.scala 31:58]
+  wire  out_wimask_3 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_2 = {ip_rxwm,ip_txwm}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_T_66 = rxq_io_deq_bits; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_3 = {1'h0,_out_T_66}; // @[Cat.scala 31:58]
+  wire [30:0] _out_T_75 = {{22'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_4 = {_T_1,_out_T_75}; // @[Cat.scala 31:58]
+  wire  out_wimask_8 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_8 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_8 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_9 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_5 = {nstop,txen}; // @[Cat.scala 31:58]
+  wire  out_wimask_11 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_11 = out_wivalid_9 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_6 = {{14'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_6 = {txwm,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_12 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_12 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_12 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_7 = {{15'd0}, rxen}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_7 = {rxwm,_out_prepend_T_7}; // @[Cat.scala 31:58]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_15 = out_wivalid_14 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_8 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  _GEN_41 = 3'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_42 = 3'h2 == out_oindex ? _out_T : _GEN_41; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_43 = 3'h3 == out_oindex ? _out_T : _GEN_42; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_44 = 3'h4 == out_oindex ? _out_T : _GEN_43; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_45 = 3'h5 == out_oindex ? _out_T : _GEN_44; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_46 = 3'h6 == out_oindex ? _out_T : _GEN_45; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_47 = 3'h7 == out_oindex | _GEN_46; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_49 = 3'h1 == out_oindex ? out_prepend_4 : out_prepend_1; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_2 = {{12'd0}, out_prepend_6}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_50 = 3'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_49; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_3 = {{12'd0}, out_prepend_7}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_51 = 3'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_50; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_52 = 3'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_51; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_5 = {{30'd0}, out_prepend_2}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_53 = 3'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_52; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{16'd0}, div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_54 = 3'h6 == out_oindex ? _out_out_bits_data_WIRE_1_6 : _GEN_53; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_55 = 3'h7 == out_oindex ? 32'h0 : _GEN_54; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_60 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  UARTTx txm ( // @[UART.scala 79:19]
+    .clock(txm_clock),
+    .reset(txm_reset),
+    .io_en(txm_io_en),
+    .io_in_ready(txm_io_in_ready),
+    .io_in_valid(txm_io_in_valid),
+    .io_in_bits(txm_io_in_bits),
+    .io_out(txm_io_out),
+    .io_div(txm_io_div),
+    .io_nstop(txm_io_nstop)
+  );
+  QueueCompatibility txq ( // @[UART.scala 80:19]
+    .clock(txq_clock),
+    .reset(txq_reset),
+    .io_enq_ready(txq_io_enq_ready),
+    .io_enq_valid(txq_io_enq_valid),
+    .io_enq_bits(txq_io_enq_bits),
+    .io_deq_ready(txq_io_deq_ready),
+    .io_deq_valid(txq_io_deq_valid),
+    .io_deq_bits(txq_io_deq_bits),
+    .io_count(txq_io_count)
+  );
+  UARTRx rxm ( // @[UART.scala 82:19]
+    .clock(rxm_clock),
+    .reset(rxm_reset),
+    .io_en(rxm_io_en),
+    .io_in(rxm_io_in),
+    .io_out_valid(rxm_io_out_valid),
+    .io_out_bits(rxm_io_out_bits),
+    .io_div(rxm_io_div)
+  );
+  QueueCompatibility rxq ( // @[UART.scala 83:19]
+    .clock(rxq_clock),
+    .reset(rxq_reset),
+    .io_enq_ready(rxq_io_enq_ready),
+    .io_enq_valid(rxq_io_enq_valid),
+    .io_enq_bits(rxq_io_enq_bits),
+    .io_deq_ready(rxq_io_deq_ready),
+    .io_deq_valid(rxq_io_deq_valid),
+    .io_deq_bits(rxq_io_deq_bits),
+    .io_count(rxq_io_count)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_txd = txm_io_out; // @[Nodes.scala 1207:84 UART.scala 113:12]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_47 ? _GEN_55 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = ip_txwm & ie_txwm | ip_rxwm & ie_rxwm; // @[UART.scala 140:41]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign txm_clock = clock;
+  assign txm_reset = reset;
+  assign txm_io_en = txen; // @[UART.scala 109:15]
+  assign txm_io_in_valid = txq_io_deq_valid; // @[UART.scala 110:13]
+  assign txm_io_in_bits = txq_io_deq_bits; // @[UART.scala 110:13]
+  assign txm_io_div = div; // @[UART.scala 111:14]
+  assign txm_io_nstop = nstop; // @[UART.scala 112:16]
+  assign txq_clock = clock;
+  assign txq_reset = reset;
+  assign txq_io_enq_valid = out_f_wivalid & ~quash; // @[RegMapFIFO.scala 19:30]
+  assign txq_io_enq_bits = bundleIn_0_a_bits_data[7:0]; // @[RegisterRouter.scala 83:24]
+  assign txq_io_deq_ready = txm_io_in_ready; // @[UART.scala 110:13]
+  assign rxm_clock = clock;
+  assign rxm_reset = reset;
+  assign rxm_io_en = rxen; // @[UART.scala 120:13]
+  assign rxm_io_in = auto_io_out_rxd; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign rxm_io_div = div; // @[UART.scala 123:14]
+  assign rxq_clock = clock;
+  assign rxq_reset = reset;
+  assign rxq_io_enq_valid = rxm_io_out_valid; // @[UART.scala 122:14]
+  assign rxq_io_enq_bits = rxm_io_out_bits; // @[UART.scala 122:14]
+  assign rxq_io_deq_ready = out_rivalid_5 & out_rimask; // @[RegisterRouter.scala 83:24]
+  always @(posedge clock) begin
+    if (reset) begin // @[UART.scala 85:16]
+      div <= 16'h364; // @[UART.scala 85:16]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      div <= bundleIn_0_a_bits_data[15:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 91:17]
+      txen <= 1'h0; // @[UART.scala 91:17]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      txen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 92:17]
+      rxen <= 1'h0; // @[UART.scala 92:17]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      rxen <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 99:17]
+      txwm <= 4'h0; // @[UART.scala 99:17]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      txwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 100:17]
+      rxwm <= 4'h0; // @[UART.scala 100:17]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      rxwm <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 101:18]
+      nstop <= 1'h0; // @[UART.scala 101:18]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      nstop <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_rxwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_15) begin // @[RegField.scala 74:88]
+      ie_rxwm <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 135:15]
+      ie_txwm <= 1'h0; // @[UART.scala 135:15]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      ie_txwm <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  div = _RAND_0[15:0];
+  _RAND_1 = {1{`RANDOM}};
+  txen = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  rxen = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  txwm = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  rxwm = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  nstop = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ie_rxwm = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ie_txwm = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_5(
+  output        auto_uart_4_int_xing_out_sync_0,
+  output        auto_uart_4_control_xing_in_a_ready,
+  input         auto_uart_4_control_xing_in_a_valid,
+  input  [2:0]  auto_uart_4_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_uart_4_control_xing_in_a_bits_param,
+  input  [1:0]  auto_uart_4_control_xing_in_a_bits_size,
+  input  [6:0]  auto_uart_4_control_xing_in_a_bits_source,
+  input  [28:0] auto_uart_4_control_xing_in_a_bits_address,
+  input  [3:0]  auto_uart_4_control_xing_in_a_bits_mask,
+  input  [31:0] auto_uart_4_control_xing_in_a_bits_data,
+  input         auto_uart_4_control_xing_in_a_bits_corrupt,
+  input         auto_uart_4_control_xing_in_d_ready,
+  output        auto_uart_4_control_xing_in_d_valid,
+  output [2:0]  auto_uart_4_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_uart_4_control_xing_in_d_bits_size,
+  output [6:0]  auto_uart_4_control_xing_in_d_bits_source,
+  output [31:0] auto_uart_4_control_xing_in_d_bits_data,
+  output        auto_uart_4_io_out_txd,
+  input         auto_uart_4_io_out_rxd,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  uart_4_clock; // @[UART.scala 243:51]
+  wire  uart_4_reset; // @[UART.scala 243:51]
+  wire  uart_4_auto_int_xing_out_sync_0; // @[UART.scala 243:51]
+  wire  uart_4_auto_control_xing_in_a_ready; // @[UART.scala 243:51]
+  wire  uart_4_auto_control_xing_in_a_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_4_auto_control_xing_in_a_bits_opcode; // @[UART.scala 243:51]
+  wire [2:0] uart_4_auto_control_xing_in_a_bits_param; // @[UART.scala 243:51]
+  wire [1:0] uart_4_auto_control_xing_in_a_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_4_auto_control_xing_in_a_bits_source; // @[UART.scala 243:51]
+  wire [28:0] uart_4_auto_control_xing_in_a_bits_address; // @[UART.scala 243:51]
+  wire [3:0] uart_4_auto_control_xing_in_a_bits_mask; // @[UART.scala 243:51]
+  wire [31:0] uart_4_auto_control_xing_in_a_bits_data; // @[UART.scala 243:51]
+  wire  uart_4_auto_control_xing_in_a_bits_corrupt; // @[UART.scala 243:51]
+  wire  uart_4_auto_control_xing_in_d_ready; // @[UART.scala 243:51]
+  wire  uart_4_auto_control_xing_in_d_valid; // @[UART.scala 243:51]
+  wire [2:0] uart_4_auto_control_xing_in_d_bits_opcode; // @[UART.scala 243:51]
+  wire [1:0] uart_4_auto_control_xing_in_d_bits_size; // @[UART.scala 243:51]
+  wire [6:0] uart_4_auto_control_xing_in_d_bits_source; // @[UART.scala 243:51]
+  wire [31:0] uart_4_auto_control_xing_in_d_bits_data; // @[UART.scala 243:51]
+  wire  uart_4_auto_io_out_txd; // @[UART.scala 243:51]
+  wire  uart_4_auto_io_out_rxd; // @[UART.scala 243:51]
+  TLUART_4 uart_4 ( // @[UART.scala 243:51]
+    .clock(uart_4_clock),
+    .reset(uart_4_reset),
+    .auto_int_xing_out_sync_0(uart_4_auto_int_xing_out_sync_0),
+    .auto_control_xing_in_a_ready(uart_4_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(uart_4_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(uart_4_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(uart_4_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(uart_4_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(uart_4_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(uart_4_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(uart_4_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(uart_4_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(uart_4_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(uart_4_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(uart_4_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(uart_4_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(uart_4_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(uart_4_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(uart_4_auto_control_xing_in_d_bits_data),
+    .auto_io_out_txd(uart_4_auto_io_out_txd),
+    .auto_io_out_rxd(uart_4_auto_io_out_rxd)
+  );
+  assign auto_uart_4_int_xing_out_sync_0 = uart_4_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_uart_4_control_xing_in_a_ready = uart_4_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_uart_4_control_xing_in_d_valid = uart_4_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_uart_4_control_xing_in_d_bits_opcode = uart_4_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_uart_4_control_xing_in_d_bits_size = uart_4_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_uart_4_control_xing_in_d_bits_source = uart_4_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_uart_4_control_xing_in_d_bits_data = uart_4_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_uart_4_io_out_txd = uart_4_auto_io_out_txd; // @[LazyModule.scala 311:12]
+  assign uart_4_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_4_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_valid = auto_uart_4_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_bits_opcode = auto_uart_4_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_bits_param = auto_uart_4_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_bits_size = auto_uart_4_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_bits_source = auto_uart_4_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_bits_address = auto_uart_4_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_bits_mask = auto_uart_4_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_bits_data = auto_uart_4_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_a_bits_corrupt = auto_uart_4_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_control_xing_in_d_ready = auto_uart_4_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign uart_4_auto_io_out_rxd = auto_uart_4_io_out_rxd; // @[LazyModule.scala 311:12]
+endmodule
+module TLBuffer_19(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input         auto_in_a_bits_size,
+  input  [8:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input         auto_in_a_bits_mask,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output        auto_in_d_bits_size,
+  output [8:0]  auto_in_d_bits_source,
+  output [7:0]  auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output        auto_out_a_bits_size,
+  output [8:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output        auto_out_a_bits_mask,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input         auto_out_d_bits_size,
+  input  [8:0]  auto_out_d_bits_source,
+  input  [7:0]  auto_out_d_bits_data
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_61(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input         io_in_a_bits_size,
+  input  [8:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input         io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input         io_in_d_bits_size,
+  input  [8:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [383:0] _RAND_9;
+  reg [1535:0] _RAND_10;
+  reg [767:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 9'h17f; // @[Parameters.scala 57:20]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_33 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_36 = $signed(_T_34) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_163 = ~io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_170 = _T_163 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_181 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_193 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_231 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_271 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_301 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_309 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_339 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_347 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_377 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 9'h17f; // @[Parameters.scala 57:20]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg  size; // @[Monitor.scala 386:22]
+  reg [8:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_535 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_536 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_540 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_544 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_548 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_552 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg  size_1; // @[Monitor.scala 537:22]
+  reg [8:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_559 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_572 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [383:0] inflight; // @[Monitor.scala 611:27]
+  reg [1535:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [767:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [10:0] _GEN_71 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [11:0] _a_opcode_lookup_T = {{1'd0}, _GEN_71}; // @[Monitor.scala 634:69]
+  wire [1535:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [1535:0] _GEN_72 = {{1520'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [1535:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_72; // @[Monitor.scala 634:97]
+  wire [1535:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[1535:1]}; // @[Monitor.scala 634:152]
+  wire [9:0] _a_size_lookup_T = {io_in_d_bits_source, 1'h0}; // @[Monitor.scala 638:65]
+  wire [767:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [3:0] _a_size_lookup_T_5 = 4'h4 - 4'h1; // @[Monitor.scala 609:57]
+  wire [767:0] _GEN_74 = {{764'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [767:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_74; // @[Monitor.scala 638:91]
+  wire [767:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[767:1]}; // @[Monitor.scala 638:144]
+  wire  _T_586 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [511:0] _a_set_wo_ready_T = 512'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_589 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [1:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [1:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 2'h1; // @[Monitor.scala 655:59]
+  wire [10:0] _GEN_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [11:0] _a_opcodes_set_T = {{1'd0}, _GEN_76}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [4098:0] _GEN_1 = {{4095'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [4098:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [9:0] _a_sizes_set_T = {io_in_a_bits_source, 1'h0}; // @[Monitor.scala 657:77]
+  wire [1:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 2'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1024:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1024:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [383:0] _T_591 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_593 = ~_T_591[0]; // @[Monitor.scala 658:17]
+  wire [511:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 512'h0; // @[Monitor.scala 652:72 653:28]
+  wire [4098:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 4099'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1024:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1025'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_597 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [511:0] _d_clr_wo_ready_T = 512'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [4110:0] _GEN_3 = {{4095'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [4110:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [1026:0] _GEN_4 = {{1023'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [1026:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [511:0] _GEN_22 = d_first_done & d_first_1 ? _d_clr_wo_ready_T : 512'h0; // @[Monitor.scala 675:91 676:21]
+  wire [4110:0] _GEN_23 = d_first_done & d_first_1 ? _d_opcodes_clr_T_5 : 4111'h0; // @[Monitor.scala 675:91 677:21]
+  wire [1026:0] _GEN_24 = d_first_done & d_first_1 ? _d_sizes_clr_T_5 : 1027'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_586 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [383:0] _T_610 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_612 = _T_610[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_617 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_618 = 3'h1 == _GEN_32 | _T_617; // @[Monitor.scala 685:77]
+  wire  _T_622 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_629 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_630 = 3'h1 == _GEN_48 | _T_629; // @[Monitor.scala 689:72]
+  wire [1:0] a_size_lookup = _a_size_lookup_T_7[1:0];
+  wire [1:0] _GEN_78 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_634 = _GEN_78 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_642 = _T_597 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_646 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [383:0] a_set = _GEN_16[383:0];
+  wire [383:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [383:0] d_clr = _GEN_22[383:0];
+  wire [383:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [383:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [1535:0] a_opcodes_set = _GEN_19[1535:0];
+  wire [1535:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [1535:0] d_opcodes_clr = _GEN_23[1535:0];
+  wire [1535:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [1535:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [767:0] a_sizes_set = _GEN_20[767:0];
+  wire [767:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [767:0] d_sizes_clr = _GEN_24[767:0];
+  wire [767:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [767:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_655 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 384'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 1536'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 768'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_170 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_170) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_181 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_181) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_193 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_193 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_193 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_193 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_181 & (io_in_a_valid & _T_193 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_193 & ~reset & ~_T_181) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_193 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_193 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_231 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_231 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_231 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_231 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_181 & (io_in_a_valid & _T_231 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_231 & ~reset & ~_T_181) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_271 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_271 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_271 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_271 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_301 & (io_in_a_valid & _T_271 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_271 & ~reset & ~_T_301) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_271 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_271 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_309 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_309 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_309 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_309 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_339 & (io_in_a_valid & _T_309 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_309 & ~reset & ~_T_339) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_309 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_309 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_347 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_347 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_347 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_347 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_377 & (io_in_a_valid & _T_347 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_347 & ~reset & ~_T_377) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_347 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_347 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_347 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_347 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_536 & (_T_535 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_535 & ~reset & ~_T_536) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_540 & (_T_535 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_535 & ~reset & ~_T_540) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_535 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_535 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_535 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_535 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_535 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_535 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_559 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_559 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_572 & (_T_559 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_559 & _T_2 & ~_T_572) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_593 & (_T_589 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_589 & ~reset & ~_T_593) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_612 & (_T_597 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & _T_2 & ~_T_612) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_618 & (_T_597 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & same_cycle_resp & _T_2 & ~_T_618) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_622 & (_T_597 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & same_cycle_resp & _T_2 & ~_T_622) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_597 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_634 & (_T_597 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~same_cycle_resp & _T_2 & ~_T_634) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_646 & (_T_642 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_642 & _T_2 & ~_T_646) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_655 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_655) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[8:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[8:0];
+  _RAND_9 = {12{`RANDOM}};
+  inflight = _RAND_9[383:0];
+  _RAND_10 = {48{`RANDOM}};
+  inflight_opcodes = _RAND_10[1535:0];
+  _RAND_11 = {24{`RANDOM}};
+  inflight_sizes = _RAND_11[767:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  watchdog = _RAND_14[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_62(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10014000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SPIFIFO(
+  input        clock,
+  input        reset,
+  input  [1:0] io_ctrl_fmt_proto,
+  input        io_ctrl_fmt_endian,
+  input        io_ctrl_fmt_iodir,
+  input  [3:0] io_ctrl_fmt_len,
+  input  [1:0] io_ctrl_cs_mode,
+  input  [3:0] io_ctrl_wm_tx,
+  input  [3:0] io_ctrl_wm_rx,
+  input        io_link_tx_ready,
+  output       io_link_tx_valid,
+  output [7:0] io_link_tx_bits,
+  input        io_link_rx_valid,
+  input  [7:0] io_link_rx_bits,
+  output [7:0] io_link_cnt,
+  output [1:0] io_link_fmt_proto,
+  output       io_link_fmt_endian,
+  output       io_link_fmt_iodir,
+  output       io_link_cs_set,
+  output       io_link_cs_clear,
+  output       io_link_lock,
+  output       io_tx_ready,
+  input        io_tx_valid,
+  input  [7:0] io_tx_bits,
+  input        io_rx_ready,
+  output       io_rx_valid,
+  output [7:0] io_rx_bits,
+  output       io_ip_txwm,
+  output       io_ip_rxwm
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  wire  txq_clock; // @[SPIFIFO.scala 22:19]
+  wire  txq_reset; // @[SPIFIFO.scala 22:19]
+  wire  txq_io_enq_ready; // @[SPIFIFO.scala 22:19]
+  wire  txq_io_enq_valid; // @[SPIFIFO.scala 22:19]
+  wire [7:0] txq_io_enq_bits; // @[SPIFIFO.scala 22:19]
+  wire  txq_io_deq_ready; // @[SPIFIFO.scala 22:19]
+  wire  txq_io_deq_valid; // @[SPIFIFO.scala 22:19]
+  wire [7:0] txq_io_deq_bits; // @[SPIFIFO.scala 22:19]
+  wire [3:0] txq_io_count; // @[SPIFIFO.scala 22:19]
+  wire  rxq_clock; // @[SPIFIFO.scala 23:19]
+  wire  rxq_reset; // @[SPIFIFO.scala 23:19]
+  wire  rxq_io_enq_ready; // @[SPIFIFO.scala 23:19]
+  wire  rxq_io_enq_valid; // @[SPIFIFO.scala 23:19]
+  wire [7:0] rxq_io_enq_bits; // @[SPIFIFO.scala 23:19]
+  wire  rxq_io_deq_ready; // @[SPIFIFO.scala 23:19]
+  wire  rxq_io_deq_valid; // @[SPIFIFO.scala 23:19]
+  wire [7:0] rxq_io_deq_bits; // @[SPIFIFO.scala 23:19]
+  wire [3:0] rxq_io_count; // @[SPIFIFO.scala 23:19]
+  wire  fire_tx = io_link_tx_ready & io_link_tx_valid; // @[Decoupled.scala 50:35]
+  reg  rxen; // @[SPIFIFO.scala 30:17]
+  wire  _T = 2'h0 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  _T_1 = 2'h1 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  _T_2 = 2'h2 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire [3:0] _cnt_quot_T_3 = _T ? io_ctrl_fmt_len : 4'h0; // @[Mux.scala 27:73]
+  wire [2:0] _cnt_quot_T_4 = _T_1 ? io_ctrl_fmt_len[3:1] : 3'h0; // @[Mux.scala 27:73]
+  wire [1:0] _cnt_quot_T_5 = _T_2 ? io_ctrl_fmt_len[3:2] : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_2 = {{1'd0}, _cnt_quot_T_4}; // @[Mux.scala 27:73]
+  wire [3:0] _cnt_quot_T_6 = _cnt_quot_T_3 | _GEN_2; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_3 = {{2'd0}, _cnt_quot_T_5}; // @[Mux.scala 27:73]
+  wire [3:0] cnt_quot = _cnt_quot_T_6 | _GEN_3; // @[Mux.scala 27:73]
+  wire  _cnt_rmdr_T_1 = |io_ctrl_fmt_len[0]; // @[SPIFIFO.scala 45:92]
+  wire  _cnt_rmdr_T_3 = |io_ctrl_fmt_len[1:0]; // @[SPIFIFO.scala 45:92]
+  wire  cnt_rmdr = _T_1 & _cnt_rmdr_T_1 | _T_2 & _cnt_rmdr_T_3; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_4 = {{3'd0}, cnt_rmdr}; // @[SPIFIFO.scala 47:27]
+  wire [3:0] _io_link_cnt_T_1 = cnt_quot + _GEN_4; // @[SPIFIFO.scala 47:27]
+  reg [1:0] cs_mode; // @[SPIFIFO.scala 49:24]
+  wire  cs_mode_hold = cs_mode == 2'h2; // @[SPIFIFO.scala 50:31]
+  wire  cs_mode_off = cs_mode == 2'h3; // @[SPIFIFO.scala 51:30]
+  wire  cs_update = cs_mode != io_ctrl_cs_mode; // @[SPIFIFO.scala 52:28]
+  wire  cs_clear = ~(cs_mode_hold | cs_mode_off); // @[SPIFIFO.scala 53:18]
+  QueueCompatibility txq ( // @[SPIFIFO.scala 22:19]
+    .clock(txq_clock),
+    .reset(txq_reset),
+    .io_enq_ready(txq_io_enq_ready),
+    .io_enq_valid(txq_io_enq_valid),
+    .io_enq_bits(txq_io_enq_bits),
+    .io_deq_ready(txq_io_deq_ready),
+    .io_deq_valid(txq_io_deq_valid),
+    .io_deq_bits(txq_io_deq_bits),
+    .io_count(txq_io_count)
+  );
+  QueueCompatibility rxq ( // @[SPIFIFO.scala 23:19]
+    .clock(rxq_clock),
+    .reset(rxq_reset),
+    .io_enq_ready(rxq_io_enq_ready),
+    .io_enq_valid(rxq_io_enq_valid),
+    .io_enq_bits(rxq_io_enq_bits),
+    .io_deq_ready(rxq_io_deq_ready),
+    .io_deq_valid(rxq_io_deq_valid),
+    .io_deq_bits(rxq_io_deq_bits),
+    .io_count(rxq_io_count)
+  );
+  assign io_link_tx_valid = txq_io_deq_valid; // @[SPIFIFO.scala 26:14]
+  assign io_link_tx_bits = txq_io_deq_bits; // @[SPIFIFO.scala 26:14]
+  assign io_link_cnt = {{4'd0}, _io_link_cnt_T_1}; // @[SPIFIFO.scala 47:15]
+  assign io_link_fmt_proto = io_ctrl_fmt_proto; // @[SPIFIFO.scala 46:15]
+  assign io_link_fmt_endian = io_ctrl_fmt_endian; // @[SPIFIFO.scala 46:15]
+  assign io_link_fmt_iodir = io_ctrl_fmt_iodir; // @[SPIFIFO.scala 46:15]
+  assign io_link_cs_set = ~cs_mode_off; // @[SPIFIFO.scala 55:21]
+  assign io_link_cs_clear = cs_update | fire_tx & cs_clear; // @[SPIFIFO.scala 56:33]
+  assign io_link_lock = io_link_tx_valid | rxen; // @[SPIFIFO.scala 59:36]
+  assign io_tx_ready = txq_io_enq_ready; // @[SPIFIFO.scala 25:14]
+  assign io_rx_valid = rxq_io_deq_valid; // @[SPIFIFO.scala 34:9]
+  assign io_rx_bits = rxq_io_deq_bits; // @[SPIFIFO.scala 34:9]
+  assign io_ip_txwm = txq_io_count < io_ctrl_wm_tx; // @[SPIFIFO.scala 61:31]
+  assign io_ip_rxwm = rxq_io_count > io_ctrl_wm_rx; // @[SPIFIFO.scala 62:31]
+  assign txq_clock = clock;
+  assign txq_reset = reset;
+  assign txq_io_enq_valid = io_tx_valid; // @[SPIFIFO.scala 25:14]
+  assign txq_io_enq_bits = io_tx_bits; // @[SPIFIFO.scala 25:14]
+  assign txq_io_deq_ready = io_link_tx_ready; // @[SPIFIFO.scala 26:14]
+  assign rxq_clock = clock;
+  assign rxq_reset = reset;
+  assign rxq_io_enq_valid = io_link_rx_valid & rxen; // @[SPIFIFO.scala 32:40]
+  assign rxq_io_enq_bits = io_link_rx_bits; // @[SPIFIFO.scala 33:19]
+  assign rxq_io_deq_ready = io_rx_ready; // @[SPIFIFO.scala 34:9]
+  always @(posedge clock) begin
+    if (reset) begin // @[SPIFIFO.scala 30:17]
+      rxen <= 1'h0; // @[SPIFIFO.scala 30:17]
+    end else if (fire_tx) begin // @[SPIFIFO.scala 39:18]
+      rxen <= ~io_link_fmt_iodir; // @[SPIFIFO.scala 40:10]
+    end else if (io_link_rx_valid) begin // @[SPIFIFO.scala 36:18]
+      rxen <= 1'h0; // @[SPIFIFO.scala 37:10]
+    end
+    if (reset) begin // @[SPIFIFO.scala 49:24]
+      cs_mode <= 2'h0; // @[SPIFIFO.scala 49:24]
+    end else begin
+      cs_mode <= io_ctrl_cs_mode; // @[SPIFIFO.scala 49:24]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  rxen = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  cs_mode = _RAND_1[1:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SPIPhysical(
+  input         clock,
+  input         reset,
+  output        io_port_sck,
+  input         io_port_dq_0_i,
+  output        io_port_dq_0_o,
+  output        io_port_dq_0_oe,
+  input         io_port_dq_1_i,
+  output        io_port_dq_1_o,
+  output        io_port_dq_1_oe,
+  input         io_port_dq_2_i,
+  output        io_port_dq_2_o,
+  output        io_port_dq_2_oe,
+  input         io_port_dq_3_i,
+  output        io_port_dq_3_o,
+  output        io_port_dq_3_oe,
+  input  [11:0] io_ctrl_sck_div,
+  input         io_ctrl_sck_pol,
+  input         io_ctrl_sck_pha,
+  input  [1:0]  io_ctrl_fmt_proto,
+  input         io_ctrl_fmt_endian,
+  input         io_ctrl_fmt_iodir,
+  input  [11:0] io_ctrl_extradel_coarse,
+  input  [4:0]  io_ctrl_sampledel_sd,
+  output        io_op_ready,
+  input         io_op_valid,
+  input         io_op_bits_fn,
+  input         io_op_bits_stb,
+  input  [7:0]  io_op_bits_cnt,
+  input  [7:0]  io_op_bits_data,
+  output        io_rx_valid,
+  output [7:0]  io_rx_bits
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+`endif // RANDOMIZE_REG_INIT
+  reg [11:0] ctrl_sck_div; // @[SPIPhysical.scala 52:17]
+  reg  ctrl_sck_pol; // @[SPIPhysical.scala 52:17]
+  reg  ctrl_sck_pha; // @[SPIPhysical.scala 52:17]
+  reg [1:0] ctrl_fmt_proto; // @[SPIPhysical.scala 52:17]
+  reg  ctrl_fmt_endian; // @[SPIPhysical.scala 52:17]
+  reg  ctrl_fmt_iodir; // @[SPIPhysical.scala 52:17]
+  wire  proto_0 = 2'h0 == ctrl_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  proto_1 = 2'h1 == ctrl_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  proto_2 = 2'h2 == ctrl_fmt_proto; // @[SPIConsts.scala 13:48]
+  reg  setup_d; // @[SPIPhysical.scala 60:20]
+  reg [7:0] scnt; // @[SPIPhysical.scala 62:17]
+  reg [11:0] tcnt; // @[SPIPhysical.scala 63:17]
+  wire  stop = scnt == 8'h0; // @[SPIPhysical.scala 65:20]
+  wire  beat = tcnt == 12'h0; // @[SPIPhysical.scala 66:20]
+  wire [11:0] _GEN_78 = {{7'd0}, io_ctrl_sampledel_sd}; // @[SPIPhysical.scala 69:49]
+  wire [11:0] totalCoarseDel = io_ctrl_extradel_coarse + _GEN_78; // @[SPIPhysical.scala 69:49]
+  reg  sample_d; // @[SPIPhysical.scala 70:25]
+  reg [11:0] del_cntr; // @[SPIPhysical.scala 71:25]
+  reg  xfr; // @[SPIPhysical.scala 182:16]
+  reg  cref; // @[SPIPhysical.scala 117:17]
+  wire  _GEN_10 = xfr & cref; // @[SPIPhysical.scala 190:18 192:16]
+  wire  _GEN_15 = beat & _GEN_10; // @[SPIPhysical.scala 188:17]
+  wire  sample = stop ? 1'h0 : _GEN_15; // @[SPIPhysical.scala 184:15]
+  wire [11:0] _del_cntr_T_1 = totalCoarseDel - 12'h1; // @[SPIPhysical.scala 75:34]
+  wire [11:0] _del_cntr_T_3 = del_cntr - 12'h1; // @[SPIPhysical.scala 82:28]
+  wire  _T_3 = del_cntr == 12'h1; // @[SPIPhysical.scala 86:18]
+  reg  last_d; // @[SPIPhysical.scala 92:23]
+  reg [11:0] del_cntr_last; // @[SPIPhysical.scala 93:30]
+  wire  last = scnt == 8'h1 & (beat & cref & xfr); // @[SPIPhysical.scala 201:27 202:10]
+  wire [11:0] _del_cntr_last_T_3 = del_cntr_last - 12'h1; // @[SPIPhysical.scala 103:38]
+  wire  _T_7 = del_cntr_last == 12'h1; // @[SPIPhysical.scala 107:23]
+  wire [11:0] _decr_T = beat ? {{4'd0}, scnt} : tcnt; // @[SPIPhysical.scala 112:17]
+  wire [11:0] decr = _decr_T - 12'h1; // @[SPIPhysical.scala 112:36]
+  wire  sched = stop | beat; // @[SPIPhysical.scala 184:15 185:11]
+  reg  sck; // @[SPIPhysical.scala 116:16]
+  wire  cinv = ctrl_sck_pha ^ ctrl_sck_pol; // @[SPIPhysical.scala 118:27]
+  wire [3:0] rxd = {io_port_dq_3_i,io_port_dq_2_i,io_port_dq_1_i,io_port_dq_0_i}; // @[Cat.scala 31:58]
+  wire  rxd_delayed_0 = rxd[0]; // @[SPIPhysical.scala 135:24]
+  wire  rxd_delayed_1 = rxd[1]; // @[SPIPhysical.scala 135:24]
+  wire  rxd_delayed_2 = rxd[2]; // @[SPIPhysical.scala 135:24]
+  wire  rxd_delayed_3 = rxd[3]; // @[SPIPhysical.scala 135:24]
+  wire [3:0] rxd_fin = {rxd_delayed_3,rxd_delayed_2,rxd_delayed_1,rxd_delayed_0}; // @[SPIPhysical.scala 138:29]
+  wire  samples_0 = rxd_fin[1]; // @[SPIPhysical.scala 139:28]
+  wire [1:0] samples_1 = rxd_fin[1:0]; // @[SPIPhysical.scala 139:40]
+  reg [7:0] buffer; // @[SPIPhysical.scala 141:19]
+  wire [7:0] _buffer_in_T_9 = {io_op_bits_data[0],io_op_bits_data[1],io_op_bits_data[2],io_op_bits_data[3],
+    io_op_bits_data[4],io_op_bits_data[5],io_op_bits_data[6],io_op_bits_data[7]}; // @[Cat.scala 31:58]
+  wire [7:0] buffer_in = ~io_ctrl_fmt_endian ? io_op_bits_data : _buffer_in_T_9; // @[SPIPhysical.scala 121:8]
+  wire  shift = totalCoarseDel > 12'h0 ? setup_d | sample_d & stop : sample_d; // @[SPIPhysical.scala 143:19]
+  wire [6:0] _buffer_T_2 = shift ? buffer[6:0] : buffer[7:1]; // @[SPIPhysical.scala 147:12]
+  wire  _buffer_T_4 = sample_d ? samples_0 : buffer[0]; // @[SPIPhysical.scala 148:12]
+  wire [7:0] _buffer_T_5 = {_buffer_T_2,_buffer_T_4}; // @[Cat.scala 31:58]
+  wire [5:0] _buffer_T_8 = shift ? buffer[5:0] : buffer[7:2]; // @[SPIPhysical.scala 147:12]
+  wire [1:0] _buffer_T_10 = sample_d ? samples_1 : buffer[1:0]; // @[SPIPhysical.scala 148:12]
+  wire [7:0] _buffer_T_11 = {_buffer_T_8,_buffer_T_10}; // @[Cat.scala 31:58]
+  wire [3:0] _buffer_T_14 = shift ? buffer[3:0] : buffer[7:4]; // @[SPIPhysical.scala 147:12]
+  wire [3:0] _buffer_T_16 = sample_d ? rxd_fin : buffer[3:0]; // @[SPIPhysical.scala 148:12]
+  wire [7:0] _buffer_T_17 = {_buffer_T_14,_buffer_T_16}; // @[Cat.scala 31:58]
+  wire [7:0] _buffer_T_18 = proto_0 ? _buffer_T_5 : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _buffer_T_19 = proto_1 ? _buffer_T_11 : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _buffer_T_20 = proto_2 ? _buffer_T_17 : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _buffer_T_21 = _buffer_T_18 | _buffer_T_19; // @[Mux.scala 27:73]
+  wire [7:0] _buffer_T_22 = _buffer_T_21 | _buffer_T_20; // @[Mux.scala 27:73]
+  reg [3:0] txd; // @[SPIPhysical.scala 153:16]
+  wire  _T_18 = ~cref; // @[SPIPhysical.scala 203:19]
+  wire  _GEN_25 = beat & ~cref | stop; // @[SPIPhysical.scala 203:26 204:14]
+  wire  accept = scnt == 8'h1 ? _GEN_25 : stop; // @[SPIPhysical.scala 201:27]
+  wire [3:0] txd_in = accept ? buffer_in[7:4] : buffer[7:4]; // @[SPIPhysical.scala 154:19]
+  wire [1:0] _txd_sel_T = accept ? io_ctrl_fmt_proto : ctrl_fmt_proto; // @[SPIPhysical.scala 155:39]
+  wire  txd_sel_0 = 2'h0 == _txd_sel_T; // @[SPIConsts.scala 13:48]
+  wire  txd_sel_1 = 2'h1 == _txd_sel_T; // @[SPIConsts.scala 13:48]
+  wire  txd_sel_2 = 2'h2 == _txd_sel_T; // @[SPIConsts.scala 13:48]
+  wire  txd_shf_0 = txd_in[3]; // @[SPIPhysical.scala 156:55]
+  wire [1:0] txd_shf_1 = txd_in[3:2]; // @[SPIPhysical.scala 156:55]
+  wire  _txd_T = txd_sel_0 & txd_shf_0; // @[Mux.scala 27:73]
+  wire [1:0] _txd_T_1 = txd_sel_1 ? txd_shf_1 : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _txd_T_2 = txd_sel_2 ? txd_in : 4'h0; // @[Mux.scala 27:73]
+  wire [1:0] _GEN_79 = {{1'd0}, _txd_T}; // @[Mux.scala 27:73]
+  wire [1:0] _txd_T_3 = _GEN_79 | _txd_T_1; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_80 = {{2'd0}, _txd_T_3}; // @[Mux.scala 27:73]
+  wire [3:0] _txd_T_4 = _GEN_80 | _txd_T_2; // @[Mux.scala 27:73]
+  reg  done; // @[SPIPhysical.scala 176:17]
+  wire  _T_21 = ~io_op_bits_fn; // @[SPIPhysical.scala 220:22]
+  wire  _GEN_11 = xfr & _T_18; // @[SPIPhysical.scala 190:18 193:15]
+  wire  _GEN_16 = beat & _GEN_11; // @[SPIPhysical.scala 188:17]
+  wire  _GEN_23 = stop ? 1'h0 : _GEN_16; // @[SPIPhysical.scala 184:15]
+  wire  _GEN_26 = beat & ~cref ? 1'h0 : _GEN_23; // @[SPIPhysical.scala 203:26 205:13]
+  wire  _GEN_30 = scnt == 8'h1 ? _GEN_26 : _GEN_23; // @[SPIPhysical.scala 201:27]
+  wire  _GEN_45 = ~io_op_bits_fn | _GEN_30; // @[SPIPhysical.scala 220:22 224:17]
+  wire  _GEN_59 = io_op_valid ? _GEN_45 : _GEN_30; // @[SPIPhysical.scala 212:24]
+  wire  setup = accept & done ? _GEN_59 : _GEN_30; // @[SPIPhysical.scala 210:25]
+  wire  txen_2 = proto_2 & ctrl_fmt_iodir; // @[SPIPhysical.scala 162:49]
+  wire  txen_1 = proto_1 & ctrl_fmt_iodir | txen_2; // @[SPIPhysical.scala 162:82]
+  wire [7:0] _io_rx_bits_T_9 = {buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5],buffer[6],buffer[7]}; // @[Cat.scala 31:58]
+  wire  _GEN_9 = xfr ? cref ^ cinv : sck; // @[SPIPhysical.scala 190:18 191:13 116:16]
+  wire [11:0] _GEN_12 = _T_18 ? decr : {{4'd0}, scnt}; // @[SPIPhysical.scala 195:20 196:14 62:17]
+  wire  _GEN_13 = beat ? _T_18 : cref; // @[SPIPhysical.scala 188:17 189:12 117:17]
+  wire  _GEN_14 = beat ? _GEN_9 : sck; // @[SPIPhysical.scala 116:16 188:17]
+  wire [11:0] _GEN_17 = beat ? _GEN_12 : {{4'd0}, scnt}; // @[SPIPhysical.scala 188:17 62:17]
+  wire  _GEN_20 = stop ? cref : _GEN_13; // @[SPIPhysical.scala 184:15 117:17]
+  wire  _GEN_21 = stop ? sck : _GEN_14; // @[SPIPhysical.scala 184:15 116:16]
+  wire [11:0] _GEN_24 = stop ? {{4'd0}, scnt} : _GEN_17; // @[SPIPhysical.scala 184:15 62:17]
+  wire  _GEN_27 = beat & ~cref ? ctrl_sck_pol : _GEN_21; // @[SPIPhysical.scala 203:26 206:11]
+  wire  _GEN_31 = scnt == 8'h1 ? _GEN_27 : _GEN_21; // @[SPIPhysical.scala 201:27]
+  wire  _GEN_35 = io_op_bits_stb ? io_ctrl_sck_pol : _GEN_31; // @[SPIPhysical.scala 229:25 230:17]
+  wire [11:0] _GEN_36 = io_op_bits_stb ? io_ctrl_sck_div : ctrl_sck_div; // @[SPIPhysical.scala 229:25 231:22 52:17]
+  wire  _GEN_37 = io_op_bits_stb ? io_ctrl_sck_pol : ctrl_sck_pol; // @[SPIPhysical.scala 229:25 231:22 52:17]
+  wire  _GEN_38 = io_op_bits_stb ? io_ctrl_sck_pha : ctrl_sck_pha; // @[SPIPhysical.scala 229:25 231:22 52:17]
+  wire  _GEN_46 = ~io_op_bits_fn ? io_op_bits_cnt == 8'h0 : done | last_d; // @[SPIPhysical.scala 220:22 225:16 177:8]
+  wire [11:0] _GEN_51 = io_op_valid ? {{4'd0}, io_op_bits_cnt} : _GEN_24; // @[SPIPhysical.scala 212:24 213:12]
+  wire  _GEN_60 = io_op_valid ? _GEN_46 : done | last_d; // @[SPIPhysical.scala 212:24 177:8]
+  wire [11:0] _GEN_65 = accept & done ? _GEN_51 : _GEN_24; // @[SPIPhysical.scala 210:25]
+  wire  _GEN_74 = accept & done ? _GEN_60 : done | last_d; // @[SPIPhysical.scala 210:25 177:8]
+  assign io_port_sck = sck; // @[SPIPhysical.scala 166:15]
+  assign io_port_dq_0_o = txd[0]; // @[SPIPhysical.scala 168:24]
+  assign io_port_dq_0_oe = proto_0 | txen_1; // @[SPIPhysical.scala 162:82]
+  assign io_port_dq_1_o = txd[1]; // @[SPIPhysical.scala 168:24]
+  assign io_port_dq_1_oe = proto_1 & ctrl_fmt_iodir | txen_2; // @[SPIPhysical.scala 162:82]
+  assign io_port_dq_2_o = txd[2]; // @[SPIPhysical.scala 168:24]
+  assign io_port_dq_2_oe = proto_2 & ctrl_fmt_iodir; // @[SPIPhysical.scala 162:49]
+  assign io_port_dq_3_o = txd[3]; // @[SPIPhysical.scala 168:24]
+  assign io_port_dq_3_oe = proto_2 & ctrl_fmt_iodir; // @[SPIPhysical.scala 162:49]
+  assign io_op_ready = accept & done; // @[SPIPhysical.scala 210:16]
+  assign io_rx_valid = done; // @[SPIPhysical.scala 179:15]
+  assign io_rx_bits = ~ctrl_fmt_endian ? buffer : _io_rx_bits_T_9; // @[SPIPhysical.scala 121:8]
+  always @(posedge clock) begin
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (!(~io_op_bits_fn)) begin // @[SPIPhysical.scala 220:22]
+          if (io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+            ctrl_sck_div <= _GEN_36;
+          end
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (!(~io_op_bits_fn)) begin // @[SPIPhysical.scala 220:22]
+          if (io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+            ctrl_sck_pol <= _GEN_37;
+          end
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (!(~io_op_bits_fn)) begin // @[SPIPhysical.scala 220:22]
+          if (io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+            ctrl_sck_pha <= _GEN_38;
+          end
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (io_op_bits_stb) begin // @[SPIPhysical.scala 215:21]
+          ctrl_fmt_proto <= io_ctrl_fmt_proto; // @[SPIPhysical.scala 216:18]
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (io_op_bits_stb) begin // @[SPIPhysical.scala 215:21]
+          ctrl_fmt_endian <= io_ctrl_fmt_endian; // @[SPIPhysical.scala 216:18]
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (io_op_bits_stb) begin // @[SPIPhysical.scala 215:21]
+          ctrl_fmt_iodir <= io_ctrl_fmt_iodir; // @[SPIPhysical.scala 216:18]
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        setup_d <= _GEN_45;
+      end else begin
+        setup_d <= _GEN_30;
+      end
+    end else begin
+      setup_d <= _GEN_30;
+    end
+    if (reset) begin // @[SPIPhysical.scala 62:17]
+      scnt <= 8'h0; // @[SPIPhysical.scala 62:17]
+    end else begin
+      scnt <= _GEN_65[7:0];
+    end
+    if (sched) begin // @[SPIPhysical.scala 114:14]
+      tcnt <= ctrl_sck_div;
+    end else begin
+      tcnt <= decr;
+    end
+    if (reset) begin // @[SPIPhysical.scala 70:25]
+      sample_d <= 1'h0; // @[SPIPhysical.scala 70:25]
+    end else begin
+      sample_d <= _T_3;
+    end
+    if (reset) begin // @[SPIPhysical.scala 71:25]
+      del_cntr <= 12'h3; // @[SPIPhysical.scala 71:25]
+    end else if (beat & sample) begin // @[SPIPhysical.scala 73:25]
+      if (totalCoarseDel > 12'h1) begin // @[SPIPhysical.scala 74:32]
+        del_cntr <= _del_cntr_T_1; // @[SPIPhysical.scala 75:16]
+      end else begin
+        del_cntr <= 12'h1; // @[SPIPhysical.scala 78:16]
+      end
+    end else if (del_cntr != 12'h0) begin // @[SPIPhysical.scala 81:27]
+      del_cntr <= _del_cntr_T_3; // @[SPIPhysical.scala 82:16]
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        xfr <= _T_21;
+      end
+    end
+    cref <= reset | _GEN_20; // @[SPIPhysical.scala 117:{17,17}]
+    if (reset) begin // @[SPIPhysical.scala 92:23]
+      last_d <= 1'h0; // @[SPIPhysical.scala 92:23]
+    end else begin
+      last_d <= _T_7;
+    end
+    if (reset) begin // @[SPIPhysical.scala 93:30]
+      del_cntr_last <= 12'h3; // @[SPIPhysical.scala 93:30]
+    end else if (beat & last) begin // @[SPIPhysical.scala 94:23]
+      if (totalCoarseDel > 12'h1) begin // @[SPIPhysical.scala 74:32]
+        del_cntr_last <= _del_cntr_T_1; // @[SPIPhysical.scala 75:16]
+      end else begin
+        del_cntr_last <= 12'h1; // @[SPIPhysical.scala 78:16]
+      end
+    end else if (del_cntr_last != 12'h0) begin // @[SPIPhysical.scala 102:33]
+      del_cntr_last <= _del_cntr_last_T_3; // @[SPIPhysical.scala 103:21]
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (~io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+          sck <= cinv; // @[SPIPhysical.scala 223:15]
+        end else if (io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+          sck <= _GEN_35;
+        end else begin
+          sck <= _GEN_31;
+        end
+      end else begin
+        sck <= _GEN_31;
+      end
+    end else begin
+      sck <= _GEN_31;
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (~io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+          if (~io_ctrl_fmt_endian) begin // @[SPIPhysical.scala 121:8]
+            buffer <= io_op_bits_data;
+          end else begin
+            buffer <= _buffer_in_T_9;
+          end
+        end else begin
+          buffer <= _buffer_T_22; // @[SPIPhysical.scala 144:10]
+        end
+      end else begin
+        buffer <= _buffer_T_22; // @[SPIPhysical.scala 144:10]
+      end
+    end else begin
+      buffer <= _buffer_T_22; // @[SPIPhysical.scala 144:10]
+    end
+    if (reset) begin // @[SPIPhysical.scala 153:16]
+      txd <= 4'h0; // @[SPIPhysical.scala 153:16]
+    end else if (setup) begin // @[SPIPhysical.scala 157:16]
+      txd <= _txd_T_4; // @[SPIPhysical.scala 158:9]
+    end
+    done <= reset | _GEN_74; // @[SPIPhysical.scala 176:{17,17}]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ctrl_sck_div = _RAND_0[11:0];
+  _RAND_1 = {1{`RANDOM}};
+  ctrl_sck_pol = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ctrl_sck_pha = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  ctrl_fmt_proto = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  ctrl_fmt_endian = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  ctrl_fmt_iodir = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  setup_d = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  scnt = _RAND_7[7:0];
+  _RAND_8 = {1{`RANDOM}};
+  tcnt = _RAND_8[11:0];
+  _RAND_9 = {1{`RANDOM}};
+  sample_d = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  del_cntr = _RAND_10[11:0];
+  _RAND_11 = {1{`RANDOM}};
+  xfr = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  cref = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  last_d = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  del_cntr_last = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  sck = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  buffer = _RAND_16[7:0];
+  _RAND_17 = {1{`RANDOM}};
+  txd = _RAND_17[3:0];
+  _RAND_18 = {1{`RANDOM}};
+  done = _RAND_18[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SPIMedia(
+  input         clock,
+  input         reset,
+  output        io_port_sck,
+  input         io_port_dq_0_i,
+  output        io_port_dq_0_o,
+  output        io_port_dq_0_oe,
+  input         io_port_dq_1_i,
+  output        io_port_dq_1_o,
+  output        io_port_dq_1_oe,
+  input         io_port_dq_2_i,
+  output        io_port_dq_2_o,
+  output        io_port_dq_2_oe,
+  input         io_port_dq_3_i,
+  output        io_port_dq_3_o,
+  output        io_port_dq_3_oe,
+  output        io_port_cs_0,
+  input  [11:0] io_ctrl_sck_div,
+  input         io_ctrl_sck_pol,
+  input         io_ctrl_sck_pha,
+  input  [7:0]  io_ctrl_dla_cssck,
+  input  [7:0]  io_ctrl_dla_sckcs,
+  input  [7:0]  io_ctrl_dla_intercs,
+  input  [7:0]  io_ctrl_dla_interxfr,
+  input         io_ctrl_cs_id,
+  input         io_ctrl_cs_dflt_0,
+  input  [11:0] io_ctrl_extradel_coarse,
+  input  [4:0]  io_ctrl_sampledel_sd,
+  output        io_link_tx_ready,
+  input         io_link_tx_valid,
+  input  [7:0]  io_link_tx_bits,
+  output        io_link_rx_valid,
+  output [7:0]  io_link_rx_bits,
+  input  [7:0]  io_link_cnt,
+  input  [1:0]  io_link_fmt_proto,
+  input         io_link_fmt_endian,
+  input         io_link_fmt_iodir,
+  input         io_link_cs_set,
+  input         io_link_cs_clear,
+  input         io_link_cs_hold,
+  output        io_link_active
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+`endif // RANDOMIZE_REG_INIT
+  wire  phy_clock; // @[SPIMedia.scala 36:19]
+  wire  phy_reset; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_sck; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_0_i; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_0_o; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_0_oe; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_1_i; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_1_o; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_1_oe; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_2_i; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_2_o; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_2_oe; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_3_i; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_3_o; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_3_oe; // @[SPIMedia.scala 36:19]
+  wire [11:0] phy_io_ctrl_sck_div; // @[SPIMedia.scala 36:19]
+  wire  phy_io_ctrl_sck_pol; // @[SPIMedia.scala 36:19]
+  wire  phy_io_ctrl_sck_pha; // @[SPIMedia.scala 36:19]
+  wire [1:0] phy_io_ctrl_fmt_proto; // @[SPIMedia.scala 36:19]
+  wire  phy_io_ctrl_fmt_endian; // @[SPIMedia.scala 36:19]
+  wire  phy_io_ctrl_fmt_iodir; // @[SPIMedia.scala 36:19]
+  wire [11:0] phy_io_ctrl_extradel_coarse; // @[SPIMedia.scala 36:19]
+  wire [4:0] phy_io_ctrl_sampledel_sd; // @[SPIMedia.scala 36:19]
+  wire  phy_io_op_ready; // @[SPIMedia.scala 36:19]
+  wire  phy_io_op_valid; // @[SPIMedia.scala 36:19]
+  wire  phy_io_op_bits_fn; // @[SPIMedia.scala 36:19]
+  wire  phy_io_op_bits_stb; // @[SPIMedia.scala 36:19]
+  wire [7:0] phy_io_op_bits_cnt; // @[SPIMedia.scala 36:19]
+  wire [7:0] phy_io_op_bits_data; // @[SPIMedia.scala 36:19]
+  wire  phy_io_rx_valid; // @[SPIMedia.scala 36:19]
+  wire [7:0] phy_io_rx_bits; // @[SPIMedia.scala 36:19]
+  reg  cs_id; // @[SPIMedia.scala 50:15]
+  reg  cs_dflt_0; // @[SPIMedia.scala 50:15]
+  reg  cs_set; // @[SPIMedia.scala 51:19]
+  wire [1:0] _GEN_4 = {{1'd0}, io_link_cs_set}; // @[SPIBundle.scala 49:19]
+  wire [1:0] cs_active_mask = _GEN_4 << io_ctrl_cs_id; // @[SPIBundle.scala 49:19]
+  wire [1:0] _GEN_54 = {{1'd0}, io_ctrl_cs_dflt_0}; // @[SPIBundle.scala 50:33]
+  wire [1:0] cs_active_out = _GEN_54 ^ cs_active_mask; // @[SPIBundle.scala 50:33]
+  wire  cs_active_0 = cs_active_out[0]; // @[SPIBundle.scala 51:32]
+  wire  cs_update = cs_active_0 != cs_dflt_0; // @[SPIMedia.scala 53:37]
+  reg  clear; // @[SPIMedia.scala 55:18]
+  reg  cs_assert; // @[SPIMedia.scala 56:22]
+  wire  cs_deassert = clear | cs_update & ~io_link_cs_hold; // @[SPIMedia.scala 57:27]
+  wire  continuous = io_ctrl_dla_interxfr == 8'h0; // @[SPIMedia.scala 61:42]
+  reg [1:0] state; // @[SPIMedia.scala 72:18]
+  wire [1:0] _GEN_0 = phy_io_op_ready ? 2'h2 : state; // @[SPIMedia.scala 72:18 79:27 80:19]
+  wire  _T_1 = phy_io_op_ready & phy_io_op_valid; // @[Decoupled.scala 50:35]
+  wire [1:0] _GEN_1 = _T_1 ? 2'h1 : state; // @[SPIMedia.scala 72:18 88:28 89:19]
+  wire [7:0] _GEN_2 = cs_deassert ? io_ctrl_dla_sckcs : io_link_cnt; // @[SPIMedia.scala 46:15 77:28 78:23]
+  wire  _GEN_5 = cs_deassert ? 1'h0 : 1'h1; // @[SPIMedia.scala 45:15 77:28 84:23]
+  wire  _GEN_6 = cs_deassert | io_link_tx_valid; // @[SPIMedia.scala 43:12 77:28 86:20]
+  wire  _GEN_7 = cs_deassert ? 1'h0 : phy_io_op_ready; // @[SPIMedia.scala 68:20 77:28 87:28]
+  wire  _GEN_8 = phy_io_op_ready | cs_assert; // @[SPIMedia.scala 95:25 96:21 56:22]
+  wire [7:0] _GEN_11 = io_link_tx_valid ? io_ctrl_dla_cssck : 8'h0; // @[SPIMedia.scala 102:21 92:38 94:21]
+  wire  _GEN_15 = io_link_tx_valid ? 1'h0 : 1'h1; // @[SPIMedia.scala 45:15 103:21 92:38]
+  wire [7:0] _GEN_17 = cs_assert ? _GEN_2 : _GEN_11; // @[SPIMedia.scala 76:24]
+  wire  _GEN_19 = cs_assert ? cs_deassert : 1'h1; // @[SPIMedia.scala 44:14 76:24]
+  wire  _GEN_20 = cs_assert ? _GEN_5 : _GEN_15; // @[SPIMedia.scala 76:24]
+  wire  _GEN_21 = cs_assert ? _GEN_6 : 1'h1; // @[SPIMedia.scala 43:12 76:24]
+  wire  _GEN_22 = cs_assert & _GEN_7; // @[SPIMedia.scala 68:20 76:24]
+  wire [1:0] _GEN_31 = {{1'd0}, cs_set}; // @[SPIBundle.scala 49:19]
+  wire [1:0] mask = _GEN_31 << cs_id; // @[SPIBundle.scala 49:19]
+  wire [1:0] _GEN_55 = {{1'd0}, cs_dflt_0}; // @[SPIBundle.scala 50:33]
+  wire [1:0] out = _GEN_55 ^ mask; // @[SPIBundle.scala 50:33]
+  wire [1:0] _GEN_29 = phy_io_op_ready ? 2'h0 : state; // @[SPIMedia.scala 123:23 125:15 72:18]
+  wire [7:0] _GEN_30 = 2'h2 == state ? io_ctrl_dla_intercs : io_link_cnt; // @[SPIMedia.scala 74:18 119:19 46:15]
+  wire  _GEN_36 = 2'h1 == state ? ~continuous : 1'h1; // @[SPIMedia.scala 110:16 43:12 74:18]
+  wire [7:0] _GEN_37 = 2'h1 == state ? io_ctrl_dla_interxfr : _GEN_30; // @[SPIMedia.scala 74:18 111:19]
+  wire  _GEN_39 = 2'h1 == state ? 1'h0 : 2'h2 == state; // @[SPIMedia.scala 45:15 74:18]
+  SPIPhysical phy ( // @[SPIMedia.scala 36:19]
+    .clock(phy_clock),
+    .reset(phy_reset),
+    .io_port_sck(phy_io_port_sck),
+    .io_port_dq_0_i(phy_io_port_dq_0_i),
+    .io_port_dq_0_o(phy_io_port_dq_0_o),
+    .io_port_dq_0_oe(phy_io_port_dq_0_oe),
+    .io_port_dq_1_i(phy_io_port_dq_1_i),
+    .io_port_dq_1_o(phy_io_port_dq_1_o),
+    .io_port_dq_1_oe(phy_io_port_dq_1_oe),
+    .io_port_dq_2_i(phy_io_port_dq_2_i),
+    .io_port_dq_2_o(phy_io_port_dq_2_o),
+    .io_port_dq_2_oe(phy_io_port_dq_2_oe),
+    .io_port_dq_3_i(phy_io_port_dq_3_i),
+    .io_port_dq_3_o(phy_io_port_dq_3_o),
+    .io_port_dq_3_oe(phy_io_port_dq_3_oe),
+    .io_ctrl_sck_div(phy_io_ctrl_sck_div),
+    .io_ctrl_sck_pol(phy_io_ctrl_sck_pol),
+    .io_ctrl_sck_pha(phy_io_ctrl_sck_pha),
+    .io_ctrl_fmt_proto(phy_io_ctrl_fmt_proto),
+    .io_ctrl_fmt_endian(phy_io_ctrl_fmt_endian),
+    .io_ctrl_fmt_iodir(phy_io_ctrl_fmt_iodir),
+    .io_ctrl_extradel_coarse(phy_io_ctrl_extradel_coarse),
+    .io_ctrl_sampledel_sd(phy_io_ctrl_sampledel_sd),
+    .io_op_ready(phy_io_op_ready),
+    .io_op_valid(phy_io_op_valid),
+    .io_op_bits_fn(phy_io_op_bits_fn),
+    .io_op_bits_stb(phy_io_op_bits_stb),
+    .io_op_bits_cnt(phy_io_op_bits_cnt),
+    .io_op_bits_data(phy_io_op_bits_data),
+    .io_rx_valid(phy_io_rx_valid),
+    .io_rx_bits(phy_io_rx_bits)
+  );
+  assign io_port_sck = phy_io_port_sck; // @[SPIMedia.scala 63:15]
+  assign io_port_dq_0_o = phy_io_port_dq_0_o; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_0_oe = phy_io_port_dq_0_oe; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_1_o = phy_io_port_dq_1_o; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_1_oe = phy_io_port_dq_1_oe; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_2_o = phy_io_port_dq_2_o; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_2_oe = phy_io_port_dq_2_oe; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_3_o = phy_io_port_dq_3_o; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_3_oe = phy_io_port_dq_3_oe; // @[SPIMedia.scala 64:14]
+  assign io_port_cs_0 = cs_dflt_0; // @[SPIMedia.scala 65:14]
+  assign io_link_tx_ready = 2'h0 == state & _GEN_22; // @[SPIMedia.scala 74:18 68:20]
+  assign io_link_rx_valid = phy_io_rx_valid; // @[SPIMedia.scala 67:14]
+  assign io_link_rx_bits = phy_io_rx_bits; // @[SPIMedia.scala 67:14]
+  assign io_link_active = cs_assert; // @[SPIMedia.scala 69:18]
+  assign phy_clock = clock;
+  assign phy_reset = reset;
+  assign phy_io_port_dq_0_i = io_port_dq_0_i; // @[SPIMedia.scala 64:14]
+  assign phy_io_port_dq_1_i = io_port_dq_1_i; // @[SPIMedia.scala 64:14]
+  assign phy_io_port_dq_2_i = io_port_dq_2_i; // @[SPIMedia.scala 64:14]
+  assign phy_io_port_dq_3_i = io_port_dq_3_i; // @[SPIMedia.scala 64:14]
+  assign phy_io_ctrl_sck_div = io_ctrl_sck_div; // @[SPIMedia.scala 37:19]
+  assign phy_io_ctrl_sck_pol = io_ctrl_sck_pol; // @[SPIMedia.scala 37:19]
+  assign phy_io_ctrl_sck_pha = io_ctrl_sck_pha; // @[SPIMedia.scala 37:19]
+  assign phy_io_ctrl_fmt_proto = io_link_fmt_proto; // @[SPIMedia.scala 38:19]
+  assign phy_io_ctrl_fmt_endian = io_link_fmt_endian; // @[SPIMedia.scala 38:19]
+  assign phy_io_ctrl_fmt_iodir = io_link_fmt_iodir; // @[SPIMedia.scala 38:19]
+  assign phy_io_ctrl_extradel_coarse = io_ctrl_extradel_coarse; // @[SPIMedia.scala 39:24]
+  assign phy_io_ctrl_sampledel_sd = io_ctrl_sampledel_sd; // @[SPIMedia.scala 40:25]
+  assign phy_io_op_valid = 2'h0 == state ? _GEN_21 : _GEN_36; // @[SPIMedia.scala 74:18]
+  assign phy_io_op_bits_fn = 2'h0 == state ? _GEN_19 : 1'h1; // @[SPIMedia.scala 44:14 74:18]
+  assign phy_io_op_bits_stb = 2'h0 == state ? _GEN_20 : _GEN_39; // @[SPIMedia.scala 74:18]
+  assign phy_io_op_bits_cnt = 2'h0 == state ? _GEN_17 : _GEN_37; // @[SPIMedia.scala 74:18]
+  assign phy_io_op_bits_data = io_link_tx_bits; // @[SPIMedia.scala 47:16]
+  always @(posedge clock) begin
+    if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (!(io_link_tx_valid)) begin // @[SPIMedia.scala 92:38]
+          cs_id <= io_ctrl_cs_id; // @[SPIMedia.scala 104:12]
+        end
+      end
+    end
+    if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (io_link_tx_valid) begin // @[SPIMedia.scala 92:38]
+          if (phy_io_op_ready) begin // @[SPIMedia.scala 95:25]
+            cs_dflt_0 <= cs_active_0; // @[SPIMedia.scala 98:19]
+          end
+        end else begin
+          cs_dflt_0 <= io_ctrl_cs_dflt_0; // @[SPIMedia.scala 104:12]
+        end
+      end
+    end else if (!(2'h1 == state)) begin // @[SPIMedia.scala 74:18]
+      if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+        if (phy_io_op_ready) begin // @[SPIMedia.scala 123:23]
+          cs_dflt_0 <= out[0]; // @[SPIMedia.scala 124:17]
+        end
+      end
+    end
+    if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (io_link_tx_valid) begin // @[SPIMedia.scala 92:38]
+          if (phy_io_op_ready) begin // @[SPIMedia.scala 95:25]
+            cs_set <= io_link_cs_set; // @[SPIMedia.scala 97:18]
+          end
+        end
+      end
+    end
+    if (reset) begin // @[SPIMedia.scala 55:18]
+      clear <= 1'h0; // @[SPIMedia.scala 55:18]
+    end else if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      clear <= clear | io_link_cs_clear & cs_assert; // @[SPIMedia.scala 59:9]
+    end else if (2'h1 == state) begin // @[SPIMedia.scala 74:18]
+      clear <= clear | io_link_cs_clear & cs_assert; // @[SPIMedia.scala 59:9]
+    end else if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+      clear <= 1'h0; // @[SPIMedia.scala 122:13]
+    end else begin
+      clear <= clear | io_link_cs_clear & cs_assert; // @[SPIMedia.scala 59:9]
+    end
+    if (reset) begin // @[SPIMedia.scala 56:22]
+      cs_assert <= 1'h0; // @[SPIMedia.scala 56:22]
+    end else if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (io_link_tx_valid) begin // @[SPIMedia.scala 92:38]
+          cs_assert <= _GEN_8;
+        end
+      end
+    end else if (!(2'h1 == state)) begin // @[SPIMedia.scala 74:18]
+      if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+        cs_assert <= 1'h0; // @[SPIMedia.scala 121:17]
+      end
+    end
+    if (reset) begin // @[SPIMedia.scala 72:18]
+      state <= 2'h0; // @[SPIMedia.scala 72:18]
+    end else if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (cs_assert) begin // @[SPIMedia.scala 76:24]
+        if (cs_deassert) begin // @[SPIMedia.scala 77:28]
+          state <= _GEN_0;
+        end else begin
+          state <= _GEN_1;
+        end
+      end
+    end else if (2'h1 == state) begin // @[SPIMedia.scala 74:18]
+      if (phy_io_op_ready | continuous) begin // @[SPIMedia.scala 112:37]
+        state <= 2'h0; // @[SPIMedia.scala 113:15]
+      end
+    end else if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+      state <= _GEN_29;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  cs_id = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  cs_dflt_0 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  cs_set = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  clear = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  cs_assert = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  state = _RAND_5[1:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SPIFlashMap(
+  input         clock,
+  input         reset,
+  input         io_en,
+  input  [1:0]  io_ctrl_insn_cmd_proto,
+  input  [7:0]  io_ctrl_insn_cmd_code,
+  input         io_ctrl_insn_cmd_en,
+  input  [1:0]  io_ctrl_insn_addr_proto,
+  input  [2:0]  io_ctrl_insn_addr_len,
+  input  [7:0]  io_ctrl_insn_pad_code,
+  input  [3:0]  io_ctrl_insn_pad_cnt,
+  input  [1:0]  io_ctrl_insn_data_proto,
+  input         io_ctrl_fmt_endian,
+  output        io_addr_ready,
+  input         io_addr_valid,
+  input  [31:0] io_addr_bits_next,
+  input  [31:0] io_addr_bits_hold,
+  input         io_data_ready,
+  output        io_data_valid,
+  output [7:0]  io_data_bits,
+  input         io_link_tx_ready,
+  output        io_link_tx_valid,
+  output [7:0]  io_link_tx_bits,
+  input         io_link_rx_valid,
+  input  [7:0]  io_link_rx_bits,
+  output [7:0]  io_link_cnt,
+  output [1:0]  io_link_fmt_proto,
+  output        io_link_fmt_endian,
+  output        io_link_fmt_iodir,
+  output        io_link_cs_clear,
+  input         io_link_active,
+  output        io_link_lock
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] addr = io_addr_bits_hold + 32'h1; // @[SPIFlash.scala 59:32]
+  wire  merge = io_link_active & io_addr_bits_next == addr; // @[SPIFlash.scala 60:30]
+  wire  _io_link_cnt_T = 2'h0 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  _io_link_cnt_T_1 = 2'h1 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  _io_link_cnt_T_2 = 2'h2 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire [3:0] _io_link_cnt_T_3 = _io_link_cnt_T ? 4'h8 : 4'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_link_cnt_T_4 = _io_link_cnt_T_1 ? 3'h4 : 3'h0; // @[Mux.scala 27:73]
+  wire [1:0] _io_link_cnt_T_5 = _io_link_cnt_T_2 ? 2'h2 : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_73 = {{1'd0}, _io_link_cnt_T_4}; // @[Mux.scala 27:73]
+  wire [3:0] _io_link_cnt_T_6 = _io_link_cnt_T_3 | _GEN_73; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_74 = {{2'd0}, _io_link_cnt_T_5}; // @[Mux.scala 27:73]
+  wire [3:0] _io_link_cnt_T_7 = _io_link_cnt_T_6 | _GEN_74; // @[Mux.scala 27:73]
+  reg [3:0] cnt; // @[SPIFlash.scala 81:16]
+  wire  cnt_cmp_0 = cnt == 4'h0; // @[SPIFlash.scala 83:48]
+  wire  cnt_cmp_1 = cnt == 4'h1; // @[SPIFlash.scala 83:48]
+  wire  cnt_cmp_2 = cnt == 4'h2; // @[SPIFlash.scala 83:48]
+  wire  cnt_cmp_3 = cnt == 4'h3; // @[SPIFlash.scala 83:48]
+  wire  cnt_cmp_4 = cnt == 4'h4; // @[SPIFlash.scala 83:48]
+  wire  cnt_last = cnt_cmp_1 & io_link_tx_ready; // @[SPIFlash.scala 85:29]
+  wire  cnt_done = cnt_last | cnt_cmp_0; // @[SPIFlash.scala 86:27]
+  wire  _T = io_link_tx_ready & io_link_tx_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _cnt_T_1 = cnt - 4'h1; // @[SPIFlash.scala 90:18]
+  wire [3:0] _GEN_0 = _T ? _cnt_T_1 : cnt; // @[SPIFlash.scala 89:30 90:11 81:16]
+  reg [2:0] state; // @[SPIFlash.scala 95:18]
+  wire  _GEN_54 = 3'h1 == state ? 1'h0 : 3'h2 == state; // @[SPIFlash.scala 97:18]
+  wire  cnt_en = 3'h0 == state ? 1'h0 : _GEN_54; // @[SPIFlash.scala 97:18]
+  wire  _GEN_1 = cnt_en ? ~cnt_cmp_0 : 1'h1; // @[SPIFlash.scala 87:17 63:20 88:22]
+  wire [3:0] _GEN_2 = cnt_en ? _GEN_0 : cnt; // @[SPIFlash.scala 81:16 87:17]
+  wire [2:0] _state_T = io_ctrl_insn_cmd_en ? 3'h1 : 3'h2; // @[SPIFlash.scala 106:25]
+  wire [2:0] _GEN_3 = merge ? 3'h4 : _state_T; // @[SPIFlash.scala 103:24 104:19 106:19]
+  wire  _GEN_4 = merge ? 1'h0 : 1'h1; // @[SPIFlash.scala 103:24 72:20 107:30]
+  wire  _GEN_6 = io_addr_valid & _GEN_4; // @[SPIFlash.scala 102:30 72:20]
+  wire  _GEN_11 = io_en & _GEN_6; // @[SPIFlash.scala 100:20 72:20]
+  wire  _GEN_12 = io_en & io_addr_valid; // @[SPIFlash.scala 100:20 114:22]
+  wire [7:0] _io_link_tx_bits_T_4 = cnt_cmp_1 ? io_addr_bits_hold[7:0] : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_5 = cnt_cmp_2 ? io_addr_bits_hold[15:8] : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_6 = cnt_cmp_3 ? io_addr_bits_hold[23:16] : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_7 = cnt_cmp_4 ? io_addr_bits_hold[31:24] : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_8 = _io_link_tx_bits_T_4 | _io_link_tx_bits_T_5; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_9 = _io_link_tx_bits_T_8 | _io_link_tx_bits_T_6; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_10 = _io_link_tx_bits_T_9 | _io_link_tx_bits_T_7; // @[Mux.scala 27:73]
+  wire [2:0] _GEN_15 = cnt_done ? 3'h3 : state; // @[SPIFlash.scala 139:23 140:15 95:18]
+  wire [2:0] _GEN_16 = io_link_tx_ready ? 3'h4 : state; // @[SPIFlash.scala 148:31 149:15 95:18]
+  wire [2:0] _GEN_17 = io_link_tx_ready ? 3'h5 : state; // @[SPIFlash.scala 156:31 157:15 95:18]
+  wire  _T_7 = io_data_ready & io_data_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] _GEN_18 = _T_7 ? 3'h0 : state; // @[SPIFlash.scala 164:29 165:15 95:18]
+  wire [2:0] _GEN_19 = io_data_ready ? 3'h0 : state; // @[SPIFlash.scala 172:28 173:15 95:18]
+  wire [7:0] _GEN_21 = 3'h6 == state ? 8'h0 : io_link_rx_bits; // @[SPIFlash.scala 97:18 171:20 79:16]
+  wire [2:0] _GEN_22 = 3'h6 == state ? _GEN_19 : state; // @[SPIFlash.scala 95:18 97:18]
+  wire  _GEN_23 = 3'h5 == state ? 1'h0 : _GEN_1; // @[SPIFlash.scala 97:18 162:24]
+  wire  _GEN_24 = 3'h5 == state ? io_link_rx_valid : 3'h6 == state; // @[SPIFlash.scala 97:18 163:21]
+  wire [2:0] _GEN_25 = 3'h5 == state ? _GEN_18 : _GEN_22; // @[SPIFlash.scala 97:18]
+  wire [7:0] _GEN_26 = 3'h5 == state ? io_link_rx_bits : _GEN_21; // @[SPIFlash.scala 79:16 97:18]
+  wire [1:0] _GEN_27 = 3'h4 == state ? io_ctrl_insn_data_proto : io_ctrl_insn_addr_proto; // @[SPIFlash.scala 97:18 154:25 64:21]
+  wire  _GEN_28 = 3'h4 == state ? 1'h0 : 1'h1; // @[SPIFlash.scala 97:18 155:25 65:21]
+  wire [2:0] _GEN_29 = 3'h4 == state ? _GEN_17 : _GEN_25; // @[SPIFlash.scala 97:18]
+  wire  _GEN_30 = 3'h4 == state ? _GEN_1 : _GEN_23; // @[SPIFlash.scala 97:18]
+  wire  _GEN_31 = 3'h4 == state ? 1'h0 : _GEN_24; // @[SPIFlash.scala 78:17 97:18]
+  wire [7:0] _GEN_32 = 3'h4 == state ? io_link_rx_bits : _GEN_26; // @[SPIFlash.scala 79:16 97:18]
+  wire [3:0] _GEN_33 = 3'h3 == state ? io_ctrl_insn_pad_cnt : _io_link_cnt_T_7; // @[SPIFlash.scala 97:18 145:19 67:15]
+  wire [2:0] _GEN_35 = 3'h3 == state ? _GEN_16 : _GEN_29; // @[SPIFlash.scala 97:18]
+  wire [1:0] _GEN_36 = 3'h3 == state ? io_ctrl_insn_addr_proto : _GEN_27; // @[SPIFlash.scala 97:18 64:21]
+  wire  _GEN_38 = 3'h3 == state ? _GEN_1 : _GEN_30; // @[SPIFlash.scala 97:18]
+  wire  _GEN_39 = 3'h3 == state ? 1'h0 : _GEN_31; // @[SPIFlash.scala 78:17 97:18]
+  wire [7:0] _GEN_40 = 3'h3 == state ? io_link_rx_bits : _GEN_32; // @[SPIFlash.scala 79:16 97:18]
+  wire [7:0] _GEN_41 = 3'h2 == state ? _io_link_tx_bits_T_10 : io_ctrl_insn_pad_code; // @[SPIFlash.scala 97:18 131:23]
+  wire [3:0] _GEN_44 = 3'h2 == state ? _io_link_cnt_T_7 : _GEN_33; // @[SPIFlash.scala 67:15 97:18]
+  wire [1:0] _GEN_45 = 3'h2 == state ? io_ctrl_insn_addr_proto : _GEN_36; // @[SPIFlash.scala 97:18 64:21]
+  wire  _GEN_47 = 3'h2 == state ? _GEN_1 : _GEN_38; // @[SPIFlash.scala 97:18]
+  wire  _GEN_48 = 3'h2 == state ? 1'h0 : _GEN_39; // @[SPIFlash.scala 78:17 97:18]
+  wire [7:0] _GEN_49 = 3'h2 == state ? io_link_rx_bits : _GEN_40; // @[SPIFlash.scala 79:16 97:18]
+  wire [1:0] _GEN_50 = 3'h1 == state ? io_ctrl_insn_cmd_proto : _GEN_45; // @[SPIFlash.scala 97:18 122:25]
+  wire [3:0] _GEN_55 = 3'h1 == state ? _io_link_cnt_T_7 : _GEN_44; // @[SPIFlash.scala 67:15 97:18]
+  wire  _GEN_57 = 3'h1 == state ? _GEN_1 : _GEN_47; // @[SPIFlash.scala 97:18]
+  wire  _GEN_58 = 3'h1 == state ? 1'h0 : _GEN_48; // @[SPIFlash.scala 78:17 97:18]
+  wire [7:0] _GEN_59 = 3'h1 == state ? io_link_rx_bits : _GEN_49; // @[SPIFlash.scala 79:16 97:18]
+  wire [3:0] _GEN_69 = 3'h0 == state ? _io_link_cnt_T_7 : _GEN_55; // @[SPIFlash.scala 67:15 97:18]
+  assign io_addr_ready = 3'h0 == state; // @[SPIFlash.scala 97:18]
+  assign io_data_valid = 3'h0 == state ? 1'h0 : _GEN_58; // @[SPIFlash.scala 78:17 97:18]
+  assign io_data_bits = 3'h0 == state ? io_link_rx_bits : _GEN_59; // @[SPIFlash.scala 79:16 97:18]
+  assign io_link_tx_valid = 3'h0 == state ? 1'h0 : _GEN_57; // @[SPIFlash.scala 97:18 99:24]
+  assign io_link_tx_bits = 3'h1 == state ? io_ctrl_insn_cmd_code : _GEN_41; // @[SPIFlash.scala 97:18 123:23]
+  assign io_link_cnt = {{4'd0}, _GEN_69};
+  assign io_link_fmt_proto = 3'h0 == state ? io_ctrl_insn_addr_proto : _GEN_50; // @[SPIFlash.scala 97:18 64:21]
+  assign io_link_fmt_endian = io_ctrl_fmt_endian; // @[SPIFlash.scala 66:22]
+  assign io_link_fmt_iodir = 3'h0 == state | (3'h1 == state | (3'h2 == state | (3'h3 == state | _GEN_28))); // @[SPIFlash.scala 97:18 65:21]
+  assign io_link_cs_clear = 3'h0 == state & _GEN_11; // @[SPIFlash.scala 97:18 72:20]
+  assign io_link_lock = 3'h0 == state ? _GEN_12 : 1'h1; // @[SPIFlash.scala 74:16 97:18]
+  always @(posedge clock) begin
+    if (3'h0 == state) begin // @[SPIFlash.scala 97:18]
+      cnt <= _GEN_2;
+    end else if (3'h1 == state) begin // @[SPIFlash.scala 97:18]
+      if (io_link_tx_ready) begin // @[SPIFlash.scala 124:31]
+        cnt <= {{1'd0}, io_ctrl_insn_addr_len}; // @[SPIFlash.scala 126:13]
+      end else begin
+        cnt <= _GEN_2;
+      end
+    end else begin
+      cnt <= _GEN_2;
+    end
+    if (reset) begin // @[SPIFlash.scala 95:18]
+      state <= 3'h0; // @[SPIFlash.scala 95:18]
+    end else if (3'h0 == state) begin // @[SPIFlash.scala 97:18]
+      if (io_en) begin // @[SPIFlash.scala 100:20]
+        if (io_addr_valid) begin // @[SPIFlash.scala 102:30]
+          state <= _GEN_3;
+        end
+      end else if (io_addr_valid) begin // @[SPIFlash.scala 115:30]
+        state <= 3'h6; // @[SPIFlash.scala 116:17]
+      end
+    end else if (3'h1 == state) begin // @[SPIFlash.scala 97:18]
+      if (io_link_tx_ready) begin // @[SPIFlash.scala 124:31]
+        state <= 3'h2; // @[SPIFlash.scala 125:15]
+      end
+    end else if (3'h2 == state) begin // @[SPIFlash.scala 97:18]
+      state <= _GEN_15;
+    end else begin
+      state <= _GEN_35;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  cnt = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  state = _RAND_1[2:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SPIArbiter(
+  input        clock,
+  input        reset,
+  output       io_inner_0_tx_ready,
+  input        io_inner_0_tx_valid,
+  input  [7:0] io_inner_0_tx_bits,
+  output       io_inner_0_rx_valid,
+  output [7:0] io_inner_0_rx_bits,
+  input  [7:0] io_inner_0_cnt,
+  input  [1:0] io_inner_0_fmt_proto,
+  input        io_inner_0_fmt_endian,
+  input        io_inner_0_fmt_iodir,
+  input        io_inner_0_cs_clear,
+  output       io_inner_0_active,
+  input        io_inner_0_lock,
+  output       io_inner_1_tx_ready,
+  input        io_inner_1_tx_valid,
+  input  [7:0] io_inner_1_tx_bits,
+  output       io_inner_1_rx_valid,
+  output [7:0] io_inner_1_rx_bits,
+  input  [7:0] io_inner_1_cnt,
+  input  [1:0] io_inner_1_fmt_proto,
+  input        io_inner_1_fmt_endian,
+  input        io_inner_1_fmt_iodir,
+  input        io_inner_1_cs_set,
+  input        io_inner_1_cs_clear,
+  input        io_inner_1_lock,
+  input        io_outer_tx_ready,
+  output       io_outer_tx_valid,
+  output [7:0] io_outer_tx_bits,
+  input        io_outer_rx_valid,
+  input  [7:0] io_outer_rx_bits,
+  output [7:0] io_outer_cnt,
+  output [1:0] io_outer_fmt_proto,
+  output       io_outer_fmt_endian,
+  output       io_outer_fmt_iodir,
+  output       io_outer_cs_set,
+  output       io_outer_cs_clear,
+  output       io_outer_cs_hold,
+  input        io_outer_active,
+  input        io_sel
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  reg  sel_0; // @[SPIArbiter.scala 18:16]
+  reg  sel_1; // @[SPIArbiter.scala 18:16]
+  wire [7:0] _io_outer_tx_bits_T = sel_0 ? io_inner_0_tx_bits : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_outer_tx_bits_T_1 = sel_1 ? io_inner_1_tx_bits : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_outer_cnt_T = sel_0 ? io_inner_0_cnt : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_outer_cnt_T_1 = sel_1 ? io_inner_1_cnt : 8'h0; // @[Mux.scala 27:73]
+  wire [1:0] _io_outer_fmt_T_6 = sel_0 ? io_inner_0_fmt_proto : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _io_outer_fmt_T_7 = sel_1 ? io_inner_1_fmt_proto : 2'h0; // @[Mux.scala 27:73]
+  wire  _io_outer_cs_T_clear = sel_0 ? io_inner_0_cs_clear : io_inner_1_cs_clear; // @[SPIArbiter.scala 25:21]
+  wire  nsel_0 = ~io_sel; // @[SPIArbiter.scala 36:37]
+  wire  lock = sel_0 & io_inner_0_lock | sel_1 & io_inner_1_lock; // @[Mux.scala 27:73]
+  wire [1:0] _T_1 = {sel_1,sel_0}; // @[SPIArbiter.scala 40:15]
+  wire [1:0] _T_2 = {io_sel,nsel_0}; // @[SPIArbiter.scala 40:31]
+  wire  _GEN_0 = _T_1 != _T_2 | _io_outer_cs_T_clear; // @[SPIArbiter.scala 25:15 40:39 41:25]
+  wire  _GEN_1 = ~lock ? nsel_0 : sel_0; // @[SPIArbiter.scala 18:16 38:16 39:9]
+  assign io_inner_0_tx_ready = io_outer_tx_ready & sel_0; // @[SPIArbiter.scala 30:41]
+  assign io_inner_0_rx_valid = io_outer_rx_valid & sel_0; // @[SPIArbiter.scala 31:41]
+  assign io_inner_0_rx_bits = io_outer_rx_bits; // @[SPIArbiter.scala 32:19]
+  assign io_inner_0_active = io_outer_active & sel_0; // @[SPIArbiter.scala 33:37]
+  assign io_inner_1_tx_ready = io_outer_tx_ready & sel_1; // @[SPIArbiter.scala 30:41]
+  assign io_inner_1_rx_valid = io_outer_rx_valid & sel_1; // @[SPIArbiter.scala 31:41]
+  assign io_inner_1_rx_bits = io_outer_rx_bits; // @[SPIArbiter.scala 32:19]
+  assign io_outer_tx_valid = sel_0 & io_inner_0_tx_valid | sel_1 & io_inner_1_tx_valid; // @[Mux.scala 27:73]
+  assign io_outer_tx_bits = _io_outer_tx_bits_T | _io_outer_tx_bits_T_1; // @[Mux.scala 27:73]
+  assign io_outer_cnt = _io_outer_cnt_T | _io_outer_cnt_T_1; // @[Mux.scala 27:73]
+  assign io_outer_fmt_proto = _io_outer_fmt_T_6 | _io_outer_fmt_T_7; // @[Mux.scala 27:73]
+  assign io_outer_fmt_endian = sel_0 & io_inner_0_fmt_endian | sel_1 & io_inner_1_fmt_endian; // @[Mux.scala 27:73]
+  assign io_outer_fmt_iodir = sel_0 & io_inner_0_fmt_iodir | sel_1 & io_inner_1_fmt_iodir; // @[Mux.scala 27:73]
+  assign io_outer_cs_set = sel_0 | io_inner_1_cs_set; // @[SPIArbiter.scala 25:21]
+  assign io_outer_cs_clear = ~lock ? _GEN_0 : _io_outer_cs_T_clear; // @[SPIArbiter.scala 25:15 38:16]
+  assign io_outer_cs_hold = sel_0; // @[SPIArbiter.scala 25:21]
+  always @(posedge clock) begin
+    sel_0 <= reset | _GEN_1; // @[SPIArbiter.scala 18:{16,16}]
+    if (reset) begin // @[SPIArbiter.scala 18:16]
+      sel_1 <= 1'h0; // @[SPIArbiter.scala 18:16]
+    end else if (~lock) begin // @[SPIArbiter.scala 38:16]
+      sel_1 <= io_sel; // @[SPIArbiter.scala 39:9]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  sel_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sel_1 = _RAND_1[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLSPIFlash(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_mem_xing_in_a_ready,
+  input         auto_mem_xing_in_a_valid,
+  input  [2:0]  auto_mem_xing_in_a_bits_opcode,
+  input  [2:0]  auto_mem_xing_in_a_bits_param,
+  input         auto_mem_xing_in_a_bits_size,
+  input  [8:0]  auto_mem_xing_in_a_bits_source,
+  input  [29:0] auto_mem_xing_in_a_bits_address,
+  input         auto_mem_xing_in_a_bits_mask,
+  input         auto_mem_xing_in_a_bits_corrupt,
+  input         auto_mem_xing_in_d_ready,
+  output        auto_mem_xing_in_d_valid,
+  output        auto_mem_xing_in_d_bits_size,
+  output [8:0]  auto_mem_xing_in_d_bits_source,
+  output [7:0]  auto_mem_xing_in_d_bits_data,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_sck,
+  input         auto_io_out_dq_0_i,
+  output        auto_io_out_dq_0_o,
+  output        auto_io_out_dq_0_oe,
+  input         auto_io_out_dq_1_i,
+  output        auto_io_out_dq_1_o,
+  output        auto_io_out_dq_1_oe,
+  input         auto_io_out_dq_2_i,
+  output        auto_io_out_dq_2_o,
+  output        auto_io_out_dq_2_oe,
+  input         auto_io_out_dq_3_i,
+  output        auto_io_out_dq_3_o,
+  output        auto_io_out_dq_3_oe,
+  output        auto_io_out_cs_0
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [8:0] buffer_1_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [8:0] buffer_1_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [8:0] buffer_1_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [29:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [8:0] buffer_1_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [8:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [29:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [8:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_1_clock; // @[Nodes.scala 24:25]
+  wire  monitor_1_reset; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_1_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_1_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_1_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_1_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_1_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_1_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  fifo_clock; // @[TLSPI.scala 69:20]
+  wire  fifo_reset; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_ctrl_fmt_proto; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ctrl_fmt_endian; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ctrl_fmt_iodir; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_fmt_len; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_ctrl_cs_mode; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_wm_tx; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_wm_rx; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_tx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_tx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_tx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_rx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_rx_bits; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_cnt; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_link_fmt_proto; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_fmt_endian; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_fmt_iodir; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_cs_set; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_cs_clear; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_lock; // @[TLSPI.scala 69:20]
+  wire  fifo_io_tx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_tx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_tx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_rx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_rx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_rx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ip_txwm; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ip_rxwm; // @[TLSPI.scala 69:20]
+  wire  mac_clock; // @[TLSPI.scala 70:19]
+  wire  mac_reset; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_sck; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_cs_0; // @[TLSPI.scala 70:19]
+  wire [11:0] mac_io_ctrl_sck_div; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_sck_pol; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_sck_pha; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_cssck; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_sckcs; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_intercs; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_interxfr; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_cs_id; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_cs_dflt_0; // @[TLSPI.scala 70:19]
+  wire [11:0] mac_io_ctrl_extradel_coarse; // @[TLSPI.scala 70:19]
+  wire [4:0] mac_io_ctrl_sampledel_sd; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_tx_ready; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_tx_valid; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_tx_bits; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_rx_valid; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_rx_bits; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_cnt; // @[TLSPI.scala 70:19]
+  wire [1:0] mac_io_link_fmt_proto; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_fmt_endian; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_fmt_iodir; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_cs_set; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_cs_clear; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_cs_hold; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_active; // @[TLSPI.scala 70:19]
+  wire  flash_clock; // @[TLSPIFlash.scala 57:21]
+  wire  flash_reset; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_en; // @[TLSPIFlash.scala 57:21]
+  wire [1:0] flash_io_ctrl_insn_cmd_proto; // @[TLSPIFlash.scala 57:21]
+  wire [7:0] flash_io_ctrl_insn_cmd_code; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_ctrl_insn_cmd_en; // @[TLSPIFlash.scala 57:21]
+  wire [1:0] flash_io_ctrl_insn_addr_proto; // @[TLSPIFlash.scala 57:21]
+  wire [2:0] flash_io_ctrl_insn_addr_len; // @[TLSPIFlash.scala 57:21]
+  wire [7:0] flash_io_ctrl_insn_pad_code; // @[TLSPIFlash.scala 57:21]
+  wire [3:0] flash_io_ctrl_insn_pad_cnt; // @[TLSPIFlash.scala 57:21]
+  wire [1:0] flash_io_ctrl_insn_data_proto; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_ctrl_fmt_endian; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_addr_ready; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_addr_valid; // @[TLSPIFlash.scala 57:21]
+  wire [31:0] flash_io_addr_bits_next; // @[TLSPIFlash.scala 57:21]
+  wire [31:0] flash_io_addr_bits_hold; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_data_ready; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_data_valid; // @[TLSPIFlash.scala 57:21]
+  wire [7:0] flash_io_data_bits; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_link_tx_ready; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_link_tx_valid; // @[TLSPIFlash.scala 57:21]
+  wire [7:0] flash_io_link_tx_bits; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_link_rx_valid; // @[TLSPIFlash.scala 57:21]
+  wire [7:0] flash_io_link_rx_bits; // @[TLSPIFlash.scala 57:21]
+  wire [7:0] flash_io_link_cnt; // @[TLSPIFlash.scala 57:21]
+  wire [1:0] flash_io_link_fmt_proto; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_link_fmt_endian; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_link_fmt_iodir; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_link_cs_clear; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_link_active; // @[TLSPIFlash.scala 57:21]
+  wire  flash_io_link_lock; // @[TLSPIFlash.scala 57:21]
+  wire  arb_clock; // @[TLSPIFlash.scala 58:19]
+  wire  arb_reset; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_0_tx_ready; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_0_tx_valid; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_inner_0_tx_bits; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_0_rx_valid; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_inner_0_rx_bits; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_inner_0_cnt; // @[TLSPIFlash.scala 58:19]
+  wire [1:0] arb_io_inner_0_fmt_proto; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_0_fmt_endian; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_0_fmt_iodir; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_0_cs_clear; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_0_active; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_0_lock; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_1_tx_ready; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_1_tx_valid; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_inner_1_tx_bits; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_1_rx_valid; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_inner_1_rx_bits; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_inner_1_cnt; // @[TLSPIFlash.scala 58:19]
+  wire [1:0] arb_io_inner_1_fmt_proto; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_1_fmt_endian; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_1_fmt_iodir; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_1_cs_set; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_1_cs_clear; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_inner_1_lock; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_tx_ready; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_tx_valid; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_outer_tx_bits; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_rx_valid; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_outer_rx_bits; // @[TLSPIFlash.scala 58:19]
+  wire [7:0] arb_io_outer_cnt; // @[TLSPIFlash.scala 58:19]
+  wire [1:0] arb_io_outer_fmt_proto; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_fmt_endian; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_fmt_iodir; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_cs_set; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_cs_clear; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_cs_hold; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_outer_active; // @[TLSPIFlash.scala 58:19]
+  wire  arb_io_sel; // @[TLSPIFlash.scala 58:19]
+  reg [1:0] ctrl_fmt_proto; // @[TLSPI.scala 68:17]
+  reg  ctrl_fmt_endian; // @[TLSPI.scala 68:17]
+  reg  ctrl_fmt_iodir; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_fmt_len; // @[TLSPI.scala 68:17]
+  reg [11:0] ctrl_sck_div; // @[TLSPI.scala 68:17]
+  reg  ctrl_sck_pol; // @[TLSPI.scala 68:17]
+  reg  ctrl_sck_pha; // @[TLSPI.scala 68:17]
+  reg  ctrl_cs_id; // @[TLSPI.scala 68:17]
+  reg  ctrl_cs_dflt_0; // @[TLSPI.scala 68:17]
+  reg [1:0] ctrl_cs_mode; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_cssck; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_sckcs; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_intercs; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_interxfr; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_wm_tx; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_wm_rx; // @[TLSPI.scala 68:17]
+  reg [11:0] ctrl_extradel_coarse; // @[TLSPI.scala 68:17]
+  reg [4:0] ctrl_sampledel_sd; // @[TLSPI.scala 68:17]
+  reg  ie_txwm; // @[TLSPI.scala 82:15]
+  reg  ie_rxwm; // @[TLSPI.scala 82:15]
+  wire  _T = ~fifo_io_tx_ready; // @[RegMapFIFO.scala 25:9]
+  wire  _T_1 = ~fifo_io_rx_valid; // @[RegMapFIFO.scala 46:21]
+  reg  a_size; // @[TLSPIFlash.scala 66:14]
+  reg [8:0] a_source; // @[TLSPIFlash.scala 66:14]
+  reg [29:0] a_address; // @[TLSPIFlash.scala 66:14]
+  wire  bundleIn_0_a_ready = flash_io_addr_ready; // @[Nodes.scala 1210:84 TLSPIFlash.scala 76:13]
+  wire  bundleIn_0_a_valid = buffer_1_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  _T_2 = bundleIn_0_a_ready & bundleIn_0_a_valid; // @[Decoupled.scala 50:35]
+  wire  bundleIn_0_a_bits_size = buffer_1_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [8:0] bundleIn_0_a_bits_source = buffer_1_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [29:0] bundleIn_0_a_bits_address = buffer_1_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  reg [1:0] insn_cmd_proto; // @[TLSPIFlash.scala 82:17]
+  reg [7:0] insn_cmd_code; // @[TLSPIFlash.scala 82:17]
+  reg  insn_cmd_en; // @[TLSPIFlash.scala 82:17]
+  reg [1:0] insn_addr_proto; // @[TLSPIFlash.scala 82:17]
+  reg [2:0] insn_addr_len; // @[TLSPIFlash.scala 82:17]
+  reg [7:0] insn_pad_code; // @[TLSPIFlash.scala 82:17]
+  reg [3:0] insn_pad_cnt; // @[TLSPIFlash.scala 82:17]
+  reg [1:0] insn_data_proto; // @[TLSPIFlash.scala 82:17]
+  reg  flash_en; // @[TLSPIFlash.scala 83:21]
+  wire [2:0] bundleIn_0_1_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_1_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_1_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_1_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3e0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_1_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_1_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_1_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_1_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_1_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[11:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_1_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_1_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [4:0] out_oindex = {in_bits_index[4],in_bits_index[3],in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [31:0] _out_frontSel_T = 32'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_1_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_wimask_1 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_5 = _out_frontSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_5 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1 = out_wivalid_1 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_9 = out_f_wivalid_1 ? bundleIn_0_1_a_bits_data[0] : ctrl_cs_dflt_0; // @[RegField.scala 74:{88,92} TLSPI.scala 68:17]
+  wire  out_rimask_2 = |out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_2 = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_2 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_2 = out_wivalid_2 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_3 = &out_frontMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_3 = out_wivalid_2 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T = {{8'd0}, ctrl_dla_cssck}; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend = {ctrl_dla_sckcs,_out_prepend_T}; // @[Cat.scala 31:58]
+  wire  out_frontSel_24 = _out_frontSel_T[24]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_4 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_24 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_4 = out_wivalid_4 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_12 = out_f_wivalid_4 ? bundleIn_0_1_a_bits_data[0] : flash_en; // @[RegField.scala 74:{88,92} TLSPIFlash.scala 83:21]
+  wire  out_frontSel_25 = _out_frontSel_T[25]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_5 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_25 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_5 = out_wivalid_5 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_13 = out_f_wivalid_5 ? bundleIn_0_1_a_bits_data[0] : insn_cmd_en; // @[RegField.scala 74:{88,92} TLSPIFlash.scala 82:17]
+  wire  out_wimask_6 = &out_frontMask[3:1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_5 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_7 = &out_frontMask[7:4]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_7 = out_wivalid_5 & out_wimask_7; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_8 = &out_frontMask[9:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_5 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_9 = &out_frontMask[11:10]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_5 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[13:12]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_5 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  wire [13:0] out_prepend_5 = {insn_data_proto,insn_addr_proto,insn_cmd_proto,insn_pad_cnt,insn_addr_len,insn_cmd_en}; // @[Cat.scala 31:58]
+  wire  out_f_wivalid_11 = out_wivalid_5 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_6 = {{2'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_12 = &out_frontMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_5 & out_wimask_12; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_7 = {insn_pad_code,insn_cmd_code,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_frontSel_14 = _out_frontSel_T[14]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_13 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_14 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_13 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_14 = &out_frontMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_20 = _out_frontSel_T[20]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_20 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask_14; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_208 = fifo_io_ip_txwm; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_16 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_8 = {fifo_io_ip_rxwm,_out_T_208}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_17 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_1 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_17 = out_wivalid_17 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_18 = out_wivalid_17 & out_wimask_16; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_9 = {ctrl_sck_pol,ctrl_sck_pha}; // @[Cat.scala 31:58]
+  wire  out_wimask_19 = &out_frontMask[1:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_19 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_19 = out_wivalid_19 & out_wimask_19; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_28 = _out_frontSel_T[28]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_20 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_28 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_20 = out_wivalid_20 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_21 = out_wivalid_20 & out_wimask_16; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_10 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  out_frontSel_21 = _out_frontSel_T[21]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_22 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_21 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_22 = out_wivalid_22 & out_wimask_14; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_18 = _out_frontSel_T[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_23 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_18 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_23 = out_wivalid_23 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_25 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_25 = out_wivalid_23 & out_womask_25; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_25 & bundleIn_0_1_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [31:0] out_prepend_12 = {_T,31'h0}; // @[Cat.scala 31:58]
+  wire  out_frontSel_16 = _out_frontSel_T[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_26 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_16 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_26 = out_wivalid_26 & out_wimask_19; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_27 = &out_frontMask[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_27 = out_wivalid_26 & out_wimask_27; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_28 = &out_frontMask[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_28 = out_wivalid_26 & out_wimask_28; // @[RegisterRouter.scala 83:24]
+  wire [3:0] out_prepend_14 = {ctrl_fmt_iodir,ctrl_fmt_endian,ctrl_fmt_proto}; // @[Cat.scala 31:58]
+  wire  out_wimask_29 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_29 = out_wivalid_26 & out_wimask_29; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_15 = {{12'd0}, out_prepend_14}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_15 = {ctrl_fmt_len,_out_prepend_T_15}; // @[Cat.scala 31:58]
+  wire  out_frontSel_11 = _out_frontSel_T[11]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_30 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_11 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_30 = out_wivalid_30 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_31 = out_wivalid_30 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_16 = {{8'd0}, ctrl_dla_intercs}; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_16 = {ctrl_dla_interxfr,_out_prepend_T_16}; // @[Cat.scala 31:58]
+  wire  out_frontSel_19 = _out_frontSel_T[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_32 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & in_bits_read & out_frontSel_19 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_T_385 = fifo_io_rx_bits; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_17 = {1'h0,_out_T_385}; // @[Cat.scala 31:58]
+  wire [30:0] _out_T_394 = {{22'd0}, out_prepend_17}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_18 = {_T_1,_out_T_394}; // @[Cat.scala 31:58]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_35 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_35 = out_wivalid_35 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_36 = &out_frontMask[4:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_15 = _out_frontSel_T[15]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_36 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_15 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_36 = out_wivalid_36 & out_wimask_36; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_166 = 5'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_169 = 5'h4 == out_oindex ? _out_T : 5'h3 == out_oindex | (5'h2 == out_oindex | _GEN_166); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_170 = 5'h5 == out_oindex ? _out_T : _GEN_169; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_171 = 5'h6 == out_oindex ? _out_T : _GEN_170; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_175 = 5'ha == out_oindex ? _out_T : 5'h9 == out_oindex | (5'h8 == out_oindex | (5'h7 == out_oindex |
+    _GEN_171)); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_176 = 5'hb == out_oindex ? _out_T : _GEN_175; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_179 = 5'he == out_oindex ? _out_T : 5'hd == out_oindex | (5'hc == out_oindex | _GEN_176); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_180 = 5'hf == out_oindex ? _out_T : _GEN_179; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_181 = 5'h10 == out_oindex ? _out_T : _GEN_180; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_183 = 5'h12 == out_oindex ? _out_T : 5'h11 == out_oindex | _GEN_181; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_184 = 5'h13 == out_oindex ? _out_T : _GEN_183; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_185 = 5'h14 == out_oindex ? _out_T : _GEN_184; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_186 = 5'h15 == out_oindex ? _out_T : _GEN_185; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_189 = 5'h18 == out_oindex ? _out_T : 5'h17 == out_oindex | (5'h16 == out_oindex | _GEN_186); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_190 = 5'h19 == out_oindex ? _out_T : _GEN_189; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_193 = 5'h1c == out_oindex ? _out_T : 5'h1b == out_oindex | (5'h1a == out_oindex | _GEN_190); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_194 = 5'h1d == out_oindex ? _out_T : _GEN_193; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_196 = 5'h1f == out_oindex | (5'h1e == out_oindex | _GEN_194); // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_0 = {{20'd0}, ctrl_sck_div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _out_out_bits_data_WIRE_1_1 = {{30'd0}, out_prepend_9}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_198 = 5'h1 == out_oindex ? _out_out_bits_data_WIRE_1_1 : _out_out_bits_data_WIRE_1_0; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_199 = 5'h2 == out_oindex ? 32'h0 : _GEN_198; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_200 = 5'h3 == out_oindex ? 32'h0 : _GEN_199; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{31'd0}, ctrl_cs_id}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_201 = 5'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_200; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_5 = {{31'd0}, ctrl_cs_dflt_0}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_202 = 5'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_201; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{30'd0}, ctrl_cs_mode}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_203 = 5'h6 == out_oindex ? _out_out_bits_data_WIRE_1_6 : _GEN_202; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_204 = 5'h7 == out_oindex ? 32'h0 : _GEN_203; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_205 = 5'h8 == out_oindex ? 32'h0 : _GEN_204; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_206 = 5'h9 == out_oindex ? 32'h0 : _GEN_205; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_10 = {{8'd0}, out_prepend}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_207 = 5'ha == out_oindex ? _out_out_bits_data_WIRE_1_10 : _GEN_206; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_11 = {{8'd0}, out_prepend_16}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_208 = 5'hb == out_oindex ? _out_out_bits_data_WIRE_1_11 : _GEN_207; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_209 = 5'hc == out_oindex ? 32'h0 : _GEN_208; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_210 = 5'hd == out_oindex ? 32'h0 : _GEN_209; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_14 = {{20'd0}, ctrl_extradel_coarse}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_211 = 5'he == out_oindex ? _out_out_bits_data_WIRE_1_14 : _GEN_210; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_15 = {{27'd0}, ctrl_sampledel_sd}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_212 = 5'hf == out_oindex ? _out_out_bits_data_WIRE_1_15 : _GEN_211; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_16 = {{12'd0}, out_prepend_15}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_213 = 5'h10 == out_oindex ? _out_out_bits_data_WIRE_1_16 : _GEN_212; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_214 = 5'h11 == out_oindex ? 32'h0 : _GEN_213; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_215 = 5'h12 == out_oindex ? out_prepend_12 : _GEN_214; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_216 = 5'h13 == out_oindex ? out_prepend_18 : _GEN_215; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_20 = {{28'd0}, ctrl_wm_tx}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_217 = 5'h14 == out_oindex ? _out_out_bits_data_WIRE_1_20 : _GEN_216; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_21 = {{28'd0}, ctrl_wm_rx}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_218 = 5'h15 == out_oindex ? _out_out_bits_data_WIRE_1_21 : _GEN_217; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_219 = 5'h16 == out_oindex ? 32'h0 : _GEN_218; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_220 = 5'h17 == out_oindex ? 32'h0 : _GEN_219; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_24 = {{31'd0}, flash_en}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_221 = 5'h18 == out_oindex ? _out_out_bits_data_WIRE_1_24 : _GEN_220; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_222 = 5'h19 == out_oindex ? out_prepend_7 : _GEN_221; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_223 = 5'h1a == out_oindex ? 32'h0 : _GEN_222; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_224 = 5'h1b == out_oindex ? 32'h0 : _GEN_223; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_28 = {{30'd0}, out_prepend_10}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_225 = 5'h1c == out_oindex ? _out_out_bits_data_WIRE_1_28 : _GEN_224; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_29 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_226 = 5'h1d == out_oindex ? _out_out_bits_data_WIRE_1_29 : _GEN_225; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_227 = 5'h1e == out_oindex ? 32'h0 : _GEN_226; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_228 = 5'h1f == out_oindex ? 32'h0 : _GEN_227; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  TLBuffer_19 buffer_1 ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_1_auto_in_a_ready),
+    .auto_in_a_valid(buffer_1_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_1_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_1_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_1_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_1_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_1_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_1_auto_in_a_bits_mask),
+    .auto_in_a_bits_corrupt(buffer_1_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_1_auto_in_d_ready),
+    .auto_in_d_valid(buffer_1_auto_in_d_valid),
+    .auto_in_d_bits_size(buffer_1_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_1_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_1_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_1_auto_out_a_ready),
+    .auto_out_a_valid(buffer_1_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_1_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_1_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_1_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_1_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_1_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_1_auto_out_a_bits_mask),
+    .auto_out_a_bits_corrupt(buffer_1_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_1_auto_out_d_ready),
+    .auto_out_d_valid(buffer_1_auto_out_d_valid),
+    .auto_out_d_bits_size(buffer_1_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_1_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_1_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_61 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  TLMonitor_62 monitor_1 ( // @[Nodes.scala 24:25]
+    .clock(monitor_1_clock),
+    .reset(monitor_1_reset),
+    .io_in_a_ready(monitor_1_io_in_a_ready),
+    .io_in_a_valid(monitor_1_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_1_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_1_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_1_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_1_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_1_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_1_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_1_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_1_io_in_d_ready),
+    .io_in_d_valid(monitor_1_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_1_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_1_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_1_io_in_d_bits_source)
+  );
+  SPIFIFO fifo ( // @[TLSPI.scala 69:20]
+    .clock(fifo_clock),
+    .reset(fifo_reset),
+    .io_ctrl_fmt_proto(fifo_io_ctrl_fmt_proto),
+    .io_ctrl_fmt_endian(fifo_io_ctrl_fmt_endian),
+    .io_ctrl_fmt_iodir(fifo_io_ctrl_fmt_iodir),
+    .io_ctrl_fmt_len(fifo_io_ctrl_fmt_len),
+    .io_ctrl_cs_mode(fifo_io_ctrl_cs_mode),
+    .io_ctrl_wm_tx(fifo_io_ctrl_wm_tx),
+    .io_ctrl_wm_rx(fifo_io_ctrl_wm_rx),
+    .io_link_tx_ready(fifo_io_link_tx_ready),
+    .io_link_tx_valid(fifo_io_link_tx_valid),
+    .io_link_tx_bits(fifo_io_link_tx_bits),
+    .io_link_rx_valid(fifo_io_link_rx_valid),
+    .io_link_rx_bits(fifo_io_link_rx_bits),
+    .io_link_cnt(fifo_io_link_cnt),
+    .io_link_fmt_proto(fifo_io_link_fmt_proto),
+    .io_link_fmt_endian(fifo_io_link_fmt_endian),
+    .io_link_fmt_iodir(fifo_io_link_fmt_iodir),
+    .io_link_cs_set(fifo_io_link_cs_set),
+    .io_link_cs_clear(fifo_io_link_cs_clear),
+    .io_link_lock(fifo_io_link_lock),
+    .io_tx_ready(fifo_io_tx_ready),
+    .io_tx_valid(fifo_io_tx_valid),
+    .io_tx_bits(fifo_io_tx_bits),
+    .io_rx_ready(fifo_io_rx_ready),
+    .io_rx_valid(fifo_io_rx_valid),
+    .io_rx_bits(fifo_io_rx_bits),
+    .io_ip_txwm(fifo_io_ip_txwm),
+    .io_ip_rxwm(fifo_io_ip_rxwm)
+  );
+  SPIMedia mac ( // @[TLSPI.scala 70:19]
+    .clock(mac_clock),
+    .reset(mac_reset),
+    .io_port_sck(mac_io_port_sck),
+    .io_port_dq_0_i(mac_io_port_dq_0_i),
+    .io_port_dq_0_o(mac_io_port_dq_0_o),
+    .io_port_dq_0_oe(mac_io_port_dq_0_oe),
+    .io_port_dq_1_i(mac_io_port_dq_1_i),
+    .io_port_dq_1_o(mac_io_port_dq_1_o),
+    .io_port_dq_1_oe(mac_io_port_dq_1_oe),
+    .io_port_dq_2_i(mac_io_port_dq_2_i),
+    .io_port_dq_2_o(mac_io_port_dq_2_o),
+    .io_port_dq_2_oe(mac_io_port_dq_2_oe),
+    .io_port_dq_3_i(mac_io_port_dq_3_i),
+    .io_port_dq_3_o(mac_io_port_dq_3_o),
+    .io_port_dq_3_oe(mac_io_port_dq_3_oe),
+    .io_port_cs_0(mac_io_port_cs_0),
+    .io_ctrl_sck_div(mac_io_ctrl_sck_div),
+    .io_ctrl_sck_pol(mac_io_ctrl_sck_pol),
+    .io_ctrl_sck_pha(mac_io_ctrl_sck_pha),
+    .io_ctrl_dla_cssck(mac_io_ctrl_dla_cssck),
+    .io_ctrl_dla_sckcs(mac_io_ctrl_dla_sckcs),
+    .io_ctrl_dla_intercs(mac_io_ctrl_dla_intercs),
+    .io_ctrl_dla_interxfr(mac_io_ctrl_dla_interxfr),
+    .io_ctrl_cs_id(mac_io_ctrl_cs_id),
+    .io_ctrl_cs_dflt_0(mac_io_ctrl_cs_dflt_0),
+    .io_ctrl_extradel_coarse(mac_io_ctrl_extradel_coarse),
+    .io_ctrl_sampledel_sd(mac_io_ctrl_sampledel_sd),
+    .io_link_tx_ready(mac_io_link_tx_ready),
+    .io_link_tx_valid(mac_io_link_tx_valid),
+    .io_link_tx_bits(mac_io_link_tx_bits),
+    .io_link_rx_valid(mac_io_link_rx_valid),
+    .io_link_rx_bits(mac_io_link_rx_bits),
+    .io_link_cnt(mac_io_link_cnt),
+    .io_link_fmt_proto(mac_io_link_fmt_proto),
+    .io_link_fmt_endian(mac_io_link_fmt_endian),
+    .io_link_fmt_iodir(mac_io_link_fmt_iodir),
+    .io_link_cs_set(mac_io_link_cs_set),
+    .io_link_cs_clear(mac_io_link_cs_clear),
+    .io_link_cs_hold(mac_io_link_cs_hold),
+    .io_link_active(mac_io_link_active)
+  );
+  SPIFlashMap flash ( // @[TLSPIFlash.scala 57:21]
+    .clock(flash_clock),
+    .reset(flash_reset),
+    .io_en(flash_io_en),
+    .io_ctrl_insn_cmd_proto(flash_io_ctrl_insn_cmd_proto),
+    .io_ctrl_insn_cmd_code(flash_io_ctrl_insn_cmd_code),
+    .io_ctrl_insn_cmd_en(flash_io_ctrl_insn_cmd_en),
+    .io_ctrl_insn_addr_proto(flash_io_ctrl_insn_addr_proto),
+    .io_ctrl_insn_addr_len(flash_io_ctrl_insn_addr_len),
+    .io_ctrl_insn_pad_code(flash_io_ctrl_insn_pad_code),
+    .io_ctrl_insn_pad_cnt(flash_io_ctrl_insn_pad_cnt),
+    .io_ctrl_insn_data_proto(flash_io_ctrl_insn_data_proto),
+    .io_ctrl_fmt_endian(flash_io_ctrl_fmt_endian),
+    .io_addr_ready(flash_io_addr_ready),
+    .io_addr_valid(flash_io_addr_valid),
+    .io_addr_bits_next(flash_io_addr_bits_next),
+    .io_addr_bits_hold(flash_io_addr_bits_hold),
+    .io_data_ready(flash_io_data_ready),
+    .io_data_valid(flash_io_data_valid),
+    .io_data_bits(flash_io_data_bits),
+    .io_link_tx_ready(flash_io_link_tx_ready),
+    .io_link_tx_valid(flash_io_link_tx_valid),
+    .io_link_tx_bits(flash_io_link_tx_bits),
+    .io_link_rx_valid(flash_io_link_rx_valid),
+    .io_link_rx_bits(flash_io_link_rx_bits),
+    .io_link_cnt(flash_io_link_cnt),
+    .io_link_fmt_proto(flash_io_link_fmt_proto),
+    .io_link_fmt_endian(flash_io_link_fmt_endian),
+    .io_link_fmt_iodir(flash_io_link_fmt_iodir),
+    .io_link_cs_clear(flash_io_link_cs_clear),
+    .io_link_active(flash_io_link_active),
+    .io_link_lock(flash_io_link_lock)
+  );
+  SPIArbiter arb ( // @[TLSPIFlash.scala 58:19]
+    .clock(arb_clock),
+    .reset(arb_reset),
+    .io_inner_0_tx_ready(arb_io_inner_0_tx_ready),
+    .io_inner_0_tx_valid(arb_io_inner_0_tx_valid),
+    .io_inner_0_tx_bits(arb_io_inner_0_tx_bits),
+    .io_inner_0_rx_valid(arb_io_inner_0_rx_valid),
+    .io_inner_0_rx_bits(arb_io_inner_0_rx_bits),
+    .io_inner_0_cnt(arb_io_inner_0_cnt),
+    .io_inner_0_fmt_proto(arb_io_inner_0_fmt_proto),
+    .io_inner_0_fmt_endian(arb_io_inner_0_fmt_endian),
+    .io_inner_0_fmt_iodir(arb_io_inner_0_fmt_iodir),
+    .io_inner_0_cs_clear(arb_io_inner_0_cs_clear),
+    .io_inner_0_active(arb_io_inner_0_active),
+    .io_inner_0_lock(arb_io_inner_0_lock),
+    .io_inner_1_tx_ready(arb_io_inner_1_tx_ready),
+    .io_inner_1_tx_valid(arb_io_inner_1_tx_valid),
+    .io_inner_1_tx_bits(arb_io_inner_1_tx_bits),
+    .io_inner_1_rx_valid(arb_io_inner_1_rx_valid),
+    .io_inner_1_rx_bits(arb_io_inner_1_rx_bits),
+    .io_inner_1_cnt(arb_io_inner_1_cnt),
+    .io_inner_1_fmt_proto(arb_io_inner_1_fmt_proto),
+    .io_inner_1_fmt_endian(arb_io_inner_1_fmt_endian),
+    .io_inner_1_fmt_iodir(arb_io_inner_1_fmt_iodir),
+    .io_inner_1_cs_set(arb_io_inner_1_cs_set),
+    .io_inner_1_cs_clear(arb_io_inner_1_cs_clear),
+    .io_inner_1_lock(arb_io_inner_1_lock),
+    .io_outer_tx_ready(arb_io_outer_tx_ready),
+    .io_outer_tx_valid(arb_io_outer_tx_valid),
+    .io_outer_tx_bits(arb_io_outer_tx_bits),
+    .io_outer_rx_valid(arb_io_outer_rx_valid),
+    .io_outer_rx_bits(arb_io_outer_rx_bits),
+    .io_outer_cnt(arb_io_outer_cnt),
+    .io_outer_fmt_proto(arb_io_outer_fmt_proto),
+    .io_outer_fmt_endian(arb_io_outer_fmt_endian),
+    .io_outer_fmt_iodir(arb_io_outer_fmt_iodir),
+    .io_outer_cs_set(arb_io_outer_cs_set),
+    .io_outer_cs_clear(arb_io_outer_cs_clear),
+    .io_outer_cs_hold(arb_io_outer_cs_hold),
+    .io_outer_active(arb_io_outer_active),
+    .io_sel(arb_io_sel)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_in_a_ready = buffer_1_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_valid = buffer_1_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_bits_size = buffer_1_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_bits_source = buffer_1_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_bits_data = buffer_1_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_sck = mac_io_port_sck; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_0_o = mac_io_port_dq_0_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_0_oe = mac_io_port_dq_0_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_1_o = mac_io_port_dq_1_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_1_oe = mac_io_port_dq_1_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_2_o = mac_io_port_dq_2_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_2_oe = mac_io_port_dq_2_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_3_o = mac_io_port_dq_3_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_3_oe = mac_io_port_dq_3_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_cs_0 = mac_io_port_cs_0; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_196 ? _GEN_228 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign buffer_1_auto_in_a_valid = auto_mem_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_opcode = auto_mem_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_param = auto_mem_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_size = auto_mem_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_source = auto_mem_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_address = auto_mem_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_mask = auto_mem_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_corrupt = auto_mem_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_d_ready = auto_mem_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_out_a_ready = flash_io_addr_ready; // @[Nodes.scala 1210:84 TLSPIFlash.scala 76:13]
+  assign buffer_1_auto_out_d_valid = flash_io_data_valid; // @[Nodes.scala 1210:84 TLSPIFlash.scala 79:13]
+  assign buffer_1_auto_out_d_bits_size = a_size; // @[Edges.scala 771:17 774:15]
+  assign buffer_1_auto_out_d_bits_source = a_source; // @[Edges.scala 771:17 775:15]
+  assign buffer_1_auto_out_d_bits_data = flash_io_data_bits; // @[Edges.scala 771:17 778:15]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = fifo_io_ip_txwm & ie_txwm | fifo_io_ip_rxwm & ie_rxwm; // @[TLSPI.scala 84:47]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = flash_io_addr_ready; // @[Nodes.scala 1210:84 TLSPIFlash.scala 76:13]
+  assign monitor_io_in_a_valid = buffer_1_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_1_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_1_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_1_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_1_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_1_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_1_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_1_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = flash_io_data_valid; // @[Nodes.scala 1210:84 TLSPIFlash.scala 79:13]
+  assign monitor_io_in_d_bits_size = a_size; // @[Edges.scala 771:17 774:15]
+  assign monitor_io_in_d_bits_source = a_source; // @[Edges.scala 771:17 775:15]
+  assign monitor_1_clock = clock;
+  assign monitor_1_reset = reset;
+  assign monitor_1_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_1_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fifo_clock = clock;
+  assign fifo_reset = reset;
+  assign fifo_io_ctrl_fmt_proto = ctrl_fmt_proto; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_endian = ctrl_fmt_endian; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_iodir = ctrl_fmt_iodir; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_len = ctrl_fmt_len; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_cs_mode = ctrl_cs_mode; // @[TLSPI.scala 74:19]
+  assign fifo_io_ctrl_wm_tx = ctrl_wm_tx; // @[TLSPI.scala 75:19]
+  assign fifo_io_ctrl_wm_rx = ctrl_wm_rx; // @[TLSPI.scala 75:19]
+  assign fifo_io_link_tx_ready = arb_io_inner_1_tx_ready; // @[TLSPIFlash.scala 139:21]
+  assign fifo_io_link_rx_valid = arb_io_inner_1_rx_valid; // @[TLSPIFlash.scala 139:21]
+  assign fifo_io_link_rx_bits = arb_io_inner_1_rx_bits; // @[TLSPIFlash.scala 139:21]
+  assign fifo_io_tx_valid = out_f_wivalid_23 & ~quash; // @[RegMapFIFO.scala 19:30]
+  assign fifo_io_tx_bits = bundleIn_0_1_a_bits_data[7:0]; // @[RegisterRouter.scala 83:24]
+  assign fifo_io_rx_ready = out_rivalid_32 & out_rimask_2; // @[RegisterRouter.scala 83:24]
+  assign mac_clock = clock;
+  assign mac_reset = reset;
+  assign mac_io_port_dq_0_i = auto_io_out_dq_0_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_1_i = auto_io_out_dq_1_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_2_i = auto_io_out_dq_2_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_3_i = auto_io_out_dq_3_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_ctrl_sck_div = ctrl_sck_div; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_sck_pol = ctrl_sck_pol; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_sck_pha = ctrl_sck_pha; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_dla_cssck = ctrl_dla_cssck; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_sckcs = ctrl_dla_sckcs; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_intercs = ctrl_dla_intercs; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_interxfr = ctrl_dla_interxfr; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_cs_id = ctrl_cs_id; // @[TLSPI.scala 80:18]
+  assign mac_io_ctrl_cs_dflt_0 = ctrl_cs_dflt_0; // @[TLSPI.scala 80:18]
+  assign mac_io_ctrl_extradel_coarse = ctrl_extradel_coarse; // @[TLSPI.scala 77:24]
+  assign mac_io_ctrl_sampledel_sd = ctrl_sampledel_sd; // @[TLSPI.scala 78:25]
+  assign mac_io_link_tx_valid = arb_io_outer_tx_valid; // @[TLSPIFlash.scala 140:17]
+  assign mac_io_link_tx_bits = arb_io_outer_tx_bits; // @[TLSPIFlash.scala 140:17]
+  assign mac_io_link_cnt = arb_io_outer_cnt; // @[TLSPIFlash.scala 140:17]
+  assign mac_io_link_fmt_proto = arb_io_outer_fmt_proto; // @[TLSPIFlash.scala 140:17]
+  assign mac_io_link_fmt_endian = arb_io_outer_fmt_endian; // @[TLSPIFlash.scala 140:17]
+  assign mac_io_link_fmt_iodir = arb_io_outer_fmt_iodir; // @[TLSPIFlash.scala 140:17]
+  assign mac_io_link_cs_set = arb_io_outer_cs_set; // @[TLSPIFlash.scala 140:17]
+  assign mac_io_link_cs_clear = arb_io_outer_cs_clear; // @[TLSPIFlash.scala 140:17]
+  assign mac_io_link_cs_hold = arb_io_outer_cs_hold; // @[TLSPIFlash.scala 140:17]
+  assign flash_clock = clock;
+  assign flash_reset = reset;
+  assign flash_io_en = flash_en; // @[TLSPIFlash.scala 87:15]
+  assign flash_io_ctrl_insn_cmd_proto = insn_cmd_proto; // @[TLSPIFlash.scala 85:22]
+  assign flash_io_ctrl_insn_cmd_code = insn_cmd_code; // @[TLSPIFlash.scala 85:22]
+  assign flash_io_ctrl_insn_cmd_en = insn_cmd_en; // @[TLSPIFlash.scala 85:22]
+  assign flash_io_ctrl_insn_addr_proto = insn_addr_proto; // @[TLSPIFlash.scala 85:22]
+  assign flash_io_ctrl_insn_addr_len = insn_addr_len; // @[TLSPIFlash.scala 85:22]
+  assign flash_io_ctrl_insn_pad_code = insn_pad_code; // @[TLSPIFlash.scala 85:22]
+  assign flash_io_ctrl_insn_pad_cnt = insn_pad_cnt; // @[TLSPIFlash.scala 85:22]
+  assign flash_io_ctrl_insn_data_proto = insn_data_proto; // @[TLSPIFlash.scala 85:22]
+  assign flash_io_ctrl_fmt_endian = ctrl_fmt_endian; // @[TLSPIFlash.scala 86:21]
+  assign flash_io_addr_valid = buffer_1_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign flash_io_addr_bits_next = {{3'd0}, bundleIn_0_a_bits_address[28:0]}; // @[TLSPIFlash.scala 73:27]
+  assign flash_io_addr_bits_hold = {{3'd0}, a_address[28:0]}; // @[TLSPIFlash.scala 74:27]
+  assign flash_io_data_ready = buffer_1_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign flash_io_link_tx_ready = arb_io_inner_0_tx_ready; // @[TLSPIFlash.scala 138:21]
+  assign flash_io_link_rx_valid = arb_io_inner_0_rx_valid; // @[TLSPIFlash.scala 138:21]
+  assign flash_io_link_rx_bits = arb_io_inner_0_rx_bits; // @[TLSPIFlash.scala 138:21]
+  assign flash_io_link_active = arb_io_inner_0_active; // @[TLSPIFlash.scala 138:21]
+  assign arb_clock = clock;
+  assign arb_reset = reset;
+  assign arb_io_inner_0_tx_valid = flash_io_link_tx_valid; // @[TLSPIFlash.scala 138:21]
+  assign arb_io_inner_0_tx_bits = flash_io_link_tx_bits; // @[TLSPIFlash.scala 138:21]
+  assign arb_io_inner_0_cnt = flash_io_link_cnt; // @[TLSPIFlash.scala 138:21]
+  assign arb_io_inner_0_fmt_proto = flash_io_link_fmt_proto; // @[TLSPIFlash.scala 138:21]
+  assign arb_io_inner_0_fmt_endian = flash_io_link_fmt_endian; // @[TLSPIFlash.scala 138:21]
+  assign arb_io_inner_0_fmt_iodir = flash_io_link_fmt_iodir; // @[TLSPIFlash.scala 138:21]
+  assign arb_io_inner_0_cs_clear = flash_io_link_cs_clear; // @[TLSPIFlash.scala 138:21]
+  assign arb_io_inner_0_lock = flash_io_link_lock; // @[TLSPIFlash.scala 138:21]
+  assign arb_io_inner_1_tx_valid = fifo_io_link_tx_valid; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_inner_1_tx_bits = fifo_io_link_tx_bits; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_inner_1_cnt = fifo_io_link_cnt; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_inner_1_fmt_proto = fifo_io_link_fmt_proto; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_inner_1_fmt_endian = fifo_io_link_fmt_endian; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_inner_1_fmt_iodir = fifo_io_link_fmt_iodir; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_inner_1_cs_set = fifo_io_link_cs_set; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_inner_1_cs_clear = fifo_io_link_cs_clear; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_inner_1_lock = fifo_io_link_lock; // @[TLSPIFlash.scala 139:21]
+  assign arb_io_outer_tx_ready = mac_io_link_tx_ready; // @[TLSPIFlash.scala 140:17]
+  assign arb_io_outer_rx_valid = mac_io_link_rx_valid; // @[TLSPIFlash.scala 140:17]
+  assign arb_io_outer_rx_bits = mac_io_link_rx_bits; // @[TLSPIFlash.scala 140:17]
+  assign arb_io_outer_active = mac_io_link_active; // @[TLSPIFlash.scala 140:17]
+  assign arb_io_sel = ~flash_en; // @[TLSPIFlash.scala 88:17]
+  always @(posedge clock) begin
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_proto <= 2'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_26) begin // @[RegField.scala 74:88]
+      ctrl_fmt_proto <= bundleIn_0_1_a_bits_data[1:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_endian <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_27) begin // @[RegField.scala 74:88]
+      ctrl_fmt_endian <= bundleIn_0_1_a_bits_data[2]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_iodir <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_28) begin // @[RegField.scala 74:88]
+      ctrl_fmt_iodir <= bundleIn_0_1_a_bits_data[3]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_len <= 4'h8; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_29) begin // @[RegField.scala 74:88]
+      ctrl_fmt_len <= bundleIn_0_1_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_div <= 12'h3; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid) begin // @[RegField.scala 74:88]
+      ctrl_sck_div <= bundleIn_0_1_a_bits_data[11:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_pol <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_18) begin // @[RegField.scala 74:88]
+      ctrl_sck_pol <= bundleIn_0_1_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_pha <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_17) begin // @[RegField.scala 74:88]
+      ctrl_sck_pha <= bundleIn_0_1_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_cs_id <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_35) begin // @[RegField.scala 74:88]
+      ctrl_cs_id <= bundleIn_0_1_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    ctrl_cs_dflt_0 <= reset | _GEN_9; // @[TLSPI.scala 68:{17,17}]
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_cs_mode <= 2'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_19) begin // @[RegField.scala 74:88]
+      ctrl_cs_mode <= bundleIn_0_1_a_bits_data[1:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_cssck <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_2) begin // @[RegField.scala 74:88]
+      ctrl_dla_cssck <= bundleIn_0_1_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_sckcs <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_3) begin // @[RegField.scala 74:88]
+      ctrl_dla_sckcs <= bundleIn_0_1_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_intercs <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_30) begin // @[RegField.scala 74:88]
+      ctrl_dla_intercs <= bundleIn_0_1_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_interxfr <= 8'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_31) begin // @[RegField.scala 74:88]
+      ctrl_dla_interxfr <= bundleIn_0_1_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_wm_tx <= 4'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      ctrl_wm_tx <= bundleIn_0_1_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_wm_rx <= 4'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_22) begin // @[RegField.scala 74:88]
+      ctrl_wm_rx <= bundleIn_0_1_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_extradel_coarse <= 12'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      ctrl_extradel_coarse <= bundleIn_0_1_a_bits_data[11:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sampledel_sd <= 5'h3; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_36) begin // @[RegField.scala 74:88]
+      ctrl_sampledel_sd <= bundleIn_0_1_a_bits_data[4:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 82:15]
+      ie_txwm <= 1'h0; // @[TLSPI.scala 82:15]
+    end else if (out_f_wivalid_20) begin // @[RegField.scala 74:88]
+      ie_txwm <= bundleIn_0_1_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 82:15]
+      ie_rxwm <= 1'h0; // @[TLSPI.scala 82:15]
+    end else if (out_f_wivalid_21) begin // @[RegField.scala 74:88]
+      ie_rxwm <= bundleIn_0_1_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (_T_2) begin // @[TLSPIFlash.scala 69:21]
+      a_size <= bundleIn_0_a_bits_size; // @[TLSPIFlash.scala 70:7]
+    end
+    if (_T_2) begin // @[TLSPIFlash.scala 69:21]
+      a_source <= bundleIn_0_a_bits_source; // @[TLSPIFlash.scala 70:7]
+    end
+    if (_T_2) begin // @[TLSPIFlash.scala 69:21]
+      a_address <= bundleIn_0_a_bits_address; // @[TLSPIFlash.scala 70:7]
+    end
+    if (reset) begin // @[TLSPIFlash.scala 82:17]
+      insn_cmd_proto <= 2'h0; // @[TLSPIFlash.scala 82:17]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      insn_cmd_proto <= bundleIn_0_1_a_bits_data[9:8]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIFlash.scala 82:17]
+      insn_cmd_code <= 8'h3; // @[TLSPIFlash.scala 82:17]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      insn_cmd_code <= bundleIn_0_1_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    insn_cmd_en <= reset | _GEN_13; // @[TLSPIFlash.scala 82:{17,17}]
+    if (reset) begin // @[TLSPIFlash.scala 82:17]
+      insn_addr_proto <= 2'h0; // @[TLSPIFlash.scala 82:17]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      insn_addr_proto <= bundleIn_0_1_a_bits_data[11:10]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIFlash.scala 82:17]
+      insn_addr_len <= 3'h3; // @[TLSPIFlash.scala 82:17]
+    end else if (out_f_wivalid_6) begin // @[RegField.scala 74:88]
+      insn_addr_len <= bundleIn_0_1_a_bits_data[3:1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIFlash.scala 82:17]
+      insn_pad_code <= 8'h0; // @[TLSPIFlash.scala 82:17]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      insn_pad_code <= bundleIn_0_1_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIFlash.scala 82:17]
+      insn_pad_cnt <= 4'h0; // @[TLSPIFlash.scala 82:17]
+    end else if (out_f_wivalid_7) begin // @[RegField.scala 74:88]
+      insn_pad_cnt <= bundleIn_0_1_a_bits_data[7:4]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIFlash.scala 82:17]
+      insn_data_proto <= 2'h0; // @[TLSPIFlash.scala 82:17]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      insn_data_proto <= bundleIn_0_1_a_bits_data[13:12]; // @[RegField.scala 74:92]
+    end
+    flash_en <= reset | _GEN_12; // @[TLSPIFlash.scala 83:{21,21}]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ctrl_fmt_proto = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  ctrl_fmt_endian = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ctrl_fmt_iodir = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  ctrl_fmt_len = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  ctrl_sck_div = _RAND_4[11:0];
+  _RAND_5 = {1{`RANDOM}};
+  ctrl_sck_pol = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ctrl_sck_pha = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ctrl_cs_id = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  ctrl_cs_dflt_0 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  ctrl_cs_mode = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  ctrl_dla_cssck = _RAND_10[7:0];
+  _RAND_11 = {1{`RANDOM}};
+  ctrl_dla_sckcs = _RAND_11[7:0];
+  _RAND_12 = {1{`RANDOM}};
+  ctrl_dla_intercs = _RAND_12[7:0];
+  _RAND_13 = {1{`RANDOM}};
+  ctrl_dla_interxfr = _RAND_13[7:0];
+  _RAND_14 = {1{`RANDOM}};
+  ctrl_wm_tx = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  ctrl_wm_rx = _RAND_15[3:0];
+  _RAND_16 = {1{`RANDOM}};
+  ctrl_extradel_coarse = _RAND_16[11:0];
+  _RAND_17 = {1{`RANDOM}};
+  ctrl_sampledel_sd = _RAND_17[4:0];
+  _RAND_18 = {1{`RANDOM}};
+  ie_txwm = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  ie_rxwm = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  a_size = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  a_source = _RAND_21[8:0];
+  _RAND_22 = {1{`RANDOM}};
+  a_address = _RAND_22[29:0];
+  _RAND_23 = {1{`RANDOM}};
+  insn_cmd_proto = _RAND_23[1:0];
+  _RAND_24 = {1{`RANDOM}};
+  insn_cmd_code = _RAND_24[7:0];
+  _RAND_25 = {1{`RANDOM}};
+  insn_cmd_en = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  insn_addr_proto = _RAND_26[1:0];
+  _RAND_27 = {1{`RANDOM}};
+  insn_addr_len = _RAND_27[2:0];
+  _RAND_28 = {1{`RANDOM}};
+  insn_pad_code = _RAND_28[7:0];
+  _RAND_29 = {1{`RANDOM}};
+  insn_pad_cnt = _RAND_29[3:0];
+  _RAND_30 = {1{`RANDOM}};
+  insn_data_proto = _RAND_30[1:0];
+  _RAND_31 = {1{`RANDOM}};
+  flash_en = _RAND_31[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_6(
+  output        auto_qspi_0_int_xing_out_sync_0,
+  output        auto_qspi_0_mem_xing_in_a_ready,
+  input         auto_qspi_0_mem_xing_in_a_valid,
+  input  [2:0]  auto_qspi_0_mem_xing_in_a_bits_opcode,
+  input  [2:0]  auto_qspi_0_mem_xing_in_a_bits_param,
+  input         auto_qspi_0_mem_xing_in_a_bits_size,
+  input  [8:0]  auto_qspi_0_mem_xing_in_a_bits_source,
+  input  [29:0] auto_qspi_0_mem_xing_in_a_bits_address,
+  input         auto_qspi_0_mem_xing_in_a_bits_mask,
+  input         auto_qspi_0_mem_xing_in_a_bits_corrupt,
+  input         auto_qspi_0_mem_xing_in_d_ready,
+  output        auto_qspi_0_mem_xing_in_d_valid,
+  output        auto_qspi_0_mem_xing_in_d_bits_size,
+  output [8:0]  auto_qspi_0_mem_xing_in_d_bits_source,
+  output [7:0]  auto_qspi_0_mem_xing_in_d_bits_data,
+  output        auto_qspi_0_control_xing_in_a_ready,
+  input         auto_qspi_0_control_xing_in_a_valid,
+  input  [2:0]  auto_qspi_0_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_qspi_0_control_xing_in_a_bits_param,
+  input  [1:0]  auto_qspi_0_control_xing_in_a_bits_size,
+  input  [6:0]  auto_qspi_0_control_xing_in_a_bits_source,
+  input  [28:0] auto_qspi_0_control_xing_in_a_bits_address,
+  input  [3:0]  auto_qspi_0_control_xing_in_a_bits_mask,
+  input  [31:0] auto_qspi_0_control_xing_in_a_bits_data,
+  input         auto_qspi_0_control_xing_in_a_bits_corrupt,
+  input         auto_qspi_0_control_xing_in_d_ready,
+  output        auto_qspi_0_control_xing_in_d_valid,
+  output [2:0]  auto_qspi_0_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_qspi_0_control_xing_in_d_bits_size,
+  output [6:0]  auto_qspi_0_control_xing_in_d_bits_source,
+  output [31:0] auto_qspi_0_control_xing_in_d_bits_data,
+  output        auto_qspi_0_io_out_sck,
+  input         auto_qspi_0_io_out_dq_0_i,
+  output        auto_qspi_0_io_out_dq_0_o,
+  output        auto_qspi_0_io_out_dq_0_oe,
+  input         auto_qspi_0_io_out_dq_1_i,
+  output        auto_qspi_0_io_out_dq_1_o,
+  output        auto_qspi_0_io_out_dq_1_oe,
+  input         auto_qspi_0_io_out_dq_2_i,
+  output        auto_qspi_0_io_out_dq_2_o,
+  output        auto_qspi_0_io_out_dq_2_oe,
+  input         auto_qspi_0_io_out_dq_3_i,
+  output        auto_qspi_0_io_out_dq_3_o,
+  output        auto_qspi_0_io_out_dq_3_oe,
+  output        auto_qspi_0_io_out_cs_0,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  qspi_0_clock; // @[SPI.scala 93:51]
+  wire  qspi_0_reset; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_int_xing_out_sync_0; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_mem_xing_in_a_ready; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_mem_xing_in_a_valid; // @[SPI.scala 93:51]
+  wire [2:0] qspi_0_auto_mem_xing_in_a_bits_opcode; // @[SPI.scala 93:51]
+  wire [2:0] qspi_0_auto_mem_xing_in_a_bits_param; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_mem_xing_in_a_bits_size; // @[SPI.scala 93:51]
+  wire [8:0] qspi_0_auto_mem_xing_in_a_bits_source; // @[SPI.scala 93:51]
+  wire [29:0] qspi_0_auto_mem_xing_in_a_bits_address; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_mem_xing_in_a_bits_mask; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_mem_xing_in_a_bits_corrupt; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_mem_xing_in_d_ready; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_mem_xing_in_d_valid; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_mem_xing_in_d_bits_size; // @[SPI.scala 93:51]
+  wire [8:0] qspi_0_auto_mem_xing_in_d_bits_source; // @[SPI.scala 93:51]
+  wire [7:0] qspi_0_auto_mem_xing_in_d_bits_data; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_control_xing_in_a_ready; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_control_xing_in_a_valid; // @[SPI.scala 93:51]
+  wire [2:0] qspi_0_auto_control_xing_in_a_bits_opcode; // @[SPI.scala 93:51]
+  wire [2:0] qspi_0_auto_control_xing_in_a_bits_param; // @[SPI.scala 93:51]
+  wire [1:0] qspi_0_auto_control_xing_in_a_bits_size; // @[SPI.scala 93:51]
+  wire [6:0] qspi_0_auto_control_xing_in_a_bits_source; // @[SPI.scala 93:51]
+  wire [28:0] qspi_0_auto_control_xing_in_a_bits_address; // @[SPI.scala 93:51]
+  wire [3:0] qspi_0_auto_control_xing_in_a_bits_mask; // @[SPI.scala 93:51]
+  wire [31:0] qspi_0_auto_control_xing_in_a_bits_data; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_control_xing_in_a_bits_corrupt; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_control_xing_in_d_ready; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_control_xing_in_d_valid; // @[SPI.scala 93:51]
+  wire [2:0] qspi_0_auto_control_xing_in_d_bits_opcode; // @[SPI.scala 93:51]
+  wire [1:0] qspi_0_auto_control_xing_in_d_bits_size; // @[SPI.scala 93:51]
+  wire [6:0] qspi_0_auto_control_xing_in_d_bits_source; // @[SPI.scala 93:51]
+  wire [31:0] qspi_0_auto_control_xing_in_d_bits_data; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_sck; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_0_i; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_0_o; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_0_oe; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_1_i; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_1_o; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_1_oe; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_2_i; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_2_o; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_2_oe; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_3_i; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_3_o; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_dq_3_oe; // @[SPI.scala 93:51]
+  wire  qspi_0_auto_io_out_cs_0; // @[SPI.scala 93:51]
+  TLSPIFlash qspi_0 ( // @[SPI.scala 93:51]
+    .clock(qspi_0_clock),
+    .reset(qspi_0_reset),
+    .auto_int_xing_out_sync_0(qspi_0_auto_int_xing_out_sync_0),
+    .auto_mem_xing_in_a_ready(qspi_0_auto_mem_xing_in_a_ready),
+    .auto_mem_xing_in_a_valid(qspi_0_auto_mem_xing_in_a_valid),
+    .auto_mem_xing_in_a_bits_opcode(qspi_0_auto_mem_xing_in_a_bits_opcode),
+    .auto_mem_xing_in_a_bits_param(qspi_0_auto_mem_xing_in_a_bits_param),
+    .auto_mem_xing_in_a_bits_size(qspi_0_auto_mem_xing_in_a_bits_size),
+    .auto_mem_xing_in_a_bits_source(qspi_0_auto_mem_xing_in_a_bits_source),
+    .auto_mem_xing_in_a_bits_address(qspi_0_auto_mem_xing_in_a_bits_address),
+    .auto_mem_xing_in_a_bits_mask(qspi_0_auto_mem_xing_in_a_bits_mask),
+    .auto_mem_xing_in_a_bits_corrupt(qspi_0_auto_mem_xing_in_a_bits_corrupt),
+    .auto_mem_xing_in_d_ready(qspi_0_auto_mem_xing_in_d_ready),
+    .auto_mem_xing_in_d_valid(qspi_0_auto_mem_xing_in_d_valid),
+    .auto_mem_xing_in_d_bits_size(qspi_0_auto_mem_xing_in_d_bits_size),
+    .auto_mem_xing_in_d_bits_source(qspi_0_auto_mem_xing_in_d_bits_source),
+    .auto_mem_xing_in_d_bits_data(qspi_0_auto_mem_xing_in_d_bits_data),
+    .auto_control_xing_in_a_ready(qspi_0_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(qspi_0_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(qspi_0_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(qspi_0_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(qspi_0_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(qspi_0_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(qspi_0_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(qspi_0_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(qspi_0_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(qspi_0_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(qspi_0_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(qspi_0_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(qspi_0_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(qspi_0_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(qspi_0_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(qspi_0_auto_control_xing_in_d_bits_data),
+    .auto_io_out_sck(qspi_0_auto_io_out_sck),
+    .auto_io_out_dq_0_i(qspi_0_auto_io_out_dq_0_i),
+    .auto_io_out_dq_0_o(qspi_0_auto_io_out_dq_0_o),
+    .auto_io_out_dq_0_oe(qspi_0_auto_io_out_dq_0_oe),
+    .auto_io_out_dq_1_i(qspi_0_auto_io_out_dq_1_i),
+    .auto_io_out_dq_1_o(qspi_0_auto_io_out_dq_1_o),
+    .auto_io_out_dq_1_oe(qspi_0_auto_io_out_dq_1_oe),
+    .auto_io_out_dq_2_i(qspi_0_auto_io_out_dq_2_i),
+    .auto_io_out_dq_2_o(qspi_0_auto_io_out_dq_2_o),
+    .auto_io_out_dq_2_oe(qspi_0_auto_io_out_dq_2_oe),
+    .auto_io_out_dq_3_i(qspi_0_auto_io_out_dq_3_i),
+    .auto_io_out_dq_3_o(qspi_0_auto_io_out_dq_3_o),
+    .auto_io_out_dq_3_oe(qspi_0_auto_io_out_dq_3_oe),
+    .auto_io_out_cs_0(qspi_0_auto_io_out_cs_0)
+  );
+  assign auto_qspi_0_int_xing_out_sync_0 = qspi_0_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_mem_xing_in_a_ready = qspi_0_auto_mem_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_mem_xing_in_d_valid = qspi_0_auto_mem_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_mem_xing_in_d_bits_size = qspi_0_auto_mem_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_mem_xing_in_d_bits_source = qspi_0_auto_mem_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_mem_xing_in_d_bits_data = qspi_0_auto_mem_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_control_xing_in_a_ready = qspi_0_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_control_xing_in_d_valid = qspi_0_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_control_xing_in_d_bits_opcode = qspi_0_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_control_xing_in_d_bits_size = qspi_0_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_control_xing_in_d_bits_source = qspi_0_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_control_xing_in_d_bits_data = qspi_0_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_qspi_0_io_out_sck = qspi_0_auto_io_out_sck; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_dq_0_o = qspi_0_auto_io_out_dq_0_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_dq_0_oe = qspi_0_auto_io_out_dq_0_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_dq_1_o = qspi_0_auto_io_out_dq_1_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_dq_1_oe = qspi_0_auto_io_out_dq_1_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_dq_2_o = qspi_0_auto_io_out_dq_2_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_dq_2_oe = qspi_0_auto_io_out_dq_2_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_dq_3_o = qspi_0_auto_io_out_dq_3_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_dq_3_oe = qspi_0_auto_io_out_dq_3_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_0_io_out_cs_0 = qspi_0_auto_io_out_cs_0; // @[LazyModule.scala 311:12]
+  assign qspi_0_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign qspi_0_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_a_valid = auto_qspi_0_mem_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_a_bits_opcode = auto_qspi_0_mem_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_a_bits_param = auto_qspi_0_mem_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_a_bits_size = auto_qspi_0_mem_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_a_bits_source = auto_qspi_0_mem_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_a_bits_address = auto_qspi_0_mem_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_a_bits_mask = auto_qspi_0_mem_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_a_bits_corrupt = auto_qspi_0_mem_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_mem_xing_in_d_ready = auto_qspi_0_mem_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_valid = auto_qspi_0_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_bits_opcode = auto_qspi_0_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_bits_param = auto_qspi_0_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_bits_size = auto_qspi_0_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_bits_source = auto_qspi_0_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_bits_address = auto_qspi_0_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_bits_mask = auto_qspi_0_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_bits_data = auto_qspi_0_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_a_bits_corrupt = auto_qspi_0_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_control_xing_in_d_ready = auto_qspi_0_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign qspi_0_auto_io_out_dq_0_i = auto_qspi_0_io_out_dq_0_i; // @[LazyModule.scala 311:12]
+  assign qspi_0_auto_io_out_dq_1_i = auto_qspi_0_io_out_dq_1_i; // @[LazyModule.scala 311:12]
+  assign qspi_0_auto_io_out_dq_2_i = auto_qspi_0_io_out_dq_2_i; // @[LazyModule.scala 311:12]
+  assign qspi_0_auto_io_out_dq_3_i = auto_qspi_0_io_out_dq_3_i; // @[LazyModule.scala 311:12]
+endmodule
+module TLBuffer_21(
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input         auto_in_a_bits_size,
+  input  [10:0] auto_in_a_bits_source,
+  input  [30:0] auto_in_a_bits_address,
+  input         auto_in_a_bits_mask,
+  input  [7:0]  auto_in_a_bits_data,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [2:0]  auto_in_d_bits_opcode,
+  output        auto_in_d_bits_size,
+  output [10:0] auto_in_d_bits_source,
+  output [7:0]  auto_in_d_bits_data,
+  input         auto_out_a_ready,
+  output        auto_out_a_valid,
+  output [2:0]  auto_out_a_bits_opcode,
+  output [2:0]  auto_out_a_bits_param,
+  output        auto_out_a_bits_size,
+  output [10:0] auto_out_a_bits_source,
+  output [30:0] auto_out_a_bits_address,
+  output        auto_out_a_bits_mask,
+  output [7:0]  auto_out_a_bits_data,
+  output        auto_out_a_bits_corrupt,
+  output        auto_out_d_ready,
+  input         auto_out_d_valid,
+  input  [2:0]  auto_out_d_bits_opcode,
+  input         auto_out_d_bits_size,
+  input  [10:0] auto_out_d_bits_source,
+  input  [7:0]  auto_out_d_bits_data
+);
+  assign auto_in_a_ready = auto_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_valid = auto_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_opcode = auto_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_source = auto_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_d_bits_data = auto_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_data = auto_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_63(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input         io_in_a_bits_size,
+  input  [10:0] io_in_a_bits_source,
+  input  [30:0] io_in_a_bits_address,
+  input         io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input         io_in_d_bits_size,
+  input  [10:0] io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [2047:0] _RAND_10;
+  reg [8191:0] _RAND_11;
+  reg [4095:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [2047:0] _RAND_16;
+  reg [4095:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [30:0] _T_33 = io_in_a_bits_address ^ 31'h40000000; // @[Parameters.scala 137:31]
+  wire [31:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [31:0] _T_36 = $signed(_T_34) & -32'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 32'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_163 = ~io_in_a_bits_size; // @[Parameters.scala 91:48]
+  wire  _T_170 = _T_163 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_181 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_193 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_232 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_272 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_302 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_310 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_340 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_348 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_378 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_390 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_394 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_414 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_442 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg  size; // @[Monitor.scala 386:22]
+  reg [10:0] source; // @[Monitor.scala 387:22]
+  reg [30:0] address; // @[Monitor.scala 388:22]
+  wire  _T_536 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_537 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_541 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_545 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_549 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_553 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg  size_1; // @[Monitor.scala 537:22]
+  reg [10:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_560 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_561 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_569 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_573 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [2047:0] inflight; // @[Monitor.scala 611:27]
+  reg [8191:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [4095:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [12:0] _GEN_71 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [13:0] _a_opcode_lookup_T = {{1'd0}, _GEN_71}; // @[Monitor.scala 634:69]
+  wire [8191:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [8191:0] _GEN_72 = {{8176'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [8191:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_72; // @[Monitor.scala 634:97]
+  wire [8191:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[8191:1]}; // @[Monitor.scala 634:152]
+  wire [11:0] _a_size_lookup_T = {io_in_d_bits_source, 1'h0}; // @[Monitor.scala 638:65]
+  wire [4095:0] _a_size_lookup_T_1 = inflight_sizes >> _a_size_lookup_T; // @[Monitor.scala 638:40]
+  wire [3:0] _a_size_lookup_T_5 = 4'h4 - 4'h1; // @[Monitor.scala 609:57]
+  wire [4095:0] _GEN_74 = {{4092'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [4095:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_74; // @[Monitor.scala 638:91]
+  wire [4095:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[4095:1]}; // @[Monitor.scala 638:144]
+  wire  _T_587 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [2047:0] _a_set_wo_ready_T = 2048'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_590 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [1:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [1:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 2'h1; // @[Monitor.scala 655:59]
+  wire [12:0] _GEN_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [13:0] _a_opcodes_set_T = {{1'd0}, _GEN_76}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [16386:0] _GEN_1 = {{16383'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [16386:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [11:0] _a_sizes_set_T = {io_in_a_bits_source, 1'h0}; // @[Monitor.scala 657:77]
+  wire [1:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 2'h0; // @[Monitor.scala 652:72 655:28]
+  wire [4096:0] _GEN_2 = {{4095'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [4096:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [2047:0] _T_592 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_594 = ~_T_592[0]; // @[Monitor.scala 658:17]
+  wire [2047:0] a_set = a_first_done & a_first_1 ? _a_set_wo_ready_T : 2048'h0; // @[Monitor.scala 652:72 653:28]
+  wire [16386:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 16387'h0; // @[Monitor.scala 652:72 656:28]
+  wire [4096:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 4097'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_598 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_600 = ~_T_394; // @[Monitor.scala 671:74]
+  wire  _T_601 = io_in_d_valid & d_first_1 & ~_T_394; // @[Monitor.scala 671:71]
+  wire [2047:0] _d_clr_wo_ready_T = 2048'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [16398:0] _GEN_3 = {{16383'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [16398:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [4098:0] _GEN_4 = {{4095'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [4098:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [2047:0] d_clr = d_first_done & d_first_1 & _T_600 ? _d_clr_wo_ready_T : 2048'h0; // @[Monitor.scala 675:91 676:21]
+  wire [16398:0] _GEN_23 = d_first_done & d_first_1 & _T_600 ? _d_opcodes_clr_T_5 : 16399'h0; // @[Monitor.scala 675:91 677:21]
+  wire [4098:0] _GEN_24 = d_first_done & d_first_1 & _T_600 ? _d_sizes_clr_T_5 : 4099'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_587 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2047:0] _T_611 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_613 = _T_611[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_618 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_619 = io_in_d_bits_opcode == _GEN_32 | _T_618; // @[Monitor.scala 685:77]
+  wire  _T_623 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_630 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_631 = io_in_d_bits_opcode == _GEN_48 | _T_630; // @[Monitor.scala 689:72]
+  wire [1:0] a_size_lookup = _a_size_lookup_T_7[1:0];
+  wire [1:0] _GEN_78 = {{1'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_635 = _GEN_78 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_645 = _T_598 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_600; // @[Monitor.scala 694:116]
+  wire  _T_647 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [2047:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [2047:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [2047:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [8191:0] a_opcodes_set = _GEN_19[8191:0];
+  wire [8191:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [8191:0] d_opcodes_clr = _GEN_23[8191:0];
+  wire [8191:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [8191:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [4095:0] a_sizes_set = _GEN_20[4095:0];
+  wire [4095:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [4095:0] d_sizes_clr = _GEN_24[4095:0];
+  wire [4095:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [4095:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_sizes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_656 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [2047:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [4095:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [4095:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [4095:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_74; // @[Monitor.scala 747:93]
+  wire [4095:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[4095:1]}; // @[Monitor.scala 747:146]
+  wire  _T_682 = io_in_d_valid & d_first_2 & _T_394; // @[Monitor.scala 779:71]
+  wire [2047:0] d_clr_1 = d_first_done & d_first_2 & _T_394 ? _d_clr_wo_ready_T : 2048'h0; // @[Monitor.scala 783:90 784:21]
+  wire [4098:0] _GEN_69 = d_first_done & d_first_2 & _T_394 ? _d_sizes_clr_T_5 : 4099'h0; // @[Monitor.scala 783:90 786:21]
+  wire [2047:0] _T_690 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [1:0] c_size_lookup = _c_size_lookup_T_7[1:0];
+  wire  _T_700 = _GEN_78 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [2047:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [2047:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [4095:0] d_sizes_clr_1 = _GEN_69[4095:0];
+  wire [4095:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [4095:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_720 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 2048'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 8192'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 4096'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 2048'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 4096'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_170 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_170) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_181 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_181) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_170 & (io_in_a_valid & _T_193 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_193 & ~reset & ~_T_170) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_181 & (io_in_a_valid & _T_193 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_193 & ~reset & ~_T_181) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_193 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_193 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_232 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_232 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_181 & (io_in_a_valid & _T_232 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_232 & ~reset & ~_T_181) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_272 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_272 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_302 & (io_in_a_valid & _T_272 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_272 & ~reset & ~_T_302) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_272 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_272 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_310 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_310 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_340 & (io_in_a_valid & _T_310 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_310 & ~reset & ~_T_340) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_310 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_310 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_348 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_348 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_378 & (io_in_a_valid & _T_348 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_348 & ~reset & ~_T_378) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_73 & (io_in_a_valid & _T_348 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_348 & ~reset & _T_73) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_348 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_348 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_390 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_390) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_414 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_414 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_442 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_442 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_537 & (_T_536 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_536 & ~reset & ~_T_537) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_541 & (_T_536 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_536 & ~reset & ~_T_541) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_545 & (_T_536 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_536 & ~reset & ~_T_545) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_549 & (_T_536 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_536 & ~reset & ~_T_549) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_553 & (_T_536 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_536 & ~reset & ~_T_553) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_561 & (_T_560 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & _T_2 & ~_T_561) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_569 & (_T_560 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & _T_2 & ~_T_569) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_573 & (_T_560 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_560 & _T_2 & ~_T_573) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_594 & (_T_590 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_590 & ~reset & ~_T_594) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_613 & (_T_601 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & _T_2 & ~_T_613) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_619 & (_T_601 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & same_cycle_resp & _T_2 & ~_T_619) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_623 & (_T_601 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & same_cycle_resp & _T_2 & ~_T_623) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_631 & (_T_601 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & ~same_cycle_resp & _T_2 & ~_T_631) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_635 & (_T_601 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_601 & ~same_cycle_resp & _T_2 & ~_T_635) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_647 & (_T_645 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_645 & _T_2 & ~_T_647) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_656 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_656) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_690[0] & (_T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_682 & _T_2 & ~_T_690[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_700 & (_T_682 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_682 & _T_2 & ~_T_700) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_720 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_720) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[10:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[30:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[10:0];
+  _RAND_10 = {64{`RANDOM}};
+  inflight = _RAND_10[2047:0];
+  _RAND_11 = {256{`RANDOM}};
+  inflight_opcodes = _RAND_11[8191:0];
+  _RAND_12 = {128{`RANDOM}};
+  inflight_sizes = _RAND_12[4095:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {64{`RANDOM}};
+  inflight_1 = _RAND_16[2047:0];
+  _RAND_17 = {128{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[4095:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_64(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10034000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SPIRAMMap(
+  input         clock,
+  input         reset,
+  input         io_en,
+  input  [1:0]  io_ctrl_insn_cmd_proto,
+  input  [7:0]  io_ctrl_insn_cmd_code,
+  input         io_ctrl_insn_cmd_en,
+  input  [7:0]  io_ctrl_insn_wcmd_code,
+  input  [1:0]  io_ctrl_insn_addr_proto,
+  input  [2:0]  io_ctrl_insn_addr_len,
+  input  [7:0]  io_ctrl_insn_pad_code,
+  input  [3:0]  io_ctrl_insn_pad_cnt,
+  input  [1:0]  io_ctrl_insn_data_proto,
+  input  [3:0]  io_ctrl_insn_pgsz,
+  input  [11:0] io_ctrl_insn_max_cen_cyc,
+  input         io_ctrl_fmt_endian,
+  output        io_addr_ready,
+  input         io_addr_valid,
+  input  [31:0] io_addr_bits_next,
+  input  [31:0] io_addr_bits_hold,
+  input  [2:0]  io_opcode_next,
+  input  [2:0]  io_opcode_hold,
+  input  [7:0]  io_wdata,
+  input         io_data_ready,
+  output        io_data_valid,
+  output [7:0]  io_data_bits,
+  input         io_link_tx_ready,
+  output        io_link_tx_valid,
+  output [7:0]  io_link_tx_bits,
+  input         io_link_rx_valid,
+  input  [7:0]  io_link_rx_bits,
+  output [7:0]  io_link_cnt,
+  output [1:0]  io_link_fmt_proto,
+  output        io_link_fmt_endian,
+  output        io_link_fmt_iodir,
+  output        io_link_cs_clear,
+  input         io_link_active,
+  output        io_link_lock
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] addr = io_addr_bits_hold + 32'h1; // @[SPIRAM.scala 76:32]
+  wire  _GEN_0 = io_ctrl_insn_pgsz == 4'hc ? ~(|addr[11:0]) : 1'h1; // @[SPIRAM.scala 105:31 106:13 108:13]
+  wire  _GEN_1 = io_ctrl_insn_pgsz == 4'hb ? ~(|addr[10:0]) : _GEN_0; // @[SPIRAM.scala 103:31 104:13]
+  wire  _GEN_2 = io_ctrl_insn_pgsz == 4'ha ? ~(|addr[9:0]) : _GEN_1; // @[SPIRAM.scala 101:31 102:13]
+  wire  _GEN_3 = io_ctrl_insn_pgsz == 4'h9 ? ~(|addr[8:0]) : _GEN_2; // @[SPIRAM.scala 100:13 99:30]
+  wire  _GEN_4 = io_ctrl_insn_pgsz == 4'h8 ? ~(|addr[7:0]) : _GEN_3; // @[SPIRAM.scala 97:30 98:13]
+  wire  _GEN_5 = io_ctrl_insn_pgsz == 4'h7 ? ~(|addr[6:0]) : _GEN_4; // @[SPIRAM.scala 95:30 96:13]
+  wire  _GEN_6 = io_ctrl_insn_pgsz == 4'h6 ? ~(|addr[5:0]) : _GEN_5; // @[SPIRAM.scala 93:30 94:13]
+  wire  _GEN_7 = io_ctrl_insn_pgsz == 4'h5 ? ~(|addr[4:0]) : _GEN_6; // @[SPIRAM.scala 91:30 92:13]
+  wire  _GEN_8 = io_ctrl_insn_pgsz == 4'h4 ? ~(|addr[3:0]) : _GEN_7; // @[SPIRAM.scala 89:30 90:13]
+  wire  _GEN_9 = io_ctrl_insn_pgsz == 4'h3 ? ~(|addr[2:0]) : _GEN_8; // @[SPIRAM.scala 87:30 88:13]
+  wire  _GEN_10 = io_ctrl_insn_pgsz == 4'h2 ? ~(|addr[1:0]) : _GEN_9; // @[SPIRAM.scala 85:30 86:13]
+  wire  _GEN_11 = io_ctrl_insn_pgsz == 4'h1 ? ~(|addr[0]) : _GEN_10; // @[SPIRAM.scala 83:30 84:13]
+  wire  newpage = io_ctrl_insn_pgsz == 4'h0 | _GEN_11; // @[SPIRAM.scala 81:23 82:13]
+  wire  _io_link_cnt_T = 2'h0 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  _io_link_cnt_T_1 = 2'h1 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  _io_link_cnt_T_2 = 2'h2 == io_link_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire [3:0] _io_link_cnt_T_3 = _io_link_cnt_T ? 4'h8 : 4'h0; // @[Mux.scala 27:73]
+  wire [2:0] _io_link_cnt_T_4 = _io_link_cnt_T_1 ? 3'h4 : 3'h0; // @[Mux.scala 27:73]
+  wire [1:0] _io_link_cnt_T_5 = _io_link_cnt_T_2 ? 2'h2 : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_116 = {{1'd0}, _io_link_cnt_T_4}; // @[Mux.scala 27:73]
+  wire [3:0] _io_link_cnt_T_6 = _io_link_cnt_T_3 | _GEN_116; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_117 = {{2'd0}, _io_link_cnt_T_5}; // @[Mux.scala 27:73]
+  wire [3:0] _io_link_cnt_T_7 = _io_link_cnt_T_6 | _GEN_117; // @[Mux.scala 27:73]
+  reg [3:0] cnt; // @[SPIRAM.scala 130:16]
+  wire  cnt_cmp_0 = cnt == 4'h0; // @[SPIRAM.scala 132:48]
+  wire  cnt_cmp_1 = cnt == 4'h1; // @[SPIRAM.scala 132:48]
+  wire  cnt_cmp_2 = cnt == 4'h2; // @[SPIRAM.scala 132:48]
+  wire  cnt_cmp_3 = cnt == 4'h3; // @[SPIRAM.scala 132:48]
+  wire  cnt_cmp_4 = cnt == 4'h4; // @[SPIRAM.scala 132:48]
+  wire  cnt_last = cnt_cmp_1 & io_link_tx_ready; // @[SPIRAM.scala 134:29]
+  wire  cnt_done = cnt_last | cnt_cmp_0; // @[SPIRAM.scala 135:27]
+  wire  _T_13 = io_link_tx_ready & io_link_tx_valid; // @[Decoupled.scala 50:35]
+  wire [3:0] _cnt_T_1 = cnt - 4'h1; // @[SPIRAM.scala 139:18]
+  wire [3:0] _GEN_13 = _T_13 ? _cnt_T_1 : cnt; // @[SPIRAM.scala 138:28 139:11 130:16]
+  reg [2:0] state; // @[SPIRAM.scala 156:18]
+  wire  _GEN_94 = 3'h1 == state ? 1'h0 : 3'h2 == state; // @[SPIRAM.scala 158:18]
+  wire  cnt_en = 3'h0 == state ? 1'h0 : _GEN_94; // @[SPIRAM.scala 158:18]
+  wire  _GEN_14 = cnt_en ? ~cnt_cmp_0 : 1'h1; // @[SPIRAM.scala 136:17 112:20 137:22]
+  wire [3:0] _GEN_15 = cnt_en ? _GEN_13 : cnt; // @[SPIRAM.scala 130:16 136:17]
+  reg [15:0] cen_cnt; // @[SPIRAM.scala 144:24]
+  wire [15:0] _cen_cnt_T_1 = cen_cnt + 16'h1; // @[SPIRAM.scala 146:24]
+  reg  no_merge; // @[SPIRAM.scala 152:25]
+  wire  merge = ~no_merge & io_link_active & ~newpage & io_addr_bits_next == addr & io_opcode_next == io_opcode_hold; // @[SPIRAM.scala 153:87]
+  wire [2:0] _state_T = io_ctrl_insn_cmd_en ? 3'h1 : 3'h2; // @[SPIRAM.scala 167:25]
+  wire [2:0] _GEN_17 = merge ? 3'h4 : _state_T; // @[SPIRAM.scala 164:24 165:19 167:19]
+  wire  _GEN_18 = merge ? 1'h0 : 1'h1; // @[SPIRAM.scala 121:20 164:24 168:30]
+  wire [15:0] _GEN_118 = {{4'd0}, io_ctrl_insn_max_cen_cyc}; // @[SPIRAM.scala 174:25]
+  wire  _T_15 = cen_cnt >= _GEN_118; // @[SPIRAM.scala 174:25]
+  wire  _GEN_20 = cen_cnt >= _GEN_118 | no_merge; // @[SPIRAM.scala 174:46 176:22 152:25]
+  wire  _GEN_22 = io_addr_valid ? _GEN_18 : _T_15; // @[SPIRAM.scala 163:30]
+  wire  _GEN_28 = io_en & _GEN_22; // @[SPIRAM.scala 121:20 161:20]
+  wire  _GEN_30 = io_en & io_addr_valid; // @[SPIRAM.scala 161:20 181:22]
+  wire  _T_17 = io_opcode_hold == 3'h0; // @[SPIRAM.scala 190:28]
+  wire [7:0] _GEN_31 = io_opcode_hold == 3'h0 ? io_ctrl_insn_wcmd_code : io_ctrl_insn_cmd_code; // @[SPIRAM.scala 190:56 191:25 193:25]
+  wire [7:0] _io_link_tx_bits_T_4 = cnt_cmp_1 ? io_addr_bits_hold[7:0] : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_5 = cnt_cmp_2 ? io_addr_bits_hold[15:8] : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_6 = cnt_cmp_3 ? io_addr_bits_hold[23:16] : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_7 = cnt_cmp_4 ? io_addr_bits_hold[31:24] : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_8 = _io_link_tx_bits_T_4 | _io_link_tx_bits_T_5; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_9 = _io_link_tx_bits_T_8 | _io_link_tx_bits_T_6; // @[Mux.scala 27:73]
+  wire [7:0] _io_link_tx_bits_T_10 = _io_link_tx_bits_T_9 | _io_link_tx_bits_T_7; // @[Mux.scala 27:73]
+  wire [2:0] _GEN_34 = cnt_done ? 3'h3 : state; // @[SPIRAM.scala 210:23 211:15 156:18]
+  wire [3:0] _GEN_35 = _T_17 ? 4'h0 : io_ctrl_insn_pad_cnt; // @[SPIRAM.scala 216:56 217:21 219:21]
+  wire [2:0] _GEN_36 = io_link_tx_ready ? 3'h4 : state; // @[SPIRAM.scala 224:31 225:15 156:18]
+  wire  _GEN_38 = _T_17 | _GEN_14; // @[SPIRAM.scala 231:56 233:26]
+  wire [2:0] _GEN_40 = io_link_tx_ready ? 3'h5 : state; // @[SPIRAM.scala 239:31 240:15 156:18]
+  wire  _GEN_42 = _T_17 | io_link_rx_valid; // @[SPIRAM.scala 245:56 247:23 250:23]
+  wire  _T_26 = io_data_ready & io_data_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] _GEN_46 = _T_26 ? 3'h0 : state; // @[SPIRAM.scala 259:27 260:15 156:18]
+  wire [2:0] _GEN_47 = io_data_ready ? 3'h0 : state; // @[SPIRAM.scala 272:30 273:17 156:18]
+  wire [2:0] _GEN_50 = _T_17 ? 3'h0 : _GEN_47; // @[SPIRAM.scala 265:56 268:15]
+  wire [7:0] _GEN_52 = 3'h6 == state ? 8'h0 : io_link_rx_bits; // @[SPIRAM.scala 128:16 158:18]
+  wire [2:0] _GEN_53 = 3'h6 == state ? _GEN_50 : state; // @[SPIRAM.scala 156:18 158:18]
+  wire  _GEN_54 = 3'h5 == state ? 1'h0 : _GEN_14; // @[SPIRAM.scala 158:18]
+  wire  _GEN_55 = 3'h5 == state ? _GEN_42 : 3'h6 == state; // @[SPIRAM.scala 158:18]
+  wire [7:0] _GEN_56 = 3'h5 == state ? io_link_rx_bits : _GEN_52; // @[SPIRAM.scala 158:18]
+  wire  _GEN_58 = 3'h5 == state ? _GEN_20 : no_merge; // @[SPIRAM.scala 158:18 152:25]
+  wire [2:0] _GEN_59 = 3'h5 == state ? _GEN_46 : _GEN_53; // @[SPIRAM.scala 158:18]
+  wire [1:0] _GEN_60 = 3'h4 == state ? io_ctrl_insn_data_proto : io_ctrl_insn_addr_proto; // @[SPIRAM.scala 158:18 113:21 230:25]
+  wire  _GEN_61 = 3'h4 == state ? _T_17 : 1'h1; // @[SPIRAM.scala 158:18 114:21]
+  wire  _GEN_62 = 3'h4 == state ? _GEN_38 : _GEN_54; // @[SPIRAM.scala 158:18]
+  wire [2:0] _GEN_64 = 3'h4 == state ? _GEN_40 : _GEN_59; // @[SPIRAM.scala 158:18]
+  wire  _GEN_65 = 3'h4 == state ? 1'h0 : _GEN_55; // @[SPIRAM.scala 127:17 158:18]
+  wire [7:0] _GEN_66 = 3'h4 == state ? io_link_rx_bits : _GEN_56; // @[SPIRAM.scala 128:16 158:18]
+  wire  _GEN_67 = 3'h4 == state ? 1'h0 : 3'h5 == state & _T_15; // @[SPIRAM.scala 158:18 121:20]
+  wire  _GEN_68 = 3'h4 == state ? no_merge : _GEN_58; // @[SPIRAM.scala 158:18 152:25]
+  wire [3:0] _GEN_69 = 3'h3 == state ? _GEN_35 : _io_link_cnt_T_7; // @[SPIRAM.scala 116:15 158:18]
+  wire [7:0] _GEN_70 = 3'h3 == state ? io_ctrl_insn_pad_code : io_wdata; // @[SPIRAM.scala 158:18 222:23]
+  wire [2:0] _GEN_71 = 3'h3 == state ? _GEN_36 : _GEN_64; // @[SPIRAM.scala 158:18]
+  wire [1:0] _GEN_72 = 3'h3 == state ? io_ctrl_insn_addr_proto : _GEN_60; // @[SPIRAM.scala 158:18 113:21]
+  wire  _GEN_74 = 3'h3 == state ? _GEN_14 : _GEN_62; // @[SPIRAM.scala 158:18]
+  wire  _GEN_75 = 3'h3 == state ? 1'h0 : _GEN_65; // @[SPIRAM.scala 127:17 158:18]
+  wire [7:0] _GEN_76 = 3'h3 == state ? io_link_rx_bits : _GEN_66; // @[SPIRAM.scala 128:16 158:18]
+  wire  _GEN_77 = 3'h3 == state ? 1'h0 : _GEN_67; // @[SPIRAM.scala 158:18 121:20]
+  wire  _GEN_78 = 3'h3 == state ? no_merge : _GEN_68; // @[SPIRAM.scala 158:18 152:25]
+  wire [7:0] _GEN_79 = 3'h2 == state ? _io_link_tx_bits_T_10 : _GEN_70; // @[SPIRAM.scala 158:18 202:23]
+  wire [3:0] _GEN_82 = 3'h2 == state ? _io_link_cnt_T_7 : _GEN_69; // @[SPIRAM.scala 116:15 158:18]
+  wire [1:0] _GEN_83 = 3'h2 == state ? io_ctrl_insn_addr_proto : _GEN_72; // @[SPIRAM.scala 158:18 113:21]
+  wire  _GEN_85 = 3'h2 == state ? _GEN_14 : _GEN_74; // @[SPIRAM.scala 158:18]
+  wire  _GEN_86 = 3'h2 == state ? 1'h0 : _GEN_75; // @[SPIRAM.scala 127:17 158:18]
+  wire [7:0] _GEN_87 = 3'h2 == state ? io_link_rx_bits : _GEN_76; // @[SPIRAM.scala 128:16 158:18]
+  wire  _GEN_88 = 3'h2 == state ? 1'h0 : _GEN_77; // @[SPIRAM.scala 158:18 121:20]
+  wire [1:0] _GEN_90 = 3'h1 == state ? io_ctrl_insn_cmd_proto : _GEN_83; // @[SPIRAM.scala 158:18 189:25]
+  wire [3:0] _GEN_95 = 3'h1 == state ? _io_link_cnt_T_7 : _GEN_82; // @[SPIRAM.scala 116:15 158:18]
+  wire  _GEN_97 = 3'h1 == state ? _GEN_14 : _GEN_85; // @[SPIRAM.scala 158:18]
+  wire  _GEN_98 = 3'h1 == state ? 1'h0 : _GEN_86; // @[SPIRAM.scala 127:17 158:18]
+  wire [7:0] _GEN_99 = 3'h1 == state ? io_link_rx_bits : _GEN_87; // @[SPIRAM.scala 128:16 158:18]
+  wire  _GEN_100 = 3'h1 == state ? 1'h0 : _GEN_88; // @[SPIRAM.scala 158:18 121:20]
+  wire [3:0] _GEN_112 = 3'h0 == state ? _io_link_cnt_T_7 : _GEN_95; // @[SPIRAM.scala 116:15 158:18]
+  assign io_addr_ready = 3'h0 == state; // @[SPIRAM.scala 158:18]
+  assign io_data_valid = 3'h0 == state ? 1'h0 : _GEN_98; // @[SPIRAM.scala 127:17 158:18]
+  assign io_data_bits = 3'h0 == state ? io_link_rx_bits : _GEN_99; // @[SPIRAM.scala 128:16 158:18]
+  assign io_link_tx_valid = 3'h0 == state ? 1'h0 : _GEN_97; // @[SPIRAM.scala 158:18 160:24]
+  assign io_link_tx_bits = 3'h1 == state ? _GEN_31 : _GEN_79; // @[SPIRAM.scala 158:18]
+  assign io_link_cnt = {{4'd0}, _GEN_112};
+  assign io_link_fmt_proto = 3'h0 == state ? io_ctrl_insn_addr_proto : _GEN_90; // @[SPIRAM.scala 158:18 113:21]
+  assign io_link_fmt_endian = io_ctrl_fmt_endian; // @[SPIRAM.scala 115:22]
+  assign io_link_fmt_iodir = 3'h0 == state | (3'h1 == state | (3'h2 == state | (3'h3 == state | _GEN_61))); // @[SPIRAM.scala 158:18 114:21]
+  assign io_link_cs_clear = 3'h0 == state ? _GEN_28 : _GEN_100; // @[SPIRAM.scala 158:18]
+  assign io_link_lock = 3'h0 == state ? _GEN_30 : 1'h1; // @[SPIRAM.scala 123:16 158:18]
+  always @(posedge clock) begin
+    if (3'h0 == state) begin // @[SPIRAM.scala 158:18]
+      cnt <= _GEN_15;
+    end else if (3'h1 == state) begin // @[SPIRAM.scala 158:18]
+      if (io_link_tx_ready) begin // @[SPIRAM.scala 195:31]
+        cnt <= {{1'd0}, io_ctrl_insn_addr_len}; // @[SPIRAM.scala 197:13]
+      end else begin
+        cnt <= _GEN_15;
+      end
+    end else begin
+      cnt <= _GEN_15;
+    end
+    if (reset) begin // @[SPIRAM.scala 156:18]
+      state <= 3'h0; // @[SPIRAM.scala 156:18]
+    end else if (3'h0 == state) begin // @[SPIRAM.scala 158:18]
+      if (io_en) begin // @[SPIRAM.scala 161:20]
+        if (io_addr_valid) begin // @[SPIRAM.scala 163:30]
+          state <= _GEN_17;
+        end
+      end else if (io_addr_valid) begin // @[SPIRAM.scala 182:30]
+        state <= 3'h6; // @[SPIRAM.scala 183:17]
+      end
+    end else if (3'h1 == state) begin // @[SPIRAM.scala 158:18]
+      if (io_link_tx_ready) begin // @[SPIRAM.scala 195:31]
+        state <= 3'h2; // @[SPIRAM.scala 196:15]
+      end
+    end else if (3'h2 == state) begin // @[SPIRAM.scala 158:18]
+      state <= _GEN_34;
+    end else begin
+      state <= _GEN_71;
+    end
+    if (reset) begin // @[SPIRAM.scala 144:24]
+      cen_cnt <= 16'h0; // @[SPIRAM.scala 144:24]
+    end else if (io_link_active) begin // @[SPIRAM.scala 145:25]
+      cen_cnt <= _cen_cnt_T_1; // @[SPIRAM.scala 146:13]
+    end else begin
+      cen_cnt <= 16'h0; // @[SPIRAM.scala 148:13]
+    end
+    if (reset) begin // @[SPIRAM.scala 152:25]
+      no_merge <= 1'h0; // @[SPIRAM.scala 152:25]
+    end else if (3'h0 == state) begin // @[SPIRAM.scala 158:18]
+      if (io_en) begin // @[SPIRAM.scala 161:20]
+        if (io_addr_valid) begin // @[SPIRAM.scala 163:30]
+          no_merge <= 1'h0; // @[SPIRAM.scala 170:20]
+        end else begin
+          no_merge <= _GEN_20;
+        end
+      end
+    end else if (!(3'h1 == state)) begin // @[SPIRAM.scala 158:18]
+      if (!(3'h2 == state)) begin // @[SPIRAM.scala 158:18]
+        no_merge <= _GEN_78;
+      end
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  cnt = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  state = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  cen_cnt = _RAND_2[15:0];
+  _RAND_3 = {1{`RANDOM}};
+  no_merge = _RAND_3[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLSPIRAM(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_mem_xing_in_a_ready,
+  input         auto_mem_xing_in_a_valid,
+  input  [2:0]  auto_mem_xing_in_a_bits_opcode,
+  input  [2:0]  auto_mem_xing_in_a_bits_param,
+  input         auto_mem_xing_in_a_bits_size,
+  input  [10:0] auto_mem_xing_in_a_bits_source,
+  input  [30:0] auto_mem_xing_in_a_bits_address,
+  input         auto_mem_xing_in_a_bits_mask,
+  input  [7:0]  auto_mem_xing_in_a_bits_data,
+  input         auto_mem_xing_in_a_bits_corrupt,
+  input         auto_mem_xing_in_d_ready,
+  output        auto_mem_xing_in_d_valid,
+  output [2:0]  auto_mem_xing_in_d_bits_opcode,
+  output        auto_mem_xing_in_d_bits_size,
+  output [10:0] auto_mem_xing_in_d_bits_source,
+  output [7:0]  auto_mem_xing_in_d_bits_data,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_sck,
+  input         auto_io_out_dq_0_i,
+  output        auto_io_out_dq_0_o,
+  output        auto_io_out_dq_0_oe,
+  input         auto_io_out_dq_1_i,
+  output        auto_io_out_dq_1_o,
+  output        auto_io_out_dq_1_oe,
+  input         auto_io_out_dq_2_i,
+  output        auto_io_out_dq_2_o,
+  output        auto_io_out_dq_2_oe,
+  input         auto_io_out_dq_3_i,
+  output        auto_io_out_dq_3_o,
+  output        auto_io_out_dq_3_oe,
+  output        auto_io_out_cs_0
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [10:0] buffer_1_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [10:0] buffer_1_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [10:0] buffer_1_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [30:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_1_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [10:0] buffer_1_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [10:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [30:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [10:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  monitor_1_clock; // @[Nodes.scala 24:25]
+  wire  monitor_1_reset; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_1_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_1_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_1_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_1_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_1_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_1_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_1_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  fifo_clock; // @[TLSPI.scala 69:20]
+  wire  fifo_reset; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_ctrl_fmt_proto; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ctrl_fmt_endian; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ctrl_fmt_iodir; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_fmt_len; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_ctrl_cs_mode; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_wm_tx; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_wm_rx; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_tx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_tx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_tx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_rx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_rx_bits; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_cnt; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_link_fmt_proto; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_fmt_endian; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_fmt_iodir; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_cs_set; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_cs_clear; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_lock; // @[TLSPI.scala 69:20]
+  wire  fifo_io_tx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_tx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_tx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_rx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_rx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_rx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ip_txwm; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ip_rxwm; // @[TLSPI.scala 69:20]
+  wire  mac_clock; // @[TLSPI.scala 70:19]
+  wire  mac_reset; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_sck; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_cs_0; // @[TLSPI.scala 70:19]
+  wire [11:0] mac_io_ctrl_sck_div; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_sck_pol; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_sck_pha; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_cssck; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_sckcs; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_intercs; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_interxfr; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_cs_id; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_cs_dflt_0; // @[TLSPI.scala 70:19]
+  wire [11:0] mac_io_ctrl_extradel_coarse; // @[TLSPI.scala 70:19]
+  wire [4:0] mac_io_ctrl_sampledel_sd; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_tx_ready; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_tx_valid; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_tx_bits; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_rx_valid; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_rx_bits; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_cnt; // @[TLSPI.scala 70:19]
+  wire [1:0] mac_io_link_fmt_proto; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_fmt_endian; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_fmt_iodir; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_cs_set; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_cs_clear; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_cs_hold; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_active; // @[TLSPI.scala 70:19]
+  wire  ram_clock; // @[TLSPIRAM.scala 58:19]
+  wire  ram_reset; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_en; // @[TLSPIRAM.scala 58:19]
+  wire [1:0] ram_io_ctrl_insn_cmd_proto; // @[TLSPIRAM.scala 58:19]
+  wire [7:0] ram_io_ctrl_insn_cmd_code; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_ctrl_insn_cmd_en; // @[TLSPIRAM.scala 58:19]
+  wire [7:0] ram_io_ctrl_insn_wcmd_code; // @[TLSPIRAM.scala 58:19]
+  wire [1:0] ram_io_ctrl_insn_addr_proto; // @[TLSPIRAM.scala 58:19]
+  wire [2:0] ram_io_ctrl_insn_addr_len; // @[TLSPIRAM.scala 58:19]
+  wire [7:0] ram_io_ctrl_insn_pad_code; // @[TLSPIRAM.scala 58:19]
+  wire [3:0] ram_io_ctrl_insn_pad_cnt; // @[TLSPIRAM.scala 58:19]
+  wire [1:0] ram_io_ctrl_insn_data_proto; // @[TLSPIRAM.scala 58:19]
+  wire [3:0] ram_io_ctrl_insn_pgsz; // @[TLSPIRAM.scala 58:19]
+  wire [11:0] ram_io_ctrl_insn_max_cen_cyc; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_ctrl_fmt_endian; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_addr_ready; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_addr_valid; // @[TLSPIRAM.scala 58:19]
+  wire [31:0] ram_io_addr_bits_next; // @[TLSPIRAM.scala 58:19]
+  wire [31:0] ram_io_addr_bits_hold; // @[TLSPIRAM.scala 58:19]
+  wire [2:0] ram_io_opcode_next; // @[TLSPIRAM.scala 58:19]
+  wire [2:0] ram_io_opcode_hold; // @[TLSPIRAM.scala 58:19]
+  wire [7:0] ram_io_wdata; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_data_ready; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_data_valid; // @[TLSPIRAM.scala 58:19]
+  wire [7:0] ram_io_data_bits; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_link_tx_ready; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_link_tx_valid; // @[TLSPIRAM.scala 58:19]
+  wire [7:0] ram_io_link_tx_bits; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_link_rx_valid; // @[TLSPIRAM.scala 58:19]
+  wire [7:0] ram_io_link_rx_bits; // @[TLSPIRAM.scala 58:19]
+  wire [7:0] ram_io_link_cnt; // @[TLSPIRAM.scala 58:19]
+  wire [1:0] ram_io_link_fmt_proto; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_link_fmt_endian; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_link_fmt_iodir; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_link_cs_clear; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_link_active; // @[TLSPIRAM.scala 58:19]
+  wire  ram_io_link_lock; // @[TLSPIRAM.scala 58:19]
+  wire  arb_clock; // @[TLSPIRAM.scala 59:19]
+  wire  arb_reset; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_0_tx_ready; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_0_tx_valid; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_inner_0_tx_bits; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_0_rx_valid; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_inner_0_rx_bits; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_inner_0_cnt; // @[TLSPIRAM.scala 59:19]
+  wire [1:0] arb_io_inner_0_fmt_proto; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_0_fmt_endian; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_0_fmt_iodir; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_0_cs_clear; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_0_active; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_0_lock; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_1_tx_ready; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_1_tx_valid; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_inner_1_tx_bits; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_1_rx_valid; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_inner_1_rx_bits; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_inner_1_cnt; // @[TLSPIRAM.scala 59:19]
+  wire [1:0] arb_io_inner_1_fmt_proto; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_1_fmt_endian; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_1_fmt_iodir; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_1_cs_set; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_1_cs_clear; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_inner_1_lock; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_tx_ready; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_tx_valid; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_outer_tx_bits; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_rx_valid; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_outer_rx_bits; // @[TLSPIRAM.scala 59:19]
+  wire [7:0] arb_io_outer_cnt; // @[TLSPIRAM.scala 59:19]
+  wire [1:0] arb_io_outer_fmt_proto; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_fmt_endian; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_fmt_iodir; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_cs_set; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_cs_clear; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_cs_hold; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_outer_active; // @[TLSPIRAM.scala 59:19]
+  wire  arb_io_sel; // @[TLSPIRAM.scala 59:19]
+  reg [1:0] ctrl_fmt_proto; // @[TLSPI.scala 68:17]
+  reg  ctrl_fmt_endian; // @[TLSPI.scala 68:17]
+  reg  ctrl_fmt_iodir; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_fmt_len; // @[TLSPI.scala 68:17]
+  reg [11:0] ctrl_sck_div; // @[TLSPI.scala 68:17]
+  reg  ctrl_sck_pol; // @[TLSPI.scala 68:17]
+  reg  ctrl_sck_pha; // @[TLSPI.scala 68:17]
+  reg  ctrl_cs_id; // @[TLSPI.scala 68:17]
+  reg  ctrl_cs_dflt_0; // @[TLSPI.scala 68:17]
+  reg [1:0] ctrl_cs_mode; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_cssck; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_sckcs; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_intercs; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_interxfr; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_wm_tx; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_wm_rx; // @[TLSPI.scala 68:17]
+  reg [11:0] ctrl_extradel_coarse; // @[TLSPI.scala 68:17]
+  reg [4:0] ctrl_sampledel_sd; // @[TLSPI.scala 68:17]
+  reg  ie_txwm; // @[TLSPI.scala 82:15]
+  reg  ie_rxwm; // @[TLSPI.scala 82:15]
+  wire  _T = ~fifo_io_tx_ready; // @[RegMapFIFO.scala 25:9]
+  wire  _T_1 = ~fifo_io_rx_valid; // @[RegMapFIFO.scala 46:21]
+  reg [2:0] a_opcode; // @[TLSPIRAM.scala 67:14]
+  reg  a_size; // @[TLSPIRAM.scala 67:14]
+  reg [10:0] a_source; // @[TLSPIRAM.scala 67:14]
+  reg [30:0] a_address; // @[TLSPIRAM.scala 67:14]
+  reg [7:0] a_data; // @[TLSPIRAM.scala 67:14]
+  wire  bundleIn_0_a_ready = ram_io_addr_ready; // @[Nodes.scala 1210:84 TLSPIRAM.scala 80:13]
+  wire  bundleIn_0_a_valid = buffer_1_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  _T_2 = bundleIn_0_a_ready & bundleIn_0_a_valid; // @[Decoupled.scala 50:35]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_a_bits_size = buffer_1_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [10:0] bundleIn_0_a_bits_source = buffer_1_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [30:0] bundleIn_0_a_bits_address = buffer_1_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] bundleIn_0_a_bits_data = buffer_1_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] bundleIn_0_d_bits_d_1_data = ram_io_data_bits; // @[Edges.scala 771:17 778:15]
+  reg [1:0] insn_cmd_proto; // @[TLSPIRAM.scala 90:17]
+  reg [7:0] insn_cmd_code; // @[TLSPIRAM.scala 90:17]
+  reg  insn_cmd_en; // @[TLSPIRAM.scala 90:17]
+  reg [7:0] insn_wcmd_code; // @[TLSPIRAM.scala 90:17]
+  reg [1:0] insn_addr_proto; // @[TLSPIRAM.scala 90:17]
+  reg [2:0] insn_addr_len; // @[TLSPIRAM.scala 90:17]
+  reg [7:0] insn_pad_code; // @[TLSPIRAM.scala 90:17]
+  reg [3:0] insn_pad_cnt; // @[TLSPIRAM.scala 90:17]
+  reg [1:0] insn_data_proto; // @[TLSPIRAM.scala 90:17]
+  reg [3:0] insn_pgsz; // @[TLSPIRAM.scala 90:17]
+  reg [11:0] insn_max_cen_cyc; // @[TLSPIRAM.scala 90:17]
+  reg  ram_en; // @[TLSPIRAM.scala 91:19]
+  wire [2:0] bundleIn_0_1_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_1_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_1_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_1_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3e0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_1_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_1_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_1_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_1_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_1_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[11:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_1_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_1_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [4:0] out_oindex = {in_bits_index[4],in_bits_index[3],in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [31:0] _out_frontSel_T = 32'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_1_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_wimask_1 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_5 = _out_frontSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_5 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1 = out_wivalid_1 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_17 = out_f_wivalid_1 ? bundleIn_0_1_a_bits_data[0] : ctrl_cs_dflt_0; // @[RegField.scala 74:{88,92} TLSPI.scala 68:17]
+  wire  out_rimask_2 = |out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_2 = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_2 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_2 = out_wivalid_2 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_3 = &out_frontMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_3 = out_wivalid_2 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T = {{8'd0}, ctrl_dla_cssck}; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend = {ctrl_dla_sckcs,_out_prepend_T}; // @[Cat.scala 31:58]
+  wire  out_frontSel_24 = _out_frontSel_T[24]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_4 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_24 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_4 = out_wivalid_4 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_20 = out_f_wivalid_4 ? bundleIn_0_1_a_bits_data[0] : ram_en; // @[RegField.scala 74:{88,92} TLSPIRAM.scala 91:19]
+  wire  out_frontSel_25 = _out_frontSel_T[25]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_5 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_25 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_5 = out_wivalid_5 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_21 = out_f_wivalid_5 ? bundleIn_0_1_a_bits_data[0] : insn_cmd_en; // @[RegField.scala 74:{88,92} TLSPIRAM.scala 90:17]
+  wire  out_wimask_6 = &out_frontMask[3:1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_5 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_7 = &out_frontMask[7:4]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_7 = out_wivalid_5 & out_wimask_7; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_8 = &out_frontMask[9:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_5 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_9 = &out_frontMask[11:10]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_5 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[13:12]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_5 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  wire [13:0] out_prepend_5 = {insn_data_proto,insn_addr_proto,insn_cmd_proto,insn_pad_cnt,insn_addr_len,insn_cmd_en}; // @[Cat.scala 31:58]
+  wire  out_f_wivalid_11 = out_wivalid_5 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_6 = {{2'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_12 = &out_frontMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_5 & out_wimask_12; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_7 = {insn_pad_code,insn_cmd_code,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_frontSel_14 = _out_frontSel_T[14]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_13 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_14 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_13 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_14 = &out_frontMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_20 = _out_frontSel_T[20]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_20 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask_14; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_210 = fifo_io_ip_txwm; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_16 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_8 = {fifo_io_ip_rxwm,_out_T_210}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_17 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_1 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_17 = out_wivalid_17 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_18 = out_wivalid_17 & out_wimask_16; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_9 = {ctrl_sck_pol,ctrl_sck_pha}; // @[Cat.scala 31:58]
+  wire  out_wimask_19 = &out_frontMask[1:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_19 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_19 = out_wivalid_19 & out_wimask_19; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_28 = _out_frontSel_T[28]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_20 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_28 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_20 = out_wivalid_20 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_21 = out_wivalid_20 & out_wimask_16; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_10 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  out_frontSel_21 = _out_frontSel_T[21]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_22 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_21 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_22 = out_wivalid_22 & out_wimask_14; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_18 = _out_frontSel_T[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_23 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_18 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_23 = out_wivalid_23 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_25 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_25 = out_wivalid_23 & out_womask_25; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_25 & bundleIn_0_1_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [31:0] out_prepend_12 = {_T,31'h0}; // @[Cat.scala 31:58]
+  wire  out_frontSel_16 = _out_frontSel_T[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_26 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_16 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_26 = out_wivalid_26 & out_wimask_19; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_27 = &out_frontMask[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_27 = out_wivalid_26 & out_wimask_27; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_28 = &out_frontMask[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_28 = out_wivalid_26 & out_wimask_28; // @[RegisterRouter.scala 83:24]
+  wire [3:0] out_prepend_14 = {ctrl_fmt_iodir,ctrl_fmt_endian,ctrl_fmt_proto}; // @[Cat.scala 31:58]
+  wire  out_wimask_29 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_29 = out_wivalid_26 & out_wimask_29; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_15 = {{12'd0}, out_prepend_14}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_15 = {ctrl_fmt_len,_out_prepend_T_15}; // @[Cat.scala 31:58]
+  wire  out_frontSel_11 = _out_frontSel_T[11]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_30 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_11 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_30 = out_wivalid_30 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_31 = out_wivalid_30 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_16 = {{8'd0}, ctrl_dla_intercs}; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_16 = {ctrl_dla_interxfr,_out_prepend_T_16}; // @[Cat.scala 31:58]
+  wire  out_frontSel_26 = _out_frontSel_T[26]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_32 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_26 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_32 = out_wivalid_32 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_33 = &out_frontMask[11:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_33 = out_wivalid_32 & out_wimask_33; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_34 = &out_frontMask[23:12]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_34 = out_wivalid_32 & out_wimask_34; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_18 = {insn_max_cen_cyc,insn_pgsz,insn_wcmd_code}; // @[Cat.scala 31:58]
+  wire  out_frontSel_19 = _out_frontSel_T[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_35 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & in_bits_read & out_frontSel_19 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_T_420 = fifo_io_rx_bits; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_19 = {1'h0,_out_T_420}; // @[Cat.scala 31:58]
+  wire [30:0] _out_T_429 = {{22'd0}, out_prepend_19}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_20 = {_T_1,_out_T_429}; // @[Cat.scala 31:58]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_38 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_38 = out_wivalid_38 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_39 = &out_frontMask[4:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_15 = _out_frontSel_T[15]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_39 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_15 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_39 = out_wivalid_39 & out_wimask_39; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_177 = 5'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_180 = 5'h4 == out_oindex ? _out_T : 5'h3 == out_oindex | (5'h2 == out_oindex | _GEN_177); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_181 = 5'h5 == out_oindex ? _out_T : _GEN_180; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_182 = 5'h6 == out_oindex ? _out_T : _GEN_181; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_186 = 5'ha == out_oindex ? _out_T : 5'h9 == out_oindex | (5'h8 == out_oindex | (5'h7 == out_oindex |
+    _GEN_182)); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_187 = 5'hb == out_oindex ? _out_T : _GEN_186; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_190 = 5'he == out_oindex ? _out_T : 5'hd == out_oindex | (5'hc == out_oindex | _GEN_187); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_191 = 5'hf == out_oindex ? _out_T : _GEN_190; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_192 = 5'h10 == out_oindex ? _out_T : _GEN_191; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_194 = 5'h12 == out_oindex ? _out_T : 5'h11 == out_oindex | _GEN_192; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_195 = 5'h13 == out_oindex ? _out_T : _GEN_194; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_196 = 5'h14 == out_oindex ? _out_T : _GEN_195; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_197 = 5'h15 == out_oindex ? _out_T : _GEN_196; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_200 = 5'h18 == out_oindex ? _out_T : 5'h17 == out_oindex | (5'h16 == out_oindex | _GEN_197); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_201 = 5'h19 == out_oindex ? _out_T : _GEN_200; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_202 = 5'h1a == out_oindex ? _out_T : _GEN_201; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_204 = 5'h1c == out_oindex ? _out_T : 5'h1b == out_oindex | _GEN_202; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_205 = 5'h1d == out_oindex ? _out_T : _GEN_204; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_207 = 5'h1f == out_oindex | (5'h1e == out_oindex | _GEN_205); // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_0 = {{20'd0}, ctrl_sck_div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _out_out_bits_data_WIRE_1_1 = {{30'd0}, out_prepend_9}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_209 = 5'h1 == out_oindex ? _out_out_bits_data_WIRE_1_1 : _out_out_bits_data_WIRE_1_0; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_210 = 5'h2 == out_oindex ? 32'h0 : _GEN_209; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_211 = 5'h3 == out_oindex ? 32'h0 : _GEN_210; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{31'd0}, ctrl_cs_id}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_212 = 5'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_211; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_5 = {{31'd0}, ctrl_cs_dflt_0}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_213 = 5'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_212; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{30'd0}, ctrl_cs_mode}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_214 = 5'h6 == out_oindex ? _out_out_bits_data_WIRE_1_6 : _GEN_213; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_215 = 5'h7 == out_oindex ? 32'h0 : _GEN_214; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_216 = 5'h8 == out_oindex ? 32'h0 : _GEN_215; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_217 = 5'h9 == out_oindex ? 32'h0 : _GEN_216; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_10 = {{8'd0}, out_prepend}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_218 = 5'ha == out_oindex ? _out_out_bits_data_WIRE_1_10 : _GEN_217; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_11 = {{8'd0}, out_prepend_16}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_219 = 5'hb == out_oindex ? _out_out_bits_data_WIRE_1_11 : _GEN_218; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_220 = 5'hc == out_oindex ? 32'h0 : _GEN_219; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_221 = 5'hd == out_oindex ? 32'h0 : _GEN_220; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_14 = {{20'd0}, ctrl_extradel_coarse}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_222 = 5'he == out_oindex ? _out_out_bits_data_WIRE_1_14 : _GEN_221; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_15 = {{27'd0}, ctrl_sampledel_sd}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_223 = 5'hf == out_oindex ? _out_out_bits_data_WIRE_1_15 : _GEN_222; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_16 = {{12'd0}, out_prepend_15}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_224 = 5'h10 == out_oindex ? _out_out_bits_data_WIRE_1_16 : _GEN_223; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_225 = 5'h11 == out_oindex ? 32'h0 : _GEN_224; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_226 = 5'h12 == out_oindex ? out_prepend_12 : _GEN_225; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_227 = 5'h13 == out_oindex ? out_prepend_20 : _GEN_226; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_20 = {{28'd0}, ctrl_wm_tx}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_228 = 5'h14 == out_oindex ? _out_out_bits_data_WIRE_1_20 : _GEN_227; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_21 = {{28'd0}, ctrl_wm_rx}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_229 = 5'h15 == out_oindex ? _out_out_bits_data_WIRE_1_21 : _GEN_228; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_230 = 5'h16 == out_oindex ? 32'h0 : _GEN_229; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_231 = 5'h17 == out_oindex ? 32'h0 : _GEN_230; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_24 = {{31'd0}, ram_en}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_232 = 5'h18 == out_oindex ? _out_out_bits_data_WIRE_1_24 : _GEN_231; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_233 = 5'h19 == out_oindex ? out_prepend_7 : _GEN_232; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_26 = {{8'd0}, out_prepend_18}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_234 = 5'h1a == out_oindex ? _out_out_bits_data_WIRE_1_26 : _GEN_233; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_235 = 5'h1b == out_oindex ? 32'h0 : _GEN_234; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_28 = {{30'd0}, out_prepend_10}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_236 = 5'h1c == out_oindex ? _out_out_bits_data_WIRE_1_28 : _GEN_235; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_29 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_237 = 5'h1d == out_oindex ? _out_out_bits_data_WIRE_1_29 : _GEN_236; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_238 = 5'h1e == out_oindex ? 32'h0 : _GEN_237; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_239 = 5'h1f == out_oindex ? 32'h0 : _GEN_238; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  TLBuffer_21 buffer_1 ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_1_auto_in_a_ready),
+    .auto_in_a_valid(buffer_1_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_1_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_1_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_1_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_1_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_1_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_1_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_1_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_1_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_1_auto_in_d_ready),
+    .auto_in_d_valid(buffer_1_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_1_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_1_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_1_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_1_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_1_auto_out_a_ready),
+    .auto_out_a_valid(buffer_1_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_1_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_1_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_1_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_1_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_1_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_1_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_1_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_1_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_1_auto_out_d_ready),
+    .auto_out_d_valid(buffer_1_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_1_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_1_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_1_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_1_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_63 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  TLMonitor_64 monitor_1 ( // @[Nodes.scala 24:25]
+    .clock(monitor_1_clock),
+    .reset(monitor_1_reset),
+    .io_in_a_ready(monitor_1_io_in_a_ready),
+    .io_in_a_valid(monitor_1_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_1_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_1_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_1_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_1_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_1_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_1_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_1_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_1_io_in_d_ready),
+    .io_in_d_valid(monitor_1_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_1_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_1_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_1_io_in_d_bits_source)
+  );
+  SPIFIFO fifo ( // @[TLSPI.scala 69:20]
+    .clock(fifo_clock),
+    .reset(fifo_reset),
+    .io_ctrl_fmt_proto(fifo_io_ctrl_fmt_proto),
+    .io_ctrl_fmt_endian(fifo_io_ctrl_fmt_endian),
+    .io_ctrl_fmt_iodir(fifo_io_ctrl_fmt_iodir),
+    .io_ctrl_fmt_len(fifo_io_ctrl_fmt_len),
+    .io_ctrl_cs_mode(fifo_io_ctrl_cs_mode),
+    .io_ctrl_wm_tx(fifo_io_ctrl_wm_tx),
+    .io_ctrl_wm_rx(fifo_io_ctrl_wm_rx),
+    .io_link_tx_ready(fifo_io_link_tx_ready),
+    .io_link_tx_valid(fifo_io_link_tx_valid),
+    .io_link_tx_bits(fifo_io_link_tx_bits),
+    .io_link_rx_valid(fifo_io_link_rx_valid),
+    .io_link_rx_bits(fifo_io_link_rx_bits),
+    .io_link_cnt(fifo_io_link_cnt),
+    .io_link_fmt_proto(fifo_io_link_fmt_proto),
+    .io_link_fmt_endian(fifo_io_link_fmt_endian),
+    .io_link_fmt_iodir(fifo_io_link_fmt_iodir),
+    .io_link_cs_set(fifo_io_link_cs_set),
+    .io_link_cs_clear(fifo_io_link_cs_clear),
+    .io_link_lock(fifo_io_link_lock),
+    .io_tx_ready(fifo_io_tx_ready),
+    .io_tx_valid(fifo_io_tx_valid),
+    .io_tx_bits(fifo_io_tx_bits),
+    .io_rx_ready(fifo_io_rx_ready),
+    .io_rx_valid(fifo_io_rx_valid),
+    .io_rx_bits(fifo_io_rx_bits),
+    .io_ip_txwm(fifo_io_ip_txwm),
+    .io_ip_rxwm(fifo_io_ip_rxwm)
+  );
+  SPIMedia mac ( // @[TLSPI.scala 70:19]
+    .clock(mac_clock),
+    .reset(mac_reset),
+    .io_port_sck(mac_io_port_sck),
+    .io_port_dq_0_i(mac_io_port_dq_0_i),
+    .io_port_dq_0_o(mac_io_port_dq_0_o),
+    .io_port_dq_0_oe(mac_io_port_dq_0_oe),
+    .io_port_dq_1_i(mac_io_port_dq_1_i),
+    .io_port_dq_1_o(mac_io_port_dq_1_o),
+    .io_port_dq_1_oe(mac_io_port_dq_1_oe),
+    .io_port_dq_2_i(mac_io_port_dq_2_i),
+    .io_port_dq_2_o(mac_io_port_dq_2_o),
+    .io_port_dq_2_oe(mac_io_port_dq_2_oe),
+    .io_port_dq_3_i(mac_io_port_dq_3_i),
+    .io_port_dq_3_o(mac_io_port_dq_3_o),
+    .io_port_dq_3_oe(mac_io_port_dq_3_oe),
+    .io_port_cs_0(mac_io_port_cs_0),
+    .io_ctrl_sck_div(mac_io_ctrl_sck_div),
+    .io_ctrl_sck_pol(mac_io_ctrl_sck_pol),
+    .io_ctrl_sck_pha(mac_io_ctrl_sck_pha),
+    .io_ctrl_dla_cssck(mac_io_ctrl_dla_cssck),
+    .io_ctrl_dla_sckcs(mac_io_ctrl_dla_sckcs),
+    .io_ctrl_dla_intercs(mac_io_ctrl_dla_intercs),
+    .io_ctrl_dla_interxfr(mac_io_ctrl_dla_interxfr),
+    .io_ctrl_cs_id(mac_io_ctrl_cs_id),
+    .io_ctrl_cs_dflt_0(mac_io_ctrl_cs_dflt_0),
+    .io_ctrl_extradel_coarse(mac_io_ctrl_extradel_coarse),
+    .io_ctrl_sampledel_sd(mac_io_ctrl_sampledel_sd),
+    .io_link_tx_ready(mac_io_link_tx_ready),
+    .io_link_tx_valid(mac_io_link_tx_valid),
+    .io_link_tx_bits(mac_io_link_tx_bits),
+    .io_link_rx_valid(mac_io_link_rx_valid),
+    .io_link_rx_bits(mac_io_link_rx_bits),
+    .io_link_cnt(mac_io_link_cnt),
+    .io_link_fmt_proto(mac_io_link_fmt_proto),
+    .io_link_fmt_endian(mac_io_link_fmt_endian),
+    .io_link_fmt_iodir(mac_io_link_fmt_iodir),
+    .io_link_cs_set(mac_io_link_cs_set),
+    .io_link_cs_clear(mac_io_link_cs_clear),
+    .io_link_cs_hold(mac_io_link_cs_hold),
+    .io_link_active(mac_io_link_active)
+  );
+  SPIRAMMap ram ( // @[TLSPIRAM.scala 58:19]
+    .clock(ram_clock),
+    .reset(ram_reset),
+    .io_en(ram_io_en),
+    .io_ctrl_insn_cmd_proto(ram_io_ctrl_insn_cmd_proto),
+    .io_ctrl_insn_cmd_code(ram_io_ctrl_insn_cmd_code),
+    .io_ctrl_insn_cmd_en(ram_io_ctrl_insn_cmd_en),
+    .io_ctrl_insn_wcmd_code(ram_io_ctrl_insn_wcmd_code),
+    .io_ctrl_insn_addr_proto(ram_io_ctrl_insn_addr_proto),
+    .io_ctrl_insn_addr_len(ram_io_ctrl_insn_addr_len),
+    .io_ctrl_insn_pad_code(ram_io_ctrl_insn_pad_code),
+    .io_ctrl_insn_pad_cnt(ram_io_ctrl_insn_pad_cnt),
+    .io_ctrl_insn_data_proto(ram_io_ctrl_insn_data_proto),
+    .io_ctrl_insn_pgsz(ram_io_ctrl_insn_pgsz),
+    .io_ctrl_insn_max_cen_cyc(ram_io_ctrl_insn_max_cen_cyc),
+    .io_ctrl_fmt_endian(ram_io_ctrl_fmt_endian),
+    .io_addr_ready(ram_io_addr_ready),
+    .io_addr_valid(ram_io_addr_valid),
+    .io_addr_bits_next(ram_io_addr_bits_next),
+    .io_addr_bits_hold(ram_io_addr_bits_hold),
+    .io_opcode_next(ram_io_opcode_next),
+    .io_opcode_hold(ram_io_opcode_hold),
+    .io_wdata(ram_io_wdata),
+    .io_data_ready(ram_io_data_ready),
+    .io_data_valid(ram_io_data_valid),
+    .io_data_bits(ram_io_data_bits),
+    .io_link_tx_ready(ram_io_link_tx_ready),
+    .io_link_tx_valid(ram_io_link_tx_valid),
+    .io_link_tx_bits(ram_io_link_tx_bits),
+    .io_link_rx_valid(ram_io_link_rx_valid),
+    .io_link_rx_bits(ram_io_link_rx_bits),
+    .io_link_cnt(ram_io_link_cnt),
+    .io_link_fmt_proto(ram_io_link_fmt_proto),
+    .io_link_fmt_endian(ram_io_link_fmt_endian),
+    .io_link_fmt_iodir(ram_io_link_fmt_iodir),
+    .io_link_cs_clear(ram_io_link_cs_clear),
+    .io_link_active(ram_io_link_active),
+    .io_link_lock(ram_io_link_lock)
+  );
+  SPIArbiter arb ( // @[TLSPIRAM.scala 59:19]
+    .clock(arb_clock),
+    .reset(arb_reset),
+    .io_inner_0_tx_ready(arb_io_inner_0_tx_ready),
+    .io_inner_0_tx_valid(arb_io_inner_0_tx_valid),
+    .io_inner_0_tx_bits(arb_io_inner_0_tx_bits),
+    .io_inner_0_rx_valid(arb_io_inner_0_rx_valid),
+    .io_inner_0_rx_bits(arb_io_inner_0_rx_bits),
+    .io_inner_0_cnt(arb_io_inner_0_cnt),
+    .io_inner_0_fmt_proto(arb_io_inner_0_fmt_proto),
+    .io_inner_0_fmt_endian(arb_io_inner_0_fmt_endian),
+    .io_inner_0_fmt_iodir(arb_io_inner_0_fmt_iodir),
+    .io_inner_0_cs_clear(arb_io_inner_0_cs_clear),
+    .io_inner_0_active(arb_io_inner_0_active),
+    .io_inner_0_lock(arb_io_inner_0_lock),
+    .io_inner_1_tx_ready(arb_io_inner_1_tx_ready),
+    .io_inner_1_tx_valid(arb_io_inner_1_tx_valid),
+    .io_inner_1_tx_bits(arb_io_inner_1_tx_bits),
+    .io_inner_1_rx_valid(arb_io_inner_1_rx_valid),
+    .io_inner_1_rx_bits(arb_io_inner_1_rx_bits),
+    .io_inner_1_cnt(arb_io_inner_1_cnt),
+    .io_inner_1_fmt_proto(arb_io_inner_1_fmt_proto),
+    .io_inner_1_fmt_endian(arb_io_inner_1_fmt_endian),
+    .io_inner_1_fmt_iodir(arb_io_inner_1_fmt_iodir),
+    .io_inner_1_cs_set(arb_io_inner_1_cs_set),
+    .io_inner_1_cs_clear(arb_io_inner_1_cs_clear),
+    .io_inner_1_lock(arb_io_inner_1_lock),
+    .io_outer_tx_ready(arb_io_outer_tx_ready),
+    .io_outer_tx_valid(arb_io_outer_tx_valid),
+    .io_outer_tx_bits(arb_io_outer_tx_bits),
+    .io_outer_rx_valid(arb_io_outer_rx_valid),
+    .io_outer_rx_bits(arb_io_outer_rx_bits),
+    .io_outer_cnt(arb_io_outer_cnt),
+    .io_outer_fmt_proto(arb_io_outer_fmt_proto),
+    .io_outer_fmt_endian(arb_io_outer_fmt_endian),
+    .io_outer_fmt_iodir(arb_io_outer_fmt_iodir),
+    .io_outer_cs_set(arb_io_outer_cs_set),
+    .io_outer_cs_clear(arb_io_outer_cs_clear),
+    .io_outer_cs_hold(arb_io_outer_cs_hold),
+    .io_outer_active(arb_io_outer_active),
+    .io_sel(arb_io_sel)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_mem_xing_in_a_ready = buffer_1_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_valid = buffer_1_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_bits_opcode = buffer_1_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_bits_size = buffer_1_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_bits_source = buffer_1_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_mem_xing_in_d_bits_data = buffer_1_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_sck = mac_io_port_sck; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_0_o = mac_io_port_dq_0_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_0_oe = mac_io_port_dq_0_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_1_o = mac_io_port_dq_1_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_1_oe = mac_io_port_dq_1_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_2_o = mac_io_port_dq_2_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_2_oe = mac_io_port_dq_2_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_3_o = mac_io_port_dq_3_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_3_oe = mac_io_port_dq_3_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_cs_0 = mac_io_port_cs_0; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_207 ? _GEN_239 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign buffer_1_auto_in_a_valid = auto_mem_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_opcode = auto_mem_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_param = auto_mem_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_size = auto_mem_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_source = auto_mem_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_address = auto_mem_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_mask = auto_mem_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_data = auto_mem_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_corrupt = auto_mem_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_in_d_ready = auto_mem_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_1_auto_out_a_ready = ram_io_addr_ready; // @[Nodes.scala 1210:84 TLSPIRAM.scala 80:13]
+  assign buffer_1_auto_out_d_valid = ram_io_data_valid; // @[Nodes.scala 1210:84 TLSPIRAM.scala 87:13]
+  assign buffer_1_auto_out_d_bits_opcode = a_opcode == 3'h0 ? 3'h0 : 3'h1; // @[TLSPIRAM.scala 82:46 83:14 85:14]
+  assign buffer_1_auto_out_d_bits_size = a_size; // @[TLSPIRAM.scala 82:46 83:14 85:14]
+  assign buffer_1_auto_out_d_bits_source = a_source; // @[TLSPIRAM.scala 82:46 83:14 85:14]
+  assign buffer_1_auto_out_d_bits_data = a_opcode == 3'h0 ? 8'h0 : bundleIn_0_d_bits_d_1_data; // @[TLSPIRAM.scala 82:46 83:14 85:14]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = fifo_io_ip_txwm & ie_txwm | fifo_io_ip_rxwm & ie_rxwm; // @[TLSPI.scala 84:47]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = ram_io_addr_ready; // @[Nodes.scala 1210:84 TLSPIRAM.scala 80:13]
+  assign monitor_io_in_a_valid = buffer_1_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_1_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_1_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_1_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_1_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_1_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_1_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_1_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = ram_io_data_valid; // @[Nodes.scala 1210:84 TLSPIRAM.scala 87:13]
+  assign monitor_io_in_d_bits_opcode = a_opcode == 3'h0 ? 3'h0 : 3'h1; // @[TLSPIRAM.scala 82:46 83:14 85:14]
+  assign monitor_io_in_d_bits_size = a_size; // @[TLSPIRAM.scala 82:46 83:14 85:14]
+  assign monitor_io_in_d_bits_source = a_source; // @[TLSPIRAM.scala 82:46 83:14 85:14]
+  assign monitor_1_clock = clock;
+  assign monitor_1_reset = reset;
+  assign monitor_1_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_1_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_1_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fifo_clock = clock;
+  assign fifo_reset = reset;
+  assign fifo_io_ctrl_fmt_proto = ctrl_fmt_proto; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_endian = ctrl_fmt_endian; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_iodir = ctrl_fmt_iodir; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_len = ctrl_fmt_len; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_cs_mode = ctrl_cs_mode; // @[TLSPI.scala 74:19]
+  assign fifo_io_ctrl_wm_tx = ctrl_wm_tx; // @[TLSPI.scala 75:19]
+  assign fifo_io_ctrl_wm_rx = ctrl_wm_rx; // @[TLSPI.scala 75:19]
+  assign fifo_io_link_tx_ready = arb_io_inner_1_tx_ready; // @[TLSPIRAM.scala 157:21]
+  assign fifo_io_link_rx_valid = arb_io_inner_1_rx_valid; // @[TLSPIRAM.scala 157:21]
+  assign fifo_io_link_rx_bits = arb_io_inner_1_rx_bits; // @[TLSPIRAM.scala 157:21]
+  assign fifo_io_tx_valid = out_f_wivalid_23 & ~quash; // @[RegMapFIFO.scala 19:30]
+  assign fifo_io_tx_bits = bundleIn_0_1_a_bits_data[7:0]; // @[RegisterRouter.scala 83:24]
+  assign fifo_io_rx_ready = out_rivalid_35 & out_rimask_2; // @[RegisterRouter.scala 83:24]
+  assign mac_clock = clock;
+  assign mac_reset = reset;
+  assign mac_io_port_dq_0_i = auto_io_out_dq_0_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_1_i = auto_io_out_dq_1_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_2_i = auto_io_out_dq_2_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_3_i = auto_io_out_dq_3_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_ctrl_sck_div = ctrl_sck_div; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_sck_pol = ctrl_sck_pol; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_sck_pha = ctrl_sck_pha; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_dla_cssck = ctrl_dla_cssck; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_sckcs = ctrl_dla_sckcs; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_intercs = ctrl_dla_intercs; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_interxfr = ctrl_dla_interxfr; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_cs_id = ctrl_cs_id; // @[TLSPI.scala 80:18]
+  assign mac_io_ctrl_cs_dflt_0 = ctrl_cs_dflt_0; // @[TLSPI.scala 80:18]
+  assign mac_io_ctrl_extradel_coarse = ctrl_extradel_coarse; // @[TLSPI.scala 77:24]
+  assign mac_io_ctrl_sampledel_sd = ctrl_sampledel_sd; // @[TLSPI.scala 78:25]
+  assign mac_io_link_tx_valid = arb_io_outer_tx_valid; // @[TLSPIRAM.scala 158:17]
+  assign mac_io_link_tx_bits = arb_io_outer_tx_bits; // @[TLSPIRAM.scala 158:17]
+  assign mac_io_link_cnt = arb_io_outer_cnt; // @[TLSPIRAM.scala 158:17]
+  assign mac_io_link_fmt_proto = arb_io_outer_fmt_proto; // @[TLSPIRAM.scala 158:17]
+  assign mac_io_link_fmt_endian = arb_io_outer_fmt_endian; // @[TLSPIRAM.scala 158:17]
+  assign mac_io_link_fmt_iodir = arb_io_outer_fmt_iodir; // @[TLSPIRAM.scala 158:17]
+  assign mac_io_link_cs_set = arb_io_outer_cs_set; // @[TLSPIRAM.scala 158:17]
+  assign mac_io_link_cs_clear = arb_io_outer_cs_clear; // @[TLSPIRAM.scala 158:17]
+  assign mac_io_link_cs_hold = arb_io_outer_cs_hold; // @[TLSPIRAM.scala 158:17]
+  assign ram_clock = clock;
+  assign ram_reset = reset;
+  assign ram_io_en = ram_en; // @[TLSPIRAM.scala 95:13]
+  assign ram_io_ctrl_insn_cmd_proto = insn_cmd_proto; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_cmd_code = insn_cmd_code; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_cmd_en = insn_cmd_en; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_wcmd_code = insn_wcmd_code; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_addr_proto = insn_addr_proto; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_addr_len = insn_addr_len; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_pad_code = insn_pad_code; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_pad_cnt = insn_pad_cnt; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_data_proto = insn_data_proto; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_pgsz = insn_pgsz; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_insn_max_cen_cyc = insn_max_cen_cyc; // @[TLSPIRAM.scala 93:20]
+  assign ram_io_ctrl_fmt_endian = ctrl_fmt_endian; // @[TLSPIRAM.scala 94:19]
+  assign ram_io_addr_valid = buffer_1_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign ram_io_addr_bits_next = {{3'd0}, bundleIn_0_a_bits_address[28:0]}; // @[TLSPIRAM.scala 74:25]
+  assign ram_io_addr_bits_hold = {{3'd0}, a_address[28:0]}; // @[TLSPIRAM.scala 75:25]
+  assign ram_io_opcode_next = buffer_1_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign ram_io_opcode_hold = a_opcode; // @[TLSPIRAM.scala 77:22]
+  assign ram_io_wdata = a_data; // @[TLSPIRAM.scala 78:16]
+  assign ram_io_data_ready = buffer_1_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign ram_io_link_tx_ready = arb_io_inner_0_tx_ready; // @[TLSPIRAM.scala 156:21]
+  assign ram_io_link_rx_valid = arb_io_inner_0_rx_valid; // @[TLSPIRAM.scala 156:21]
+  assign ram_io_link_rx_bits = arb_io_inner_0_rx_bits; // @[TLSPIRAM.scala 156:21]
+  assign ram_io_link_active = arb_io_inner_0_active; // @[TLSPIRAM.scala 156:21]
+  assign arb_clock = clock;
+  assign arb_reset = reset;
+  assign arb_io_inner_0_tx_valid = ram_io_link_tx_valid; // @[TLSPIRAM.scala 156:21]
+  assign arb_io_inner_0_tx_bits = ram_io_link_tx_bits; // @[TLSPIRAM.scala 156:21]
+  assign arb_io_inner_0_cnt = ram_io_link_cnt; // @[TLSPIRAM.scala 156:21]
+  assign arb_io_inner_0_fmt_proto = ram_io_link_fmt_proto; // @[TLSPIRAM.scala 156:21]
+  assign arb_io_inner_0_fmt_endian = ram_io_link_fmt_endian; // @[TLSPIRAM.scala 156:21]
+  assign arb_io_inner_0_fmt_iodir = ram_io_link_fmt_iodir; // @[TLSPIRAM.scala 156:21]
+  assign arb_io_inner_0_cs_clear = ram_io_link_cs_clear; // @[TLSPIRAM.scala 156:21]
+  assign arb_io_inner_0_lock = ram_io_link_lock; // @[TLSPIRAM.scala 156:21]
+  assign arb_io_inner_1_tx_valid = fifo_io_link_tx_valid; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_inner_1_tx_bits = fifo_io_link_tx_bits; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_inner_1_cnt = fifo_io_link_cnt; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_inner_1_fmt_proto = fifo_io_link_fmt_proto; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_inner_1_fmt_endian = fifo_io_link_fmt_endian; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_inner_1_fmt_iodir = fifo_io_link_fmt_iodir; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_inner_1_cs_set = fifo_io_link_cs_set; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_inner_1_cs_clear = fifo_io_link_cs_clear; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_inner_1_lock = fifo_io_link_lock; // @[TLSPIRAM.scala 157:21]
+  assign arb_io_outer_tx_ready = mac_io_link_tx_ready; // @[TLSPIRAM.scala 158:17]
+  assign arb_io_outer_rx_valid = mac_io_link_rx_valid; // @[TLSPIRAM.scala 158:17]
+  assign arb_io_outer_rx_bits = mac_io_link_rx_bits; // @[TLSPIRAM.scala 158:17]
+  assign arb_io_outer_active = mac_io_link_active; // @[TLSPIRAM.scala 158:17]
+  assign arb_io_sel = ~ram_en; // @[TLSPIRAM.scala 96:17]
+  always @(posedge clock) begin
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_proto <= 2'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_26) begin // @[RegField.scala 74:88]
+      ctrl_fmt_proto <= bundleIn_0_1_a_bits_data[1:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_endian <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_27) begin // @[RegField.scala 74:88]
+      ctrl_fmt_endian <= bundleIn_0_1_a_bits_data[2]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_iodir <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_28) begin // @[RegField.scala 74:88]
+      ctrl_fmt_iodir <= bundleIn_0_1_a_bits_data[3]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_len <= 4'h8; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_29) begin // @[RegField.scala 74:88]
+      ctrl_fmt_len <= bundleIn_0_1_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_div <= 12'h3; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid) begin // @[RegField.scala 74:88]
+      ctrl_sck_div <= bundleIn_0_1_a_bits_data[11:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_pol <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_18) begin // @[RegField.scala 74:88]
+      ctrl_sck_pol <= bundleIn_0_1_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_pha <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_17) begin // @[RegField.scala 74:88]
+      ctrl_sck_pha <= bundleIn_0_1_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_cs_id <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_38) begin // @[RegField.scala 74:88]
+      ctrl_cs_id <= bundleIn_0_1_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    ctrl_cs_dflt_0 <= reset | _GEN_17; // @[TLSPI.scala 68:{17,17}]
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_cs_mode <= 2'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_19) begin // @[RegField.scala 74:88]
+      ctrl_cs_mode <= bundleIn_0_1_a_bits_data[1:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_cssck <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_2) begin // @[RegField.scala 74:88]
+      ctrl_dla_cssck <= bundleIn_0_1_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_sckcs <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_3) begin // @[RegField.scala 74:88]
+      ctrl_dla_sckcs <= bundleIn_0_1_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_intercs <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_30) begin // @[RegField.scala 74:88]
+      ctrl_dla_intercs <= bundleIn_0_1_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_interxfr <= 8'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_31) begin // @[RegField.scala 74:88]
+      ctrl_dla_interxfr <= bundleIn_0_1_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_wm_tx <= 4'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      ctrl_wm_tx <= bundleIn_0_1_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_wm_rx <= 4'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_22) begin // @[RegField.scala 74:88]
+      ctrl_wm_rx <= bundleIn_0_1_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_extradel_coarse <= 12'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      ctrl_extradel_coarse <= bundleIn_0_1_a_bits_data[11:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sampledel_sd <= 5'h3; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_39) begin // @[RegField.scala 74:88]
+      ctrl_sampledel_sd <= bundleIn_0_1_a_bits_data[4:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 82:15]
+      ie_txwm <= 1'h0; // @[TLSPI.scala 82:15]
+    end else if (out_f_wivalid_20) begin // @[RegField.scala 74:88]
+      ie_txwm <= bundleIn_0_1_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 82:15]
+      ie_rxwm <= 1'h0; // @[TLSPI.scala 82:15]
+    end else if (out_f_wivalid_21) begin // @[RegField.scala 74:88]
+      ie_rxwm <= bundleIn_0_1_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (_T_2) begin // @[TLSPIRAM.scala 70:19]
+      a_opcode <= bundleIn_0_a_bits_opcode; // @[TLSPIRAM.scala 71:7]
+    end
+    if (_T_2) begin // @[TLSPIRAM.scala 70:19]
+      a_size <= bundleIn_0_a_bits_size; // @[TLSPIRAM.scala 71:7]
+    end
+    if (_T_2) begin // @[TLSPIRAM.scala 70:19]
+      a_source <= bundleIn_0_a_bits_source; // @[TLSPIRAM.scala 71:7]
+    end
+    if (_T_2) begin // @[TLSPIRAM.scala 70:19]
+      a_address <= bundleIn_0_a_bits_address; // @[TLSPIRAM.scala 71:7]
+    end
+    if (_T_2) begin // @[TLSPIRAM.scala 70:19]
+      a_data <= bundleIn_0_a_bits_data; // @[TLSPIRAM.scala 71:7]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_cmd_proto <= 2'h0; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      insn_cmd_proto <= bundleIn_0_1_a_bits_data[9:8]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_cmd_code <= 8'h3; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      insn_cmd_code <= bundleIn_0_1_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    insn_cmd_en <= reset | _GEN_21; // @[TLSPIRAM.scala 90:{17,17}]
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_wcmd_code <= 8'h2; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_32) begin // @[RegField.scala 74:88]
+      insn_wcmd_code <= bundleIn_0_1_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_addr_proto <= 2'h0; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      insn_addr_proto <= bundleIn_0_1_a_bits_data[11:10]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_addr_len <= 3'h3; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_6) begin // @[RegField.scala 74:88]
+      insn_addr_len <= bundleIn_0_1_a_bits_data[3:1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_pad_code <= 8'h0; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      insn_pad_code <= bundleIn_0_1_a_bits_data[31:24]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_pad_cnt <= 4'h0; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_7) begin // @[RegField.scala 74:88]
+      insn_pad_cnt <= bundleIn_0_1_a_bits_data[7:4]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_data_proto <= 2'h0; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      insn_data_proto <= bundleIn_0_1_a_bits_data[13:12]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_pgsz <= 4'h9; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_33) begin // @[RegField.scala 74:88]
+      insn_pgsz <= bundleIn_0_1_a_bits_data[11:8]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPIRAM.scala 90:17]
+      insn_max_cen_cyc <= 12'h80; // @[TLSPIRAM.scala 90:17]
+    end else if (out_f_wivalid_34) begin // @[RegField.scala 74:88]
+      insn_max_cen_cyc <= bundleIn_0_1_a_bits_data[23:12]; // @[RegField.scala 74:92]
+    end
+    ram_en <= reset | _GEN_20; // @[TLSPIRAM.scala 91:{19,19}]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ctrl_fmt_proto = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  ctrl_fmt_endian = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ctrl_fmt_iodir = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  ctrl_fmt_len = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  ctrl_sck_div = _RAND_4[11:0];
+  _RAND_5 = {1{`RANDOM}};
+  ctrl_sck_pol = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ctrl_sck_pha = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ctrl_cs_id = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  ctrl_cs_dflt_0 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  ctrl_cs_mode = _RAND_9[1:0];
+  _RAND_10 = {1{`RANDOM}};
+  ctrl_dla_cssck = _RAND_10[7:0];
+  _RAND_11 = {1{`RANDOM}};
+  ctrl_dla_sckcs = _RAND_11[7:0];
+  _RAND_12 = {1{`RANDOM}};
+  ctrl_dla_intercs = _RAND_12[7:0];
+  _RAND_13 = {1{`RANDOM}};
+  ctrl_dla_interxfr = _RAND_13[7:0];
+  _RAND_14 = {1{`RANDOM}};
+  ctrl_wm_tx = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  ctrl_wm_rx = _RAND_15[3:0];
+  _RAND_16 = {1{`RANDOM}};
+  ctrl_extradel_coarse = _RAND_16[11:0];
+  _RAND_17 = {1{`RANDOM}};
+  ctrl_sampledel_sd = _RAND_17[4:0];
+  _RAND_18 = {1{`RANDOM}};
+  ie_txwm = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  ie_rxwm = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  a_opcode = _RAND_20[2:0];
+  _RAND_21 = {1{`RANDOM}};
+  a_size = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  a_source = _RAND_22[10:0];
+  _RAND_23 = {1{`RANDOM}};
+  a_address = _RAND_23[30:0];
+  _RAND_24 = {1{`RANDOM}};
+  a_data = _RAND_24[7:0];
+  _RAND_25 = {1{`RANDOM}};
+  insn_cmd_proto = _RAND_25[1:0];
+  _RAND_26 = {1{`RANDOM}};
+  insn_cmd_code = _RAND_26[7:0];
+  _RAND_27 = {1{`RANDOM}};
+  insn_cmd_en = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  insn_wcmd_code = _RAND_28[7:0];
+  _RAND_29 = {1{`RANDOM}};
+  insn_addr_proto = _RAND_29[1:0];
+  _RAND_30 = {1{`RANDOM}};
+  insn_addr_len = _RAND_30[2:0];
+  _RAND_31 = {1{`RANDOM}};
+  insn_pad_code = _RAND_31[7:0];
+  _RAND_32 = {1{`RANDOM}};
+  insn_pad_cnt = _RAND_32[3:0];
+  _RAND_33 = {1{`RANDOM}};
+  insn_data_proto = _RAND_33[1:0];
+  _RAND_34 = {1{`RANDOM}};
+  insn_pgsz = _RAND_34[3:0];
+  _RAND_35 = {1{`RANDOM}};
+  insn_max_cen_cyc = _RAND_35[11:0];
+  _RAND_36 = {1{`RANDOM}};
+  ram_en = _RAND_36[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_7(
+  output        auto_qspi_ram_0_int_xing_out_sync_0,
+  output        auto_qspi_ram_0_mem_xing_in_a_ready,
+  input         auto_qspi_ram_0_mem_xing_in_a_valid,
+  input  [2:0]  auto_qspi_ram_0_mem_xing_in_a_bits_opcode,
+  input  [2:0]  auto_qspi_ram_0_mem_xing_in_a_bits_param,
+  input         auto_qspi_ram_0_mem_xing_in_a_bits_size,
+  input  [10:0] auto_qspi_ram_0_mem_xing_in_a_bits_source,
+  input  [30:0] auto_qspi_ram_0_mem_xing_in_a_bits_address,
+  input         auto_qspi_ram_0_mem_xing_in_a_bits_mask,
+  input  [7:0]  auto_qspi_ram_0_mem_xing_in_a_bits_data,
+  input         auto_qspi_ram_0_mem_xing_in_a_bits_corrupt,
+  input         auto_qspi_ram_0_mem_xing_in_d_ready,
+  output        auto_qspi_ram_0_mem_xing_in_d_valid,
+  output [2:0]  auto_qspi_ram_0_mem_xing_in_d_bits_opcode,
+  output        auto_qspi_ram_0_mem_xing_in_d_bits_size,
+  output [10:0] auto_qspi_ram_0_mem_xing_in_d_bits_source,
+  output [7:0]  auto_qspi_ram_0_mem_xing_in_d_bits_data,
+  output        auto_qspi_ram_0_control_xing_in_a_ready,
+  input         auto_qspi_ram_0_control_xing_in_a_valid,
+  input  [2:0]  auto_qspi_ram_0_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_qspi_ram_0_control_xing_in_a_bits_param,
+  input  [1:0]  auto_qspi_ram_0_control_xing_in_a_bits_size,
+  input  [6:0]  auto_qspi_ram_0_control_xing_in_a_bits_source,
+  input  [28:0] auto_qspi_ram_0_control_xing_in_a_bits_address,
+  input  [3:0]  auto_qspi_ram_0_control_xing_in_a_bits_mask,
+  input  [31:0] auto_qspi_ram_0_control_xing_in_a_bits_data,
+  input         auto_qspi_ram_0_control_xing_in_a_bits_corrupt,
+  input         auto_qspi_ram_0_control_xing_in_d_ready,
+  output        auto_qspi_ram_0_control_xing_in_d_valid,
+  output [2:0]  auto_qspi_ram_0_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_qspi_ram_0_control_xing_in_d_bits_size,
+  output [6:0]  auto_qspi_ram_0_control_xing_in_d_bits_source,
+  output [31:0] auto_qspi_ram_0_control_xing_in_d_bits_data,
+  output        auto_qspi_ram_0_io_out_sck,
+  input         auto_qspi_ram_0_io_out_dq_0_i,
+  output        auto_qspi_ram_0_io_out_dq_0_o,
+  output        auto_qspi_ram_0_io_out_dq_0_oe,
+  input         auto_qspi_ram_0_io_out_dq_1_i,
+  output        auto_qspi_ram_0_io_out_dq_1_o,
+  output        auto_qspi_ram_0_io_out_dq_1_oe,
+  input         auto_qspi_ram_0_io_out_dq_2_i,
+  output        auto_qspi_ram_0_io_out_dq_2_o,
+  output        auto_qspi_ram_0_io_out_dq_2_oe,
+  input         auto_qspi_ram_0_io_out_dq_3_i,
+  output        auto_qspi_ram_0_io_out_dq_3_o,
+  output        auto_qspi_ram_0_io_out_dq_3_oe,
+  output        auto_qspi_ram_0_io_out_cs_0,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  qspi_ram_0_clock; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_reset; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_int_xing_out_sync_0; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_mem_xing_in_a_ready; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_mem_xing_in_a_valid; // @[SPI.scala 40:51]
+  wire [2:0] qspi_ram_0_auto_mem_xing_in_a_bits_opcode; // @[SPI.scala 40:51]
+  wire [2:0] qspi_ram_0_auto_mem_xing_in_a_bits_param; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_mem_xing_in_a_bits_size; // @[SPI.scala 40:51]
+  wire [10:0] qspi_ram_0_auto_mem_xing_in_a_bits_source; // @[SPI.scala 40:51]
+  wire [30:0] qspi_ram_0_auto_mem_xing_in_a_bits_address; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_mem_xing_in_a_bits_mask; // @[SPI.scala 40:51]
+  wire [7:0] qspi_ram_0_auto_mem_xing_in_a_bits_data; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_mem_xing_in_a_bits_corrupt; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_mem_xing_in_d_ready; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_mem_xing_in_d_valid; // @[SPI.scala 40:51]
+  wire [2:0] qspi_ram_0_auto_mem_xing_in_d_bits_opcode; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_mem_xing_in_d_bits_size; // @[SPI.scala 40:51]
+  wire [10:0] qspi_ram_0_auto_mem_xing_in_d_bits_source; // @[SPI.scala 40:51]
+  wire [7:0] qspi_ram_0_auto_mem_xing_in_d_bits_data; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_control_xing_in_a_ready; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_control_xing_in_a_valid; // @[SPI.scala 40:51]
+  wire [2:0] qspi_ram_0_auto_control_xing_in_a_bits_opcode; // @[SPI.scala 40:51]
+  wire [2:0] qspi_ram_0_auto_control_xing_in_a_bits_param; // @[SPI.scala 40:51]
+  wire [1:0] qspi_ram_0_auto_control_xing_in_a_bits_size; // @[SPI.scala 40:51]
+  wire [6:0] qspi_ram_0_auto_control_xing_in_a_bits_source; // @[SPI.scala 40:51]
+  wire [28:0] qspi_ram_0_auto_control_xing_in_a_bits_address; // @[SPI.scala 40:51]
+  wire [3:0] qspi_ram_0_auto_control_xing_in_a_bits_mask; // @[SPI.scala 40:51]
+  wire [31:0] qspi_ram_0_auto_control_xing_in_a_bits_data; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_control_xing_in_a_bits_corrupt; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_control_xing_in_d_ready; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_control_xing_in_d_valid; // @[SPI.scala 40:51]
+  wire [2:0] qspi_ram_0_auto_control_xing_in_d_bits_opcode; // @[SPI.scala 40:51]
+  wire [1:0] qspi_ram_0_auto_control_xing_in_d_bits_size; // @[SPI.scala 40:51]
+  wire [6:0] qspi_ram_0_auto_control_xing_in_d_bits_source; // @[SPI.scala 40:51]
+  wire [31:0] qspi_ram_0_auto_control_xing_in_d_bits_data; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_sck; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_0_i; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_0_o; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_0_oe; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_1_i; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_1_o; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_1_oe; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_2_i; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_2_o; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_2_oe; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_3_i; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_3_o; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_dq_3_oe; // @[SPI.scala 40:51]
+  wire  qspi_ram_0_auto_io_out_cs_0; // @[SPI.scala 40:51]
+  TLSPIRAM qspi_ram_0 ( // @[SPI.scala 40:51]
+    .clock(qspi_ram_0_clock),
+    .reset(qspi_ram_0_reset),
+    .auto_int_xing_out_sync_0(qspi_ram_0_auto_int_xing_out_sync_0),
+    .auto_mem_xing_in_a_ready(qspi_ram_0_auto_mem_xing_in_a_ready),
+    .auto_mem_xing_in_a_valid(qspi_ram_0_auto_mem_xing_in_a_valid),
+    .auto_mem_xing_in_a_bits_opcode(qspi_ram_0_auto_mem_xing_in_a_bits_opcode),
+    .auto_mem_xing_in_a_bits_param(qspi_ram_0_auto_mem_xing_in_a_bits_param),
+    .auto_mem_xing_in_a_bits_size(qspi_ram_0_auto_mem_xing_in_a_bits_size),
+    .auto_mem_xing_in_a_bits_source(qspi_ram_0_auto_mem_xing_in_a_bits_source),
+    .auto_mem_xing_in_a_bits_address(qspi_ram_0_auto_mem_xing_in_a_bits_address),
+    .auto_mem_xing_in_a_bits_mask(qspi_ram_0_auto_mem_xing_in_a_bits_mask),
+    .auto_mem_xing_in_a_bits_data(qspi_ram_0_auto_mem_xing_in_a_bits_data),
+    .auto_mem_xing_in_a_bits_corrupt(qspi_ram_0_auto_mem_xing_in_a_bits_corrupt),
+    .auto_mem_xing_in_d_ready(qspi_ram_0_auto_mem_xing_in_d_ready),
+    .auto_mem_xing_in_d_valid(qspi_ram_0_auto_mem_xing_in_d_valid),
+    .auto_mem_xing_in_d_bits_opcode(qspi_ram_0_auto_mem_xing_in_d_bits_opcode),
+    .auto_mem_xing_in_d_bits_size(qspi_ram_0_auto_mem_xing_in_d_bits_size),
+    .auto_mem_xing_in_d_bits_source(qspi_ram_0_auto_mem_xing_in_d_bits_source),
+    .auto_mem_xing_in_d_bits_data(qspi_ram_0_auto_mem_xing_in_d_bits_data),
+    .auto_control_xing_in_a_ready(qspi_ram_0_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(qspi_ram_0_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(qspi_ram_0_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(qspi_ram_0_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(qspi_ram_0_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(qspi_ram_0_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(qspi_ram_0_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(qspi_ram_0_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(qspi_ram_0_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(qspi_ram_0_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(qspi_ram_0_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(qspi_ram_0_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(qspi_ram_0_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(qspi_ram_0_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(qspi_ram_0_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(qspi_ram_0_auto_control_xing_in_d_bits_data),
+    .auto_io_out_sck(qspi_ram_0_auto_io_out_sck),
+    .auto_io_out_dq_0_i(qspi_ram_0_auto_io_out_dq_0_i),
+    .auto_io_out_dq_0_o(qspi_ram_0_auto_io_out_dq_0_o),
+    .auto_io_out_dq_0_oe(qspi_ram_0_auto_io_out_dq_0_oe),
+    .auto_io_out_dq_1_i(qspi_ram_0_auto_io_out_dq_1_i),
+    .auto_io_out_dq_1_o(qspi_ram_0_auto_io_out_dq_1_o),
+    .auto_io_out_dq_1_oe(qspi_ram_0_auto_io_out_dq_1_oe),
+    .auto_io_out_dq_2_i(qspi_ram_0_auto_io_out_dq_2_i),
+    .auto_io_out_dq_2_o(qspi_ram_0_auto_io_out_dq_2_o),
+    .auto_io_out_dq_2_oe(qspi_ram_0_auto_io_out_dq_2_oe),
+    .auto_io_out_dq_3_i(qspi_ram_0_auto_io_out_dq_3_i),
+    .auto_io_out_dq_3_o(qspi_ram_0_auto_io_out_dq_3_o),
+    .auto_io_out_dq_3_oe(qspi_ram_0_auto_io_out_dq_3_oe),
+    .auto_io_out_cs_0(qspi_ram_0_auto_io_out_cs_0)
+  );
+  assign auto_qspi_ram_0_int_xing_out_sync_0 = qspi_ram_0_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_mem_xing_in_a_ready = qspi_ram_0_auto_mem_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_mem_xing_in_d_valid = qspi_ram_0_auto_mem_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_mem_xing_in_d_bits_opcode = qspi_ram_0_auto_mem_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_mem_xing_in_d_bits_size = qspi_ram_0_auto_mem_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_mem_xing_in_d_bits_source = qspi_ram_0_auto_mem_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_mem_xing_in_d_bits_data = qspi_ram_0_auto_mem_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_control_xing_in_a_ready = qspi_ram_0_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_control_xing_in_d_valid = qspi_ram_0_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_control_xing_in_d_bits_opcode = qspi_ram_0_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_control_xing_in_d_bits_size = qspi_ram_0_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_control_xing_in_d_bits_source = qspi_ram_0_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_control_xing_in_d_bits_data = qspi_ram_0_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_qspi_ram_0_io_out_sck = qspi_ram_0_auto_io_out_sck; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_dq_0_o = qspi_ram_0_auto_io_out_dq_0_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_dq_0_oe = qspi_ram_0_auto_io_out_dq_0_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_dq_1_o = qspi_ram_0_auto_io_out_dq_1_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_dq_1_oe = qspi_ram_0_auto_io_out_dq_1_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_dq_2_o = qspi_ram_0_auto_io_out_dq_2_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_dq_2_oe = qspi_ram_0_auto_io_out_dq_2_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_dq_3_o = qspi_ram_0_auto_io_out_dq_3_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_dq_3_oe = qspi_ram_0_auto_io_out_dq_3_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_ram_0_io_out_cs_0 = qspi_ram_0_auto_io_out_cs_0; // @[LazyModule.scala 311:12]
+  assign qspi_ram_0_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign qspi_ram_0_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_valid = auto_qspi_ram_0_mem_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_bits_opcode = auto_qspi_ram_0_mem_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_bits_param = auto_qspi_ram_0_mem_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_bits_size = auto_qspi_ram_0_mem_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_bits_source = auto_qspi_ram_0_mem_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_bits_address = auto_qspi_ram_0_mem_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_bits_mask = auto_qspi_ram_0_mem_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_bits_data = auto_qspi_ram_0_mem_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_a_bits_corrupt = auto_qspi_ram_0_mem_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_mem_xing_in_d_ready = auto_qspi_ram_0_mem_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_valid = auto_qspi_ram_0_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_bits_opcode = auto_qspi_ram_0_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_bits_param = auto_qspi_ram_0_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_bits_size = auto_qspi_ram_0_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_bits_source = auto_qspi_ram_0_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_bits_address = auto_qspi_ram_0_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_bits_mask = auto_qspi_ram_0_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_bits_data = auto_qspi_ram_0_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_a_bits_corrupt = auto_qspi_ram_0_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_control_xing_in_d_ready = auto_qspi_ram_0_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign qspi_ram_0_auto_io_out_dq_0_i = auto_qspi_ram_0_io_out_dq_0_i; // @[LazyModule.scala 311:12]
+  assign qspi_ram_0_auto_io_out_dq_1_i = auto_qspi_ram_0_io_out_dq_1_i; // @[LazyModule.scala 311:12]
+  assign qspi_ram_0_auto_io_out_dq_2_i = auto_qspi_ram_0_io_out_dq_2_i; // @[LazyModule.scala 311:12]
+  assign qspi_ram_0_auto_io_out_dq_3_i = auto_qspi_ram_0_io_out_dq_3_i; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_65(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10024000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SPIPhysical_2(
+  input         clock,
+  input         reset,
+  output        io_port_sck,
+  input         io_port_dq_0_i,
+  output        io_port_dq_0_o,
+  output        io_port_dq_0_oe,
+  input         io_port_dq_1_i,
+  output        io_port_dq_1_o,
+  output        io_port_dq_1_oe,
+  input         io_port_dq_2_i,
+  output        io_port_dq_2_o,
+  output        io_port_dq_2_oe,
+  input         io_port_dq_3_i,
+  output        io_port_dq_3_o,
+  output        io_port_dq_3_oe,
+  input  [11:0] io_ctrl_sck_div,
+  input         io_ctrl_sck_pol,
+  input         io_ctrl_sck_pha,
+  input  [1:0]  io_ctrl_fmt_proto,
+  input         io_ctrl_fmt_endian,
+  input         io_ctrl_fmt_iodir,
+  input  [11:0] io_ctrl_extradel_coarse,
+  input  [4:0]  io_ctrl_sampledel_sd,
+  output        io_op_ready,
+  input         io_op_valid,
+  input         io_op_bits_fn,
+  input         io_op_bits_stb,
+  input  [7:0]  io_op_bits_cnt,
+  input  [7:0]  io_op_bits_data,
+  output        io_rx_valid,
+  output [7:0]  io_rx_bits
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+`endif // RANDOMIZE_REG_INIT
+  reg [11:0] ctrl_sck_div; // @[SPIPhysical.scala 52:17]
+  reg  ctrl_sck_pol; // @[SPIPhysical.scala 52:17]
+  reg  ctrl_sck_pha; // @[SPIPhysical.scala 52:17]
+  reg [1:0] ctrl_fmt_proto; // @[SPIPhysical.scala 52:17]
+  reg  ctrl_fmt_endian; // @[SPIPhysical.scala 52:17]
+  reg  ctrl_fmt_iodir; // @[SPIPhysical.scala 52:17]
+  wire  proto_0 = 2'h0 == ctrl_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  proto_1 = 2'h1 == ctrl_fmt_proto; // @[SPIConsts.scala 13:48]
+  wire  proto_2 = 2'h2 == ctrl_fmt_proto; // @[SPIConsts.scala 13:48]
+  reg  setup_d; // @[SPIPhysical.scala 60:20]
+  reg [7:0] scnt; // @[SPIPhysical.scala 62:17]
+  reg [11:0] tcnt; // @[SPIPhysical.scala 63:17]
+  wire  stop = scnt == 8'h0; // @[SPIPhysical.scala 65:20]
+  wire  beat = tcnt == 12'h0; // @[SPIPhysical.scala 66:20]
+  wire [11:0] _GEN_78 = {{7'd0}, io_ctrl_sampledel_sd}; // @[SPIPhysical.scala 69:49]
+  wire [11:0] totalCoarseDel = io_ctrl_extradel_coarse + _GEN_78; // @[SPIPhysical.scala 69:49]
+  reg  sample_d; // @[SPIPhysical.scala 70:25]
+  reg [11:0] del_cntr; // @[SPIPhysical.scala 71:25]
+  reg  xfr; // @[SPIPhysical.scala 182:16]
+  reg  cref; // @[SPIPhysical.scala 117:17]
+  wire  _GEN_10 = xfr & cref; // @[SPIPhysical.scala 190:18 192:16]
+  wire  _GEN_15 = beat & _GEN_10; // @[SPIPhysical.scala 188:17]
+  wire  sample = stop ? 1'h0 : _GEN_15; // @[SPIPhysical.scala 184:15]
+  wire [11:0] _del_cntr_T_1 = totalCoarseDel - 12'h1; // @[SPIPhysical.scala 75:34]
+  wire [11:0] _del_cntr_T_3 = del_cntr - 12'h1; // @[SPIPhysical.scala 82:28]
+  wire  _T_3 = del_cntr == 12'h1; // @[SPIPhysical.scala 86:18]
+  reg  last_d; // @[SPIPhysical.scala 92:23]
+  reg [11:0] del_cntr_last; // @[SPIPhysical.scala 93:30]
+  wire  last = scnt == 8'h1 & (beat & cref & xfr); // @[SPIPhysical.scala 201:27 202:10]
+  wire [11:0] _del_cntr_last_T_3 = del_cntr_last - 12'h1; // @[SPIPhysical.scala 103:38]
+  wire  _T_7 = del_cntr_last == 12'h1; // @[SPIPhysical.scala 107:23]
+  wire [11:0] _decr_T = beat ? {{4'd0}, scnt} : tcnt; // @[SPIPhysical.scala 112:17]
+  wire [11:0] decr = _decr_T - 12'h1; // @[SPIPhysical.scala 112:36]
+  wire  sched = stop | beat; // @[SPIPhysical.scala 184:15 185:11]
+  reg  sck; // @[SPIPhysical.scala 116:16]
+  wire  cinv = ctrl_sck_pha ^ ctrl_sck_pol; // @[SPIPhysical.scala 118:27]
+  wire [3:0] rxd = {io_port_dq_3_i,io_port_dq_2_i,io_port_dq_1_i,io_port_dq_0_i}; // @[Cat.scala 31:58]
+  wire  rxd_delayed_0 = rxd[0]; // @[SPIPhysical.scala 135:24]
+  wire  rxd_delayed_1 = rxd[1]; // @[SPIPhysical.scala 135:24]
+  wire  rxd_delayed_2 = rxd[2]; // @[SPIPhysical.scala 135:24]
+  wire  rxd_delayed_3 = rxd[3]; // @[SPIPhysical.scala 135:24]
+  wire [3:0] rxd_fin = {rxd_delayed_3,rxd_delayed_2,rxd_delayed_1,rxd_delayed_0}; // @[SPIPhysical.scala 138:29]
+  wire  samples_0 = rxd_fin[1]; // @[SPIPhysical.scala 139:28]
+  wire [1:0] samples_1 = rxd_fin[1:0]; // @[SPIPhysical.scala 139:40]
+  reg [7:0] buffer; // @[SPIPhysical.scala 141:19]
+  wire [7:0] _buffer_in_T_9 = {io_op_bits_data[0],io_op_bits_data[1],io_op_bits_data[2],io_op_bits_data[3],
+    io_op_bits_data[4],io_op_bits_data[5],io_op_bits_data[6],io_op_bits_data[7]}; // @[Cat.scala 31:58]
+  wire [7:0] buffer_in = ~io_ctrl_fmt_endian ? io_op_bits_data : _buffer_in_T_9; // @[SPIPhysical.scala 121:8]
+  wire  shift = totalCoarseDel > 12'h0 ? setup_d | sample_d & stop : sample_d; // @[SPIPhysical.scala 143:19]
+  wire [6:0] _buffer_T_2 = shift ? buffer[6:0] : buffer[7:1]; // @[SPIPhysical.scala 147:12]
+  wire  _buffer_T_4 = sample_d ? samples_0 : buffer[0]; // @[SPIPhysical.scala 148:12]
+  wire [7:0] _buffer_T_5 = {_buffer_T_2,_buffer_T_4}; // @[Cat.scala 31:58]
+  wire [5:0] _buffer_T_8 = shift ? buffer[5:0] : buffer[7:2]; // @[SPIPhysical.scala 147:12]
+  wire [1:0] _buffer_T_10 = sample_d ? samples_1 : buffer[1:0]; // @[SPIPhysical.scala 148:12]
+  wire [7:0] _buffer_T_11 = {_buffer_T_8,_buffer_T_10}; // @[Cat.scala 31:58]
+  wire [3:0] _buffer_T_14 = shift ? buffer[3:0] : buffer[7:4]; // @[SPIPhysical.scala 147:12]
+  wire [3:0] _buffer_T_16 = sample_d ? rxd_fin : buffer[3:0]; // @[SPIPhysical.scala 148:12]
+  wire [7:0] _buffer_T_17 = {_buffer_T_14,_buffer_T_16}; // @[Cat.scala 31:58]
+  wire [7:0] _buffer_T_18 = proto_0 ? _buffer_T_5 : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _buffer_T_19 = proto_1 ? _buffer_T_11 : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _buffer_T_20 = proto_2 ? _buffer_T_17 : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _buffer_T_21 = _buffer_T_18 | _buffer_T_19; // @[Mux.scala 27:73]
+  wire [7:0] _buffer_T_22 = _buffer_T_21 | _buffer_T_20; // @[Mux.scala 27:73]
+  reg [3:0] txd; // @[SPIPhysical.scala 153:16]
+  wire  _T_18 = ~cref; // @[SPIPhysical.scala 203:19]
+  wire  _GEN_25 = beat & ~cref | stop; // @[SPIPhysical.scala 203:26 204:14]
+  wire  accept = scnt == 8'h1 ? _GEN_25 : stop; // @[SPIPhysical.scala 201:27]
+  wire [3:0] txd_in = accept ? buffer_in[7:4] : buffer[7:4]; // @[SPIPhysical.scala 154:19]
+  wire [1:0] _txd_sel_T = accept ? io_ctrl_fmt_proto : ctrl_fmt_proto; // @[SPIPhysical.scala 155:39]
+  wire  txd_sel_0 = 2'h0 == _txd_sel_T; // @[SPIConsts.scala 13:48]
+  wire  txd_sel_1 = 2'h1 == _txd_sel_T; // @[SPIConsts.scala 13:48]
+  wire  txd_sel_2 = 2'h2 == _txd_sel_T; // @[SPIConsts.scala 13:48]
+  wire  txd_shf_0 = txd_in[3]; // @[SPIPhysical.scala 156:55]
+  wire [1:0] txd_shf_1 = txd_in[3:2]; // @[SPIPhysical.scala 156:55]
+  wire  _txd_T = txd_sel_0 & txd_shf_0; // @[Mux.scala 27:73]
+  wire [1:0] _txd_T_1 = txd_sel_1 ? txd_shf_1 : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _txd_T_2 = txd_sel_2 ? txd_in : 4'h0; // @[Mux.scala 27:73]
+  wire [1:0] _GEN_79 = {{1'd0}, _txd_T}; // @[Mux.scala 27:73]
+  wire [1:0] _txd_T_3 = _GEN_79 | _txd_T_1; // @[Mux.scala 27:73]
+  wire [3:0] _GEN_80 = {{2'd0}, _txd_T_3}; // @[Mux.scala 27:73]
+  wire [3:0] _txd_T_4 = _GEN_80 | _txd_T_2; // @[Mux.scala 27:73]
+  reg  done; // @[SPIPhysical.scala 176:17]
+  wire  _T_21 = ~io_op_bits_fn; // @[SPIPhysical.scala 220:22]
+  wire  _GEN_11 = xfr & _T_18; // @[SPIPhysical.scala 190:18 193:15]
+  wire  _GEN_16 = beat & _GEN_11; // @[SPIPhysical.scala 188:17]
+  wire  _GEN_23 = stop ? 1'h0 : _GEN_16; // @[SPIPhysical.scala 184:15]
+  wire  _GEN_26 = beat & ~cref ? 1'h0 : _GEN_23; // @[SPIPhysical.scala 203:26 205:13]
+  wire  _GEN_30 = scnt == 8'h1 ? _GEN_26 : _GEN_23; // @[SPIPhysical.scala 201:27]
+  wire  _GEN_45 = ~io_op_bits_fn | _GEN_30; // @[SPIPhysical.scala 220:22 224:17]
+  wire  _GEN_59 = io_op_valid ? _GEN_45 : _GEN_30; // @[SPIPhysical.scala 212:24]
+  wire  setup = accept & done ? _GEN_59 : _GEN_30; // @[SPIPhysical.scala 210:25]
+  wire  txen_2 = proto_2 & ctrl_fmt_iodir; // @[SPIPhysical.scala 162:49]
+  wire  txen_1 = proto_1 & ctrl_fmt_iodir | txen_2; // @[SPIPhysical.scala 162:82]
+  wire [7:0] _io_rx_bits_T_9 = {buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5],buffer[6],buffer[7]}; // @[Cat.scala 31:58]
+  wire  _GEN_9 = xfr ? cref ^ cinv : sck; // @[SPIPhysical.scala 190:18 191:13 116:16]
+  wire [11:0] _GEN_12 = _T_18 ? decr : {{4'd0}, scnt}; // @[SPIPhysical.scala 195:20 196:14 62:17]
+  wire  _GEN_13 = beat ? _T_18 : cref; // @[SPIPhysical.scala 188:17 189:12 117:17]
+  wire  _GEN_14 = beat ? _GEN_9 : sck; // @[SPIPhysical.scala 116:16 188:17]
+  wire [11:0] _GEN_17 = beat ? _GEN_12 : {{4'd0}, scnt}; // @[SPIPhysical.scala 188:17 62:17]
+  wire  _GEN_20 = stop ? cref : _GEN_13; // @[SPIPhysical.scala 184:15 117:17]
+  wire  _GEN_21 = stop ? sck : _GEN_14; // @[SPIPhysical.scala 184:15 116:16]
+  wire [11:0] _GEN_24 = stop ? {{4'd0}, scnt} : _GEN_17; // @[SPIPhysical.scala 184:15 62:17]
+  wire  _GEN_27 = beat & ~cref ? ctrl_sck_pol : _GEN_21; // @[SPIPhysical.scala 203:26 206:11]
+  wire  _GEN_31 = scnt == 8'h1 ? _GEN_27 : _GEN_21; // @[SPIPhysical.scala 201:27]
+  wire  _GEN_35 = io_op_bits_stb ? io_ctrl_sck_pol : _GEN_31; // @[SPIPhysical.scala 229:25 230:17]
+  wire [11:0] _GEN_36 = io_op_bits_stb ? io_ctrl_sck_div : ctrl_sck_div; // @[SPIPhysical.scala 229:25 231:22 52:17]
+  wire  _GEN_37 = io_op_bits_stb ? io_ctrl_sck_pol : ctrl_sck_pol; // @[SPIPhysical.scala 229:25 231:22 52:17]
+  wire  _GEN_38 = io_op_bits_stb ? io_ctrl_sck_pha : ctrl_sck_pha; // @[SPIPhysical.scala 229:25 231:22 52:17]
+  wire  _GEN_46 = ~io_op_bits_fn ? io_op_bits_cnt == 8'h0 : done | last_d; // @[SPIPhysical.scala 220:22 225:16 177:8]
+  wire [11:0] _GEN_51 = io_op_valid ? {{4'd0}, io_op_bits_cnt} : _GEN_24; // @[SPIPhysical.scala 212:24 213:12]
+  wire  _GEN_60 = io_op_valid ? _GEN_46 : done | last_d; // @[SPIPhysical.scala 212:24 177:8]
+  wire [11:0] _GEN_65 = accept & done ? _GEN_51 : _GEN_24; // @[SPIPhysical.scala 210:25]
+  wire  _GEN_74 = accept & done ? _GEN_60 : done | last_d; // @[SPIPhysical.scala 210:25 177:8]
+  assign io_port_sck = sck; // @[SPIPhysical.scala 166:15]
+  assign io_port_dq_0_o = txd[0]; // @[SPIPhysical.scala 168:24]
+  assign io_port_dq_0_oe = proto_0 | txen_1; // @[SPIPhysical.scala 162:82]
+  assign io_port_dq_1_o = txd[1]; // @[SPIPhysical.scala 168:24]
+  assign io_port_dq_1_oe = proto_1 & ctrl_fmt_iodir | txen_2; // @[SPIPhysical.scala 162:82]
+  assign io_port_dq_2_o = txd[2]; // @[SPIPhysical.scala 168:24]
+  assign io_port_dq_2_oe = proto_2 & ctrl_fmt_iodir; // @[SPIPhysical.scala 162:49]
+  assign io_port_dq_3_o = txd[3]; // @[SPIPhysical.scala 168:24]
+  assign io_port_dq_3_oe = proto_2 & ctrl_fmt_iodir; // @[SPIPhysical.scala 162:49]
+  assign io_op_ready = accept & done; // @[SPIPhysical.scala 210:16]
+  assign io_rx_valid = done; // @[SPIPhysical.scala 179:15]
+  assign io_rx_bits = ~ctrl_fmt_endian ? buffer : _io_rx_bits_T_9; // @[SPIPhysical.scala 121:8]
+  always @(posedge clock) begin
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (!(~io_op_bits_fn)) begin // @[SPIPhysical.scala 220:22]
+          if (io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+            ctrl_sck_div <= _GEN_36;
+          end
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (!(~io_op_bits_fn)) begin // @[SPIPhysical.scala 220:22]
+          if (io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+            ctrl_sck_pol <= _GEN_37;
+          end
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (!(~io_op_bits_fn)) begin // @[SPIPhysical.scala 220:22]
+          if (io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+            ctrl_sck_pha <= _GEN_38;
+          end
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (io_op_bits_stb) begin // @[SPIPhysical.scala 215:21]
+          ctrl_fmt_proto <= io_ctrl_fmt_proto; // @[SPIPhysical.scala 216:18]
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (io_op_bits_stb) begin // @[SPIPhysical.scala 215:21]
+          ctrl_fmt_endian <= io_ctrl_fmt_endian; // @[SPIPhysical.scala 216:18]
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (io_op_bits_stb) begin // @[SPIPhysical.scala 215:21]
+          ctrl_fmt_iodir <= io_ctrl_fmt_iodir; // @[SPIPhysical.scala 216:18]
+        end
+      end
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        setup_d <= _GEN_45;
+      end else begin
+        setup_d <= _GEN_30;
+      end
+    end else begin
+      setup_d <= _GEN_30;
+    end
+    if (reset) begin // @[SPIPhysical.scala 62:17]
+      scnt <= 8'h0; // @[SPIPhysical.scala 62:17]
+    end else begin
+      scnt <= _GEN_65[7:0];
+    end
+    if (sched) begin // @[SPIPhysical.scala 114:14]
+      tcnt <= ctrl_sck_div;
+    end else begin
+      tcnt <= decr;
+    end
+    if (reset) begin // @[SPIPhysical.scala 70:25]
+      sample_d <= 1'h0; // @[SPIPhysical.scala 70:25]
+    end else begin
+      sample_d <= _T_3;
+    end
+    if (reset) begin // @[SPIPhysical.scala 71:25]
+      del_cntr <= 12'h3; // @[SPIPhysical.scala 71:25]
+    end else if (beat & sample) begin // @[SPIPhysical.scala 73:25]
+      if (totalCoarseDel > 12'h1) begin // @[SPIPhysical.scala 74:32]
+        del_cntr <= _del_cntr_T_1; // @[SPIPhysical.scala 75:16]
+      end else begin
+        del_cntr <= 12'h1; // @[SPIPhysical.scala 78:16]
+      end
+    end else if (del_cntr != 12'h0) begin // @[SPIPhysical.scala 81:27]
+      del_cntr <= _del_cntr_T_3; // @[SPIPhysical.scala 82:16]
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        xfr <= _T_21;
+      end
+    end
+    cref <= reset | _GEN_20; // @[SPIPhysical.scala 117:{17,17}]
+    if (reset) begin // @[SPIPhysical.scala 92:23]
+      last_d <= 1'h0; // @[SPIPhysical.scala 92:23]
+    end else begin
+      last_d <= _T_7;
+    end
+    if (reset) begin // @[SPIPhysical.scala 93:30]
+      del_cntr_last <= 12'h3; // @[SPIPhysical.scala 93:30]
+    end else if (beat & last) begin // @[SPIPhysical.scala 94:23]
+      if (totalCoarseDel > 12'h1) begin // @[SPIPhysical.scala 74:32]
+        del_cntr_last <= _del_cntr_T_1; // @[SPIPhysical.scala 75:16]
+      end else begin
+        del_cntr_last <= 12'h1; // @[SPIPhysical.scala 78:16]
+      end
+    end else if (del_cntr_last != 12'h0) begin // @[SPIPhysical.scala 102:33]
+      del_cntr_last <= _del_cntr_last_T_3; // @[SPIPhysical.scala 103:21]
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (~io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+          sck <= cinv; // @[SPIPhysical.scala 223:15]
+        end else if (io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+          sck <= _GEN_35;
+        end else begin
+          sck <= _GEN_31;
+        end
+      end else begin
+        sck <= _GEN_31;
+      end
+    end else begin
+      sck <= _GEN_31;
+    end
+    if (accept & done) begin // @[SPIPhysical.scala 210:25]
+      if (io_op_valid) begin // @[SPIPhysical.scala 212:24]
+        if (~io_op_bits_fn) begin // @[SPIPhysical.scala 220:22]
+          if (~io_ctrl_fmt_endian) begin // @[SPIPhysical.scala 121:8]
+            buffer <= io_op_bits_data;
+          end else begin
+            buffer <= _buffer_in_T_9;
+          end
+        end else begin
+          buffer <= _buffer_T_22; // @[SPIPhysical.scala 144:10]
+        end
+      end else begin
+        buffer <= _buffer_T_22; // @[SPIPhysical.scala 144:10]
+      end
+    end else begin
+      buffer <= _buffer_T_22; // @[SPIPhysical.scala 144:10]
+    end
+    if (reset) begin // @[SPIPhysical.scala 153:16]
+      txd <= 4'h0; // @[SPIPhysical.scala 153:16]
+    end else if (setup) begin // @[SPIPhysical.scala 157:16]
+      txd <= _txd_T_4; // @[SPIPhysical.scala 158:9]
+    end
+    done <= reset | _GEN_74; // @[SPIPhysical.scala 176:{17,17}]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ctrl_sck_div = _RAND_0[11:0];
+  _RAND_1 = {1{`RANDOM}};
+  ctrl_sck_pol = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ctrl_sck_pha = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  ctrl_fmt_proto = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  ctrl_fmt_endian = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  ctrl_fmt_iodir = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  setup_d = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  scnt = _RAND_7[7:0];
+  _RAND_8 = {1{`RANDOM}};
+  tcnt = _RAND_8[11:0];
+  _RAND_9 = {1{`RANDOM}};
+  sample_d = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  del_cntr = _RAND_10[11:0];
+  _RAND_11 = {1{`RANDOM}};
+  xfr = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  cref = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  last_d = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  del_cntr_last = _RAND_14[11:0];
+  _RAND_15 = {1{`RANDOM}};
+  sck = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  buffer = _RAND_16[7:0];
+  _RAND_17 = {1{`RANDOM}};
+  txd = _RAND_17[3:0];
+  _RAND_18 = {1{`RANDOM}};
+  done = _RAND_18[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SPIMedia_2(
+  input         clock,
+  input         reset,
+  output        io_port_sck,
+  input         io_port_dq_0_i,
+  output        io_port_dq_0_o,
+  output        io_port_dq_0_oe,
+  input         io_port_dq_1_i,
+  output        io_port_dq_1_o,
+  output        io_port_dq_1_oe,
+  input         io_port_dq_2_i,
+  output        io_port_dq_2_o,
+  output        io_port_dq_2_oe,
+  input         io_port_dq_3_i,
+  output        io_port_dq_3_o,
+  output        io_port_dq_3_oe,
+  output        io_port_cs_0,
+  output        io_port_cs_1,
+  input  [11:0] io_ctrl_sck_div,
+  input         io_ctrl_sck_pol,
+  input         io_ctrl_sck_pha,
+  input  [7:0]  io_ctrl_dla_cssck,
+  input  [7:0]  io_ctrl_dla_sckcs,
+  input  [7:0]  io_ctrl_dla_intercs,
+  input  [7:0]  io_ctrl_dla_interxfr,
+  input         io_ctrl_cs_id,
+  input         io_ctrl_cs_dflt_0,
+  input         io_ctrl_cs_dflt_1,
+  input  [11:0] io_ctrl_extradel_coarse,
+  input  [4:0]  io_ctrl_sampledel_sd,
+  output        io_link_tx_ready,
+  input         io_link_tx_valid,
+  input  [7:0]  io_link_tx_bits,
+  output        io_link_rx_valid,
+  output [7:0]  io_link_rx_bits,
+  input  [7:0]  io_link_cnt,
+  input  [1:0]  io_link_fmt_proto,
+  input         io_link_fmt_endian,
+  input         io_link_fmt_iodir,
+  input         io_link_cs_set,
+  input         io_link_cs_clear
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+`endif // RANDOMIZE_REG_INIT
+  wire  phy_clock; // @[SPIMedia.scala 36:19]
+  wire  phy_reset; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_sck; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_0_i; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_0_o; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_0_oe; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_1_i; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_1_o; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_1_oe; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_2_i; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_2_o; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_2_oe; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_3_i; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_3_o; // @[SPIMedia.scala 36:19]
+  wire  phy_io_port_dq_3_oe; // @[SPIMedia.scala 36:19]
+  wire [11:0] phy_io_ctrl_sck_div; // @[SPIMedia.scala 36:19]
+  wire  phy_io_ctrl_sck_pol; // @[SPIMedia.scala 36:19]
+  wire  phy_io_ctrl_sck_pha; // @[SPIMedia.scala 36:19]
+  wire [1:0] phy_io_ctrl_fmt_proto; // @[SPIMedia.scala 36:19]
+  wire  phy_io_ctrl_fmt_endian; // @[SPIMedia.scala 36:19]
+  wire  phy_io_ctrl_fmt_iodir; // @[SPIMedia.scala 36:19]
+  wire [11:0] phy_io_ctrl_extradel_coarse; // @[SPIMedia.scala 36:19]
+  wire [4:0] phy_io_ctrl_sampledel_sd; // @[SPIMedia.scala 36:19]
+  wire  phy_io_op_ready; // @[SPIMedia.scala 36:19]
+  wire  phy_io_op_valid; // @[SPIMedia.scala 36:19]
+  wire  phy_io_op_bits_fn; // @[SPIMedia.scala 36:19]
+  wire  phy_io_op_bits_stb; // @[SPIMedia.scala 36:19]
+  wire [7:0] phy_io_op_bits_cnt; // @[SPIMedia.scala 36:19]
+  wire [7:0] phy_io_op_bits_data; // @[SPIMedia.scala 36:19]
+  wire  phy_io_rx_valid; // @[SPIMedia.scala 36:19]
+  wire [7:0] phy_io_rx_bits; // @[SPIMedia.scala 36:19]
+  reg  cs_id; // @[SPIMedia.scala 50:15]
+  reg  cs_dflt_0; // @[SPIMedia.scala 50:15]
+  reg  cs_dflt_1; // @[SPIMedia.scala 50:15]
+  reg  cs_set; // @[SPIMedia.scala 51:19]
+  wire [1:0] _GEN_4 = {{1'd0}, io_link_cs_set}; // @[SPIBundle.scala 49:19]
+  wire [1:0] cs_active_mask = _GEN_4 << io_ctrl_cs_id; // @[SPIBundle.scala 49:19]
+  wire [1:0] _cs_active_out_T = {io_ctrl_cs_dflt_1,io_ctrl_cs_dflt_0}; // @[Cat.scala 31:58]
+  wire [1:0] cs_active_out = _cs_active_out_T ^ cs_active_mask; // @[SPIBundle.scala 50:33]
+  wire  cs_active_0 = cs_active_out[0]; // @[SPIBundle.scala 51:32]
+  wire  cs_active_1 = cs_active_out[1]; // @[SPIBundle.scala 51:32]
+  wire [1:0] _cs_update_T = {cs_active_1,cs_active_0}; // @[SPIMedia.scala 53:30]
+  wire [1:0] _cs_update_T_1 = {cs_dflt_1,cs_dflt_0}; // @[SPIMedia.scala 53:49]
+  wire  cs_update = _cs_update_T != _cs_update_T_1; // @[SPIMedia.scala 53:37]
+  reg  clear; // @[SPIMedia.scala 55:18]
+  reg  cs_assert; // @[SPIMedia.scala 56:22]
+  wire  cs_deassert = clear | cs_update; // @[SPIMedia.scala 57:27]
+  wire  continuous = io_ctrl_dla_interxfr == 8'h0; // @[SPIMedia.scala 61:42]
+  reg [1:0] state; // @[SPIMedia.scala 72:18]
+  wire [1:0] _GEN_0 = phy_io_op_ready ? 2'h2 : state; // @[SPIMedia.scala 72:18 79:27 80:19]
+  wire  _T_1 = phy_io_op_ready & phy_io_op_valid; // @[Decoupled.scala 50:35]
+  wire [1:0] _GEN_1 = _T_1 ? 2'h1 : state; // @[SPIMedia.scala 72:18 88:28 89:19]
+  wire [7:0] _GEN_2 = cs_deassert ? io_ctrl_dla_sckcs : io_link_cnt; // @[SPIMedia.scala 46:15 77:28 78:23]
+  wire  _GEN_5 = cs_deassert ? 1'h0 : 1'h1; // @[SPIMedia.scala 45:15 77:28 84:23]
+  wire  _GEN_6 = cs_deassert | io_link_tx_valid; // @[SPIMedia.scala 43:12 77:28 86:20]
+  wire  _GEN_7 = cs_deassert ? 1'h0 : phy_io_op_ready; // @[SPIMedia.scala 68:20 77:28 87:28]
+  wire  _GEN_8 = phy_io_op_ready | cs_assert; // @[SPIMedia.scala 95:25 96:21 56:22]
+  wire [7:0] _GEN_12 = io_link_tx_valid ? io_ctrl_dla_cssck : 8'h0; // @[SPIMedia.scala 102:21 92:38 94:21]
+  wire  _GEN_17 = io_link_tx_valid ? 1'h0 : 1'h1; // @[SPIMedia.scala 45:15 103:21 92:38]
+  wire [7:0] _GEN_19 = cs_assert ? _GEN_2 : _GEN_12; // @[SPIMedia.scala 76:24]
+  wire  _GEN_21 = cs_assert ? cs_deassert : 1'h1; // @[SPIMedia.scala 44:14 76:24]
+  wire  _GEN_22 = cs_assert ? _GEN_5 : _GEN_17; // @[SPIMedia.scala 76:24]
+  wire  _GEN_23 = cs_assert ? _GEN_6 : 1'h1; // @[SPIMedia.scala 43:12 76:24]
+  wire  _GEN_24 = cs_assert & _GEN_7; // @[SPIMedia.scala 68:20 76:24]
+  wire [1:0] _GEN_35 = {{1'd0}, cs_set}; // @[SPIBundle.scala 49:19]
+  wire [1:0] mask = _GEN_35 << cs_id; // @[SPIBundle.scala 49:19]
+  wire [1:0] out = _cs_update_T_1 ^ mask; // @[SPIBundle.scala 50:33]
+  wire [1:0] _GEN_33 = phy_io_op_ready ? 2'h0 : state; // @[SPIMedia.scala 123:23 125:15 72:18]
+  wire [7:0] _GEN_34 = 2'h2 == state ? io_ctrl_dla_intercs : io_link_cnt; // @[SPIMedia.scala 74:18 119:19 46:15]
+  wire  _GEN_41 = 2'h1 == state ? ~continuous : 1'h1; // @[SPIMedia.scala 110:16 43:12 74:18]
+  wire [7:0] _GEN_42 = 2'h1 == state ? io_ctrl_dla_interxfr : _GEN_34; // @[SPIMedia.scala 74:18 111:19]
+  wire  _GEN_44 = 2'h1 == state ? 1'h0 : 2'h2 == state; // @[SPIMedia.scala 45:15 74:18]
+  SPIPhysical_2 phy ( // @[SPIMedia.scala 36:19]
+    .clock(phy_clock),
+    .reset(phy_reset),
+    .io_port_sck(phy_io_port_sck),
+    .io_port_dq_0_i(phy_io_port_dq_0_i),
+    .io_port_dq_0_o(phy_io_port_dq_0_o),
+    .io_port_dq_0_oe(phy_io_port_dq_0_oe),
+    .io_port_dq_1_i(phy_io_port_dq_1_i),
+    .io_port_dq_1_o(phy_io_port_dq_1_o),
+    .io_port_dq_1_oe(phy_io_port_dq_1_oe),
+    .io_port_dq_2_i(phy_io_port_dq_2_i),
+    .io_port_dq_2_o(phy_io_port_dq_2_o),
+    .io_port_dq_2_oe(phy_io_port_dq_2_oe),
+    .io_port_dq_3_i(phy_io_port_dq_3_i),
+    .io_port_dq_3_o(phy_io_port_dq_3_o),
+    .io_port_dq_3_oe(phy_io_port_dq_3_oe),
+    .io_ctrl_sck_div(phy_io_ctrl_sck_div),
+    .io_ctrl_sck_pol(phy_io_ctrl_sck_pol),
+    .io_ctrl_sck_pha(phy_io_ctrl_sck_pha),
+    .io_ctrl_fmt_proto(phy_io_ctrl_fmt_proto),
+    .io_ctrl_fmt_endian(phy_io_ctrl_fmt_endian),
+    .io_ctrl_fmt_iodir(phy_io_ctrl_fmt_iodir),
+    .io_ctrl_extradel_coarse(phy_io_ctrl_extradel_coarse),
+    .io_ctrl_sampledel_sd(phy_io_ctrl_sampledel_sd),
+    .io_op_ready(phy_io_op_ready),
+    .io_op_valid(phy_io_op_valid),
+    .io_op_bits_fn(phy_io_op_bits_fn),
+    .io_op_bits_stb(phy_io_op_bits_stb),
+    .io_op_bits_cnt(phy_io_op_bits_cnt),
+    .io_op_bits_data(phy_io_op_bits_data),
+    .io_rx_valid(phy_io_rx_valid),
+    .io_rx_bits(phy_io_rx_bits)
+  );
+  assign io_port_sck = phy_io_port_sck; // @[SPIMedia.scala 63:15]
+  assign io_port_dq_0_o = phy_io_port_dq_0_o; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_0_oe = phy_io_port_dq_0_oe; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_1_o = phy_io_port_dq_1_o; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_1_oe = phy_io_port_dq_1_oe; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_2_o = phy_io_port_dq_2_o; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_2_oe = phy_io_port_dq_2_oe; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_3_o = phy_io_port_dq_3_o; // @[SPIMedia.scala 64:14]
+  assign io_port_dq_3_oe = phy_io_port_dq_3_oe; // @[SPIMedia.scala 64:14]
+  assign io_port_cs_0 = cs_dflt_0; // @[SPIMedia.scala 65:14]
+  assign io_port_cs_1 = cs_dflt_1; // @[SPIMedia.scala 65:14]
+  assign io_link_tx_ready = 2'h0 == state & _GEN_24; // @[SPIMedia.scala 74:18 68:20]
+  assign io_link_rx_valid = phy_io_rx_valid; // @[SPIMedia.scala 67:14]
+  assign io_link_rx_bits = phy_io_rx_bits; // @[SPIMedia.scala 67:14]
+  assign phy_clock = clock;
+  assign phy_reset = reset;
+  assign phy_io_port_dq_0_i = io_port_dq_0_i; // @[SPIMedia.scala 64:14]
+  assign phy_io_port_dq_1_i = io_port_dq_1_i; // @[SPIMedia.scala 64:14]
+  assign phy_io_port_dq_2_i = io_port_dq_2_i; // @[SPIMedia.scala 64:14]
+  assign phy_io_port_dq_3_i = io_port_dq_3_i; // @[SPIMedia.scala 64:14]
+  assign phy_io_ctrl_sck_div = io_ctrl_sck_div; // @[SPIMedia.scala 37:19]
+  assign phy_io_ctrl_sck_pol = io_ctrl_sck_pol; // @[SPIMedia.scala 37:19]
+  assign phy_io_ctrl_sck_pha = io_ctrl_sck_pha; // @[SPIMedia.scala 37:19]
+  assign phy_io_ctrl_fmt_proto = io_link_fmt_proto; // @[SPIMedia.scala 38:19]
+  assign phy_io_ctrl_fmt_endian = io_link_fmt_endian; // @[SPIMedia.scala 38:19]
+  assign phy_io_ctrl_fmt_iodir = io_link_fmt_iodir; // @[SPIMedia.scala 38:19]
+  assign phy_io_ctrl_extradel_coarse = io_ctrl_extradel_coarse; // @[SPIMedia.scala 39:24]
+  assign phy_io_ctrl_sampledel_sd = io_ctrl_sampledel_sd; // @[SPIMedia.scala 40:25]
+  assign phy_io_op_valid = 2'h0 == state ? _GEN_23 : _GEN_41; // @[SPIMedia.scala 74:18]
+  assign phy_io_op_bits_fn = 2'h0 == state ? _GEN_21 : 1'h1; // @[SPIMedia.scala 44:14 74:18]
+  assign phy_io_op_bits_stb = 2'h0 == state ? _GEN_22 : _GEN_44; // @[SPIMedia.scala 74:18]
+  assign phy_io_op_bits_cnt = 2'h0 == state ? _GEN_19 : _GEN_42; // @[SPIMedia.scala 74:18]
+  assign phy_io_op_bits_data = io_link_tx_bits; // @[SPIMedia.scala 47:16]
+  always @(posedge clock) begin
+    if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (!(io_link_tx_valid)) begin // @[SPIMedia.scala 92:38]
+          cs_id <= io_ctrl_cs_id; // @[SPIMedia.scala 104:12]
+        end
+      end
+    end
+    if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (io_link_tx_valid) begin // @[SPIMedia.scala 92:38]
+          if (phy_io_op_ready) begin // @[SPIMedia.scala 95:25]
+            cs_dflt_0 <= cs_active_0; // @[SPIMedia.scala 98:19]
+          end
+        end else begin
+          cs_dflt_0 <= io_ctrl_cs_dflt_0; // @[SPIMedia.scala 104:12]
+        end
+      end
+    end else if (!(2'h1 == state)) begin // @[SPIMedia.scala 74:18]
+      if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+        if (phy_io_op_ready) begin // @[SPIMedia.scala 123:23]
+          cs_dflt_0 <= out[0]; // @[SPIMedia.scala 124:17]
+        end
+      end
+    end
+    if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (io_link_tx_valid) begin // @[SPIMedia.scala 92:38]
+          if (phy_io_op_ready) begin // @[SPIMedia.scala 95:25]
+            cs_dflt_1 <= cs_active_1; // @[SPIMedia.scala 98:19]
+          end
+        end else begin
+          cs_dflt_1 <= io_ctrl_cs_dflt_1; // @[SPIMedia.scala 104:12]
+        end
+      end
+    end else if (!(2'h1 == state)) begin // @[SPIMedia.scala 74:18]
+      if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+        if (phy_io_op_ready) begin // @[SPIMedia.scala 123:23]
+          cs_dflt_1 <= out[1]; // @[SPIMedia.scala 124:17]
+        end
+      end
+    end
+    if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (io_link_tx_valid) begin // @[SPIMedia.scala 92:38]
+          if (phy_io_op_ready) begin // @[SPIMedia.scala 95:25]
+            cs_set <= io_link_cs_set; // @[SPIMedia.scala 97:18]
+          end
+        end
+      end
+    end
+    if (reset) begin // @[SPIMedia.scala 55:18]
+      clear <= 1'h0; // @[SPIMedia.scala 55:18]
+    end else if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      clear <= clear | io_link_cs_clear & cs_assert; // @[SPIMedia.scala 59:9]
+    end else if (2'h1 == state) begin // @[SPIMedia.scala 74:18]
+      clear <= clear | io_link_cs_clear & cs_assert; // @[SPIMedia.scala 59:9]
+    end else if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+      clear <= 1'h0; // @[SPIMedia.scala 122:13]
+    end else begin
+      clear <= clear | io_link_cs_clear & cs_assert; // @[SPIMedia.scala 59:9]
+    end
+    if (reset) begin // @[SPIMedia.scala 56:22]
+      cs_assert <= 1'h0; // @[SPIMedia.scala 56:22]
+    end else if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (!(cs_assert)) begin // @[SPIMedia.scala 76:24]
+        if (io_link_tx_valid) begin // @[SPIMedia.scala 92:38]
+          cs_assert <= _GEN_8;
+        end
+      end
+    end else if (!(2'h1 == state)) begin // @[SPIMedia.scala 74:18]
+      if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+        cs_assert <= 1'h0; // @[SPIMedia.scala 121:17]
+      end
+    end
+    if (reset) begin // @[SPIMedia.scala 72:18]
+      state <= 2'h0; // @[SPIMedia.scala 72:18]
+    end else if (2'h0 == state) begin // @[SPIMedia.scala 74:18]
+      if (cs_assert) begin // @[SPIMedia.scala 76:24]
+        if (cs_deassert) begin // @[SPIMedia.scala 77:28]
+          state <= _GEN_0;
+        end else begin
+          state <= _GEN_1;
+        end
+      end
+    end else if (2'h1 == state) begin // @[SPIMedia.scala 74:18]
+      if (phy_io_op_ready | continuous) begin // @[SPIMedia.scala 112:37]
+        state <= 2'h0; // @[SPIMedia.scala 113:15]
+      end
+    end else if (2'h2 == state) begin // @[SPIMedia.scala 74:18]
+      state <= _GEN_33;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  cs_id = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  cs_dflt_0 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  cs_dflt_1 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  cs_set = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  clear = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  cs_assert = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  state = _RAND_6[1:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLSPI(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_sck,
+  input         auto_io_out_dq_0_i,
+  output        auto_io_out_dq_0_o,
+  output        auto_io_out_dq_0_oe,
+  input         auto_io_out_dq_1_i,
+  output        auto_io_out_dq_1_o,
+  output        auto_io_out_dq_1_oe,
+  input         auto_io_out_dq_2_i,
+  output        auto_io_out_dq_2_o,
+  output        auto_io_out_dq_2_oe,
+  input         auto_io_out_dq_3_i,
+  output        auto_io_out_dq_3_o,
+  output        auto_io_out_dq_3_oe,
+  output        auto_io_out_cs_0,
+  output        auto_io_out_cs_1
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  fifo_clock; // @[TLSPI.scala 69:20]
+  wire  fifo_reset; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_ctrl_fmt_proto; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ctrl_fmt_endian; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ctrl_fmt_iodir; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_fmt_len; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_ctrl_cs_mode; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_wm_tx; // @[TLSPI.scala 69:20]
+  wire [3:0] fifo_io_ctrl_wm_rx; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_tx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_tx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_tx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_rx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_rx_bits; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_link_cnt; // @[TLSPI.scala 69:20]
+  wire [1:0] fifo_io_link_fmt_proto; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_fmt_endian; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_fmt_iodir; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_cs_set; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_cs_clear; // @[TLSPI.scala 69:20]
+  wire  fifo_io_link_lock; // @[TLSPI.scala 69:20]
+  wire  fifo_io_tx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_tx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_tx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_rx_ready; // @[TLSPI.scala 69:20]
+  wire  fifo_io_rx_valid; // @[TLSPI.scala 69:20]
+  wire [7:0] fifo_io_rx_bits; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ip_txwm; // @[TLSPI.scala 69:20]
+  wire  fifo_io_ip_rxwm; // @[TLSPI.scala 69:20]
+  wire  mac_clock; // @[TLSPI.scala 70:19]
+  wire  mac_reset; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_sck; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_0_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_1_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_2_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_i; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_o; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_dq_3_oe; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_cs_0; // @[TLSPI.scala 70:19]
+  wire  mac_io_port_cs_1; // @[TLSPI.scala 70:19]
+  wire [11:0] mac_io_ctrl_sck_div; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_sck_pol; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_sck_pha; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_cssck; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_sckcs; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_intercs; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_ctrl_dla_interxfr; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_cs_id; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_cs_dflt_0; // @[TLSPI.scala 70:19]
+  wire  mac_io_ctrl_cs_dflt_1; // @[TLSPI.scala 70:19]
+  wire [11:0] mac_io_ctrl_extradel_coarse; // @[TLSPI.scala 70:19]
+  wire [4:0] mac_io_ctrl_sampledel_sd; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_tx_ready; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_tx_valid; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_tx_bits; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_rx_valid; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_rx_bits; // @[TLSPI.scala 70:19]
+  wire [7:0] mac_io_link_cnt; // @[TLSPI.scala 70:19]
+  wire [1:0] mac_io_link_fmt_proto; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_fmt_endian; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_fmt_iodir; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_cs_set; // @[TLSPI.scala 70:19]
+  wire  mac_io_link_cs_clear; // @[TLSPI.scala 70:19]
+  reg [1:0] ctrl_fmt_proto; // @[TLSPI.scala 68:17]
+  reg  ctrl_fmt_endian; // @[TLSPI.scala 68:17]
+  reg  ctrl_fmt_iodir; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_fmt_len; // @[TLSPI.scala 68:17]
+  reg [11:0] ctrl_sck_div; // @[TLSPI.scala 68:17]
+  reg  ctrl_sck_pol; // @[TLSPI.scala 68:17]
+  reg  ctrl_sck_pha; // @[TLSPI.scala 68:17]
+  reg  ctrl_cs_id; // @[TLSPI.scala 68:17]
+  reg  ctrl_cs_dflt_0; // @[TLSPI.scala 68:17]
+  reg  ctrl_cs_dflt_1; // @[TLSPI.scala 68:17]
+  reg [1:0] ctrl_cs_mode; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_cssck; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_sckcs; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_intercs; // @[TLSPI.scala 68:17]
+  reg [7:0] ctrl_dla_interxfr; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_wm_tx; // @[TLSPI.scala 68:17]
+  reg [3:0] ctrl_wm_rx; // @[TLSPI.scala 68:17]
+  reg [11:0] ctrl_extradel_coarse; // @[TLSPI.scala 68:17]
+  reg [4:0] ctrl_sampledel_sd; // @[TLSPI.scala 68:17]
+  reg  ie_txwm; // @[TLSPI.scala 82:15]
+  reg  ie_rxwm; // @[TLSPI.scala 82:15]
+  wire  _T = ~fifo_io_tx_ready; // @[RegMapFIFO.scala 25:9]
+  wire  _T_1 = ~fifo_io_rx_valid; // @[RegMapFIFO.scala 46:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3e0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[11:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [4:0] out_oindex = {in_bits_index[4],in_bits_index[3],in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [31:0] _out_frontSel_T = 32'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_wimask_1 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_5 = _out_frontSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_5 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1 = out_wivalid_1 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_1 = out_f_wivalid_1 ? bundleIn_0_a_bits_data[0] : ctrl_cs_dflt_0; // @[RegField.scala 74:{88,92} TLSPI.scala 68:17]
+  wire  out_wimask_2 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_2 = out_wivalid_1 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_2 = out_f_wivalid_2 ? bundleIn_0_a_bits_data[1] : ctrl_cs_dflt_1; // @[RegField.scala 74:{88,92} TLSPI.scala 68:17]
+  wire [1:0] out_prepend = {ctrl_cs_dflt_1,ctrl_cs_dflt_0}; // @[Cat.scala 31:58]
+  wire  out_rimask_3 = |out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_3 = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_3 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_3 = out_wivalid_3 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_4 = out_wivalid_3 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_1 = {{8'd0}, ctrl_dla_cssck}; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_1 = {ctrl_dla_sckcs,_out_prepend_T_1}; // @[Cat.scala 31:58]
+  wire  out_frontSel_14 = _out_frontSel_T[14]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_14 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_5 = out_wivalid_5 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_6 = &out_frontMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_20 = _out_frontSel_T[20]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_6 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_20 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_6 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_116 = fifo_io_ip_txwm; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_2 = {fifo_io_ip_rxwm,_out_T_116}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_9 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_3 = {ctrl_sck_pol,ctrl_sck_pha}; // @[Cat.scala 31:58]
+  wire  out_wimask_11 = &out_frontMask[1:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_11 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_11 = out_wivalid_11 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_28 = _out_frontSel_T[28]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_12 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_28 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_12 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_12 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_4 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  out_frontSel_21 = _out_frontSel_T[21]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_21 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_18 = _out_frontSel_T[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_15 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_18 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_15 = out_wivalid_15 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_17 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_17 = out_wivalid_15 & out_womask_17; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_17 & bundleIn_0_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [31:0] out_prepend_6 = {_T,31'h0}; // @[Cat.scala 31:58]
+  wire  out_frontSel_16 = _out_frontSel_T[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_18 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_16 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_18 = out_wivalid_18 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_19 = &out_frontMask[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_19 = out_wivalid_18 & out_wimask_19; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_20 = &out_frontMask[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_20 = out_wivalid_18 & out_wimask_20; // @[RegisterRouter.scala 83:24]
+  wire [3:0] out_prepend_8 = {ctrl_fmt_iodir,ctrl_fmt_endian,ctrl_fmt_proto}; // @[Cat.scala 31:58]
+  wire  out_wimask_21 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_21 = out_wivalid_18 & out_wimask_21; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_9 = {{12'd0}, out_prepend_8}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_9 = {ctrl_fmt_len,_out_prepend_T_9}; // @[Cat.scala 31:58]
+  wire  out_frontSel_11 = _out_frontSel_T[11]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_22 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_11 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_22 = out_wivalid_22 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_23 = out_wivalid_22 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_10 = {{8'd0}, ctrl_dla_intercs}; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_10 = {ctrl_dla_interxfr,_out_prepend_T_10}; // @[Cat.scala 31:58]
+  wire  out_frontSel_19 = _out_frontSel_T[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_24 = bundleIn_0_a_valid & bundleIn_0_d_ready & in_bits_read & out_frontSel_19 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_T_293 = fifo_io_rx_bits; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_11 = {1'h0,_out_T_293}; // @[Cat.scala 31:58]
+  wire [30:0] _out_T_302 = {{22'd0}, out_prepend_11}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_12 = {_T_1,_out_T_302}; // @[Cat.scala 31:58]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_27 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_27 = out_wivalid_27 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_28 = &out_frontMask[4:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_15 = _out_frontSel_T[15]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_28 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_15 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_28 = out_wivalid_28 & out_wimask_28; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_150 = 5'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_153 = 5'h4 == out_oindex ? _out_T : 5'h3 == out_oindex | (5'h2 == out_oindex | _GEN_150); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_154 = 5'h5 == out_oindex ? _out_T : _GEN_153; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_155 = 5'h6 == out_oindex ? _out_T : _GEN_154; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_159 = 5'ha == out_oindex ? _out_T : 5'h9 == out_oindex | (5'h8 == out_oindex | (5'h7 == out_oindex |
+    _GEN_155)); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_160 = 5'hb == out_oindex ? _out_T : _GEN_159; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_163 = 5'he == out_oindex ? _out_T : 5'hd == out_oindex | (5'hc == out_oindex | _GEN_160); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_164 = 5'hf == out_oindex ? _out_T : _GEN_163; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_165 = 5'h10 == out_oindex ? _out_T : _GEN_164; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_167 = 5'h12 == out_oindex ? _out_T : 5'h11 == out_oindex | _GEN_165; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_168 = 5'h13 == out_oindex ? _out_T : _GEN_167; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_169 = 5'h14 == out_oindex ? _out_T : _GEN_168; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_170 = 5'h15 == out_oindex ? _out_T : _GEN_169; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_177 = 5'h1c == out_oindex ? _out_T : 5'h1b == out_oindex | (5'h1a == out_oindex | (5'h19 == out_oindex | (5'h18
+     == out_oindex | (5'h17 == out_oindex | (5'h16 == out_oindex | _GEN_170))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_178 = 5'h1d == out_oindex ? _out_T : _GEN_177; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_180 = 5'h1f == out_oindex | (5'h1e == out_oindex | _GEN_178); // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_0 = {{20'd0}, ctrl_sck_div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _out_out_bits_data_WIRE_1_1 = {{30'd0}, out_prepend_3}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_182 = 5'h1 == out_oindex ? _out_out_bits_data_WIRE_1_1 : _out_out_bits_data_WIRE_1_0; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_183 = 5'h2 == out_oindex ? 32'h0 : _GEN_182; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_184 = 5'h3 == out_oindex ? 32'h0 : _GEN_183; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{31'd0}, ctrl_cs_id}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_185 = 5'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_184; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_5 = {{30'd0}, out_prepend}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_186 = 5'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_185; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{30'd0}, ctrl_cs_mode}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_187 = 5'h6 == out_oindex ? _out_out_bits_data_WIRE_1_6 : _GEN_186; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_188 = 5'h7 == out_oindex ? 32'h0 : _GEN_187; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_189 = 5'h8 == out_oindex ? 32'h0 : _GEN_188; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_190 = 5'h9 == out_oindex ? 32'h0 : _GEN_189; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_10 = {{8'd0}, out_prepend_1}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_191 = 5'ha == out_oindex ? _out_out_bits_data_WIRE_1_10 : _GEN_190; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_11 = {{8'd0}, out_prepend_10}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_192 = 5'hb == out_oindex ? _out_out_bits_data_WIRE_1_11 : _GEN_191; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_193 = 5'hc == out_oindex ? 32'h0 : _GEN_192; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_194 = 5'hd == out_oindex ? 32'h0 : _GEN_193; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_14 = {{20'd0}, ctrl_extradel_coarse}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_195 = 5'he == out_oindex ? _out_out_bits_data_WIRE_1_14 : _GEN_194; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_15 = {{27'd0}, ctrl_sampledel_sd}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_196 = 5'hf == out_oindex ? _out_out_bits_data_WIRE_1_15 : _GEN_195; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_16 = {{12'd0}, out_prepend_9}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_197 = 5'h10 == out_oindex ? _out_out_bits_data_WIRE_1_16 : _GEN_196; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_198 = 5'h11 == out_oindex ? 32'h0 : _GEN_197; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_199 = 5'h12 == out_oindex ? out_prepend_6 : _GEN_198; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_200 = 5'h13 == out_oindex ? out_prepend_12 : _GEN_199; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_20 = {{28'd0}, ctrl_wm_tx}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_201 = 5'h14 == out_oindex ? _out_out_bits_data_WIRE_1_20 : _GEN_200; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_21 = {{28'd0}, ctrl_wm_rx}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_202 = 5'h15 == out_oindex ? _out_out_bits_data_WIRE_1_21 : _GEN_201; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_203 = 5'h16 == out_oindex ? 32'h0 : _GEN_202; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_204 = 5'h17 == out_oindex ? 32'h0 : _GEN_203; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_205 = 5'h18 == out_oindex ? 32'h0 : _GEN_204; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_206 = 5'h19 == out_oindex ? 32'h0 : _GEN_205; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_207 = 5'h1a == out_oindex ? 32'h0 : _GEN_206; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_208 = 5'h1b == out_oindex ? 32'h0 : _GEN_207; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_28 = {{30'd0}, out_prepend_4}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_209 = 5'h1c == out_oindex ? _out_out_bits_data_WIRE_1_28 : _GEN_208; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_29 = {{30'd0}, out_prepend_2}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_210 = 5'h1d == out_oindex ? _out_out_bits_data_WIRE_1_29 : _GEN_209; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_211 = 5'h1e == out_oindex ? 32'h0 : _GEN_210; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_212 = 5'h1f == out_oindex ? 32'h0 : _GEN_211; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_65 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  SPIFIFO fifo ( // @[TLSPI.scala 69:20]
+    .clock(fifo_clock),
+    .reset(fifo_reset),
+    .io_ctrl_fmt_proto(fifo_io_ctrl_fmt_proto),
+    .io_ctrl_fmt_endian(fifo_io_ctrl_fmt_endian),
+    .io_ctrl_fmt_iodir(fifo_io_ctrl_fmt_iodir),
+    .io_ctrl_fmt_len(fifo_io_ctrl_fmt_len),
+    .io_ctrl_cs_mode(fifo_io_ctrl_cs_mode),
+    .io_ctrl_wm_tx(fifo_io_ctrl_wm_tx),
+    .io_ctrl_wm_rx(fifo_io_ctrl_wm_rx),
+    .io_link_tx_ready(fifo_io_link_tx_ready),
+    .io_link_tx_valid(fifo_io_link_tx_valid),
+    .io_link_tx_bits(fifo_io_link_tx_bits),
+    .io_link_rx_valid(fifo_io_link_rx_valid),
+    .io_link_rx_bits(fifo_io_link_rx_bits),
+    .io_link_cnt(fifo_io_link_cnt),
+    .io_link_fmt_proto(fifo_io_link_fmt_proto),
+    .io_link_fmt_endian(fifo_io_link_fmt_endian),
+    .io_link_fmt_iodir(fifo_io_link_fmt_iodir),
+    .io_link_cs_set(fifo_io_link_cs_set),
+    .io_link_cs_clear(fifo_io_link_cs_clear),
+    .io_link_lock(fifo_io_link_lock),
+    .io_tx_ready(fifo_io_tx_ready),
+    .io_tx_valid(fifo_io_tx_valid),
+    .io_tx_bits(fifo_io_tx_bits),
+    .io_rx_ready(fifo_io_rx_ready),
+    .io_rx_valid(fifo_io_rx_valid),
+    .io_rx_bits(fifo_io_rx_bits),
+    .io_ip_txwm(fifo_io_ip_txwm),
+    .io_ip_rxwm(fifo_io_ip_rxwm)
+  );
+  SPIMedia_2 mac ( // @[TLSPI.scala 70:19]
+    .clock(mac_clock),
+    .reset(mac_reset),
+    .io_port_sck(mac_io_port_sck),
+    .io_port_dq_0_i(mac_io_port_dq_0_i),
+    .io_port_dq_0_o(mac_io_port_dq_0_o),
+    .io_port_dq_0_oe(mac_io_port_dq_0_oe),
+    .io_port_dq_1_i(mac_io_port_dq_1_i),
+    .io_port_dq_1_o(mac_io_port_dq_1_o),
+    .io_port_dq_1_oe(mac_io_port_dq_1_oe),
+    .io_port_dq_2_i(mac_io_port_dq_2_i),
+    .io_port_dq_2_o(mac_io_port_dq_2_o),
+    .io_port_dq_2_oe(mac_io_port_dq_2_oe),
+    .io_port_dq_3_i(mac_io_port_dq_3_i),
+    .io_port_dq_3_o(mac_io_port_dq_3_o),
+    .io_port_dq_3_oe(mac_io_port_dq_3_oe),
+    .io_port_cs_0(mac_io_port_cs_0),
+    .io_port_cs_1(mac_io_port_cs_1),
+    .io_ctrl_sck_div(mac_io_ctrl_sck_div),
+    .io_ctrl_sck_pol(mac_io_ctrl_sck_pol),
+    .io_ctrl_sck_pha(mac_io_ctrl_sck_pha),
+    .io_ctrl_dla_cssck(mac_io_ctrl_dla_cssck),
+    .io_ctrl_dla_sckcs(mac_io_ctrl_dla_sckcs),
+    .io_ctrl_dla_intercs(mac_io_ctrl_dla_intercs),
+    .io_ctrl_dla_interxfr(mac_io_ctrl_dla_interxfr),
+    .io_ctrl_cs_id(mac_io_ctrl_cs_id),
+    .io_ctrl_cs_dflt_0(mac_io_ctrl_cs_dflt_0),
+    .io_ctrl_cs_dflt_1(mac_io_ctrl_cs_dflt_1),
+    .io_ctrl_extradel_coarse(mac_io_ctrl_extradel_coarse),
+    .io_ctrl_sampledel_sd(mac_io_ctrl_sampledel_sd),
+    .io_link_tx_ready(mac_io_link_tx_ready),
+    .io_link_tx_valid(mac_io_link_tx_valid),
+    .io_link_tx_bits(mac_io_link_tx_bits),
+    .io_link_rx_valid(mac_io_link_rx_valid),
+    .io_link_rx_bits(mac_io_link_rx_bits),
+    .io_link_cnt(mac_io_link_cnt),
+    .io_link_fmt_proto(mac_io_link_fmt_proto),
+    .io_link_fmt_endian(mac_io_link_fmt_endian),
+    .io_link_fmt_iodir(mac_io_link_fmt_iodir),
+    .io_link_cs_set(mac_io_link_cs_set),
+    .io_link_cs_clear(mac_io_link_cs_clear)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_sck = mac_io_port_sck; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_0_o = mac_io_port_dq_0_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_0_oe = mac_io_port_dq_0_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_1_o = mac_io_port_dq_1_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_1_oe = mac_io_port_dq_1_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_2_o = mac_io_port_dq_2_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_2_oe = mac_io_port_dq_2_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_3_o = mac_io_port_dq_3_o; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_dq_3_oe = mac_io_port_dq_3_oe; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_cs_0 = mac_io_port_cs_0; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign auto_io_out_cs_1 = mac_io_port_cs_1; // @[Nodes.scala 1207:84 TLSPI.scala 72:14]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_180 ? _GEN_212 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = fifo_io_ip_txwm & ie_txwm | fifo_io_ip_rxwm & ie_rxwm; // @[TLSPI.scala 84:47]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign fifo_clock = clock;
+  assign fifo_reset = reset;
+  assign fifo_io_ctrl_fmt_proto = ctrl_fmt_proto; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_endian = ctrl_fmt_endian; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_iodir = ctrl_fmt_iodir; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_fmt_len = ctrl_fmt_len; // @[TLSPI.scala 73:20]
+  assign fifo_io_ctrl_cs_mode = ctrl_cs_mode; // @[TLSPI.scala 74:19]
+  assign fifo_io_ctrl_wm_tx = ctrl_wm_tx; // @[TLSPI.scala 75:19]
+  assign fifo_io_ctrl_wm_rx = ctrl_wm_rx; // @[TLSPI.scala 75:19]
+  assign fifo_io_link_tx_ready = mac_io_link_tx_ready; // @[TLSPI.scala 196:17]
+  assign fifo_io_link_rx_valid = mac_io_link_rx_valid; // @[TLSPI.scala 196:17]
+  assign fifo_io_link_rx_bits = mac_io_link_rx_bits; // @[TLSPI.scala 196:17]
+  assign fifo_io_tx_valid = out_f_wivalid_15 & ~quash; // @[RegMapFIFO.scala 19:30]
+  assign fifo_io_tx_bits = bundleIn_0_a_bits_data[7:0]; // @[RegisterRouter.scala 83:24]
+  assign fifo_io_rx_ready = out_rivalid_24 & out_rimask_3; // @[RegisterRouter.scala 83:24]
+  assign mac_clock = clock;
+  assign mac_reset = reset;
+  assign mac_io_port_dq_0_i = auto_io_out_dq_0_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_1_i = auto_io_out_dq_1_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_2_i = auto_io_out_dq_2_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_port_dq_3_i = auto_io_out_dq_3_i; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign mac_io_ctrl_sck_div = ctrl_sck_div; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_sck_pol = ctrl_sck_pol; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_sck_pha = ctrl_sck_pha; // @[TLSPI.scala 76:19]
+  assign mac_io_ctrl_dla_cssck = ctrl_dla_cssck; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_sckcs = ctrl_dla_sckcs; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_intercs = ctrl_dla_intercs; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_dla_interxfr = ctrl_dla_interxfr; // @[TLSPI.scala 79:19]
+  assign mac_io_ctrl_cs_id = ctrl_cs_id; // @[TLSPI.scala 80:18]
+  assign mac_io_ctrl_cs_dflt_0 = ctrl_cs_dflt_0; // @[TLSPI.scala 80:18]
+  assign mac_io_ctrl_cs_dflt_1 = ctrl_cs_dflt_1; // @[TLSPI.scala 80:18]
+  assign mac_io_ctrl_extradel_coarse = ctrl_extradel_coarse; // @[TLSPI.scala 77:24]
+  assign mac_io_ctrl_sampledel_sd = ctrl_sampledel_sd; // @[TLSPI.scala 78:25]
+  assign mac_io_link_tx_valid = fifo_io_link_tx_valid; // @[TLSPI.scala 196:17]
+  assign mac_io_link_tx_bits = fifo_io_link_tx_bits; // @[TLSPI.scala 196:17]
+  assign mac_io_link_cnt = fifo_io_link_cnt; // @[TLSPI.scala 196:17]
+  assign mac_io_link_fmt_proto = fifo_io_link_fmt_proto; // @[TLSPI.scala 196:17]
+  assign mac_io_link_fmt_endian = fifo_io_link_fmt_endian; // @[TLSPI.scala 196:17]
+  assign mac_io_link_fmt_iodir = fifo_io_link_fmt_iodir; // @[TLSPI.scala 196:17]
+  assign mac_io_link_cs_set = fifo_io_link_cs_set; // @[TLSPI.scala 196:17]
+  assign mac_io_link_cs_clear = fifo_io_link_cs_clear; // @[TLSPI.scala 196:17]
+  always @(posedge clock) begin
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_proto <= 2'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_18) begin // @[RegField.scala 74:88]
+      ctrl_fmt_proto <= bundleIn_0_a_bits_data[1:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_endian <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_19) begin // @[RegField.scala 74:88]
+      ctrl_fmt_endian <= bundleIn_0_a_bits_data[2]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_iodir <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_20) begin // @[RegField.scala 74:88]
+      ctrl_fmt_iodir <= bundleIn_0_a_bits_data[3]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_fmt_len <= 4'h8; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_21) begin // @[RegField.scala 74:88]
+      ctrl_fmt_len <= bundleIn_0_a_bits_data[19:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_div <= 12'h3; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid) begin // @[RegField.scala 74:88]
+      ctrl_sck_div <= bundleIn_0_a_bits_data[11:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_pol <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      ctrl_sck_pol <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sck_pha <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      ctrl_sck_pha <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_cs_id <= 1'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_27) begin // @[RegField.scala 74:88]
+      ctrl_cs_id <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    ctrl_cs_dflt_0 <= reset | _GEN_1; // @[TLSPI.scala 68:{17,17}]
+    ctrl_cs_dflt_1 <= reset | _GEN_2; // @[TLSPI.scala 68:{17,17}]
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_cs_mode <= 2'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      ctrl_cs_mode <= bundleIn_0_a_bits_data[1:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_cssck <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_3) begin // @[RegField.scala 74:88]
+      ctrl_dla_cssck <= bundleIn_0_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_sckcs <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_4) begin // @[RegField.scala 74:88]
+      ctrl_dla_sckcs <= bundleIn_0_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_intercs <= 8'h1; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_22) begin // @[RegField.scala 74:88]
+      ctrl_dla_intercs <= bundleIn_0_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_dla_interxfr <= 8'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_23) begin // @[RegField.scala 74:88]
+      ctrl_dla_interxfr <= bundleIn_0_a_bits_data[23:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_wm_tx <= 4'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_6) begin // @[RegField.scala 74:88]
+      ctrl_wm_tx <= bundleIn_0_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_wm_rx <= 4'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      ctrl_wm_rx <= bundleIn_0_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_extradel_coarse <= 12'h0; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_5) begin // @[RegField.scala 74:88]
+      ctrl_extradel_coarse <= bundleIn_0_a_bits_data[11:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 68:17]
+      ctrl_sampledel_sd <= 5'h3; // @[TLSPI.scala 68:17]
+    end else if (out_f_wivalid_28) begin // @[RegField.scala 74:88]
+      ctrl_sampledel_sd <= bundleIn_0_a_bits_data[4:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 82:15]
+      ie_txwm <= 1'h0; // @[TLSPI.scala 82:15]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      ie_txwm <= bundleIn_0_a_bits_data[0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[TLSPI.scala 82:15]
+      ie_rxwm <= 1'h0; // @[TLSPI.scala 82:15]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      ie_rxwm <= bundleIn_0_a_bits_data[1]; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  ctrl_fmt_proto = _RAND_0[1:0];
+  _RAND_1 = {1{`RANDOM}};
+  ctrl_fmt_endian = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  ctrl_fmt_iodir = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  ctrl_fmt_len = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  ctrl_sck_div = _RAND_4[11:0];
+  _RAND_5 = {1{`RANDOM}};
+  ctrl_sck_pol = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  ctrl_sck_pha = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  ctrl_cs_id = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  ctrl_cs_dflt_0 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  ctrl_cs_dflt_1 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  ctrl_cs_mode = _RAND_10[1:0];
+  _RAND_11 = {1{`RANDOM}};
+  ctrl_dla_cssck = _RAND_11[7:0];
+  _RAND_12 = {1{`RANDOM}};
+  ctrl_dla_sckcs = _RAND_12[7:0];
+  _RAND_13 = {1{`RANDOM}};
+  ctrl_dla_intercs = _RAND_13[7:0];
+  _RAND_14 = {1{`RANDOM}};
+  ctrl_dla_interxfr = _RAND_14[7:0];
+  _RAND_15 = {1{`RANDOM}};
+  ctrl_wm_tx = _RAND_15[3:0];
+  _RAND_16 = {1{`RANDOM}};
+  ctrl_wm_rx = _RAND_16[3:0];
+  _RAND_17 = {1{`RANDOM}};
+  ctrl_extradel_coarse = _RAND_17[11:0];
+  _RAND_18 = {1{`RANDOM}};
+  ctrl_sampledel_sd = _RAND_18[4:0];
+  _RAND_19 = {1{`RANDOM}};
+  ie_txwm = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  ie_rxwm = _RAND_20[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_8(
+  output        auto_spi_0_int_xing_out_sync_0,
+  output        auto_spi_0_control_xing_in_a_ready,
+  input         auto_spi_0_control_xing_in_a_valid,
+  input  [2:0]  auto_spi_0_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_spi_0_control_xing_in_a_bits_param,
+  input  [1:0]  auto_spi_0_control_xing_in_a_bits_size,
+  input  [6:0]  auto_spi_0_control_xing_in_a_bits_source,
+  input  [28:0] auto_spi_0_control_xing_in_a_bits_address,
+  input  [3:0]  auto_spi_0_control_xing_in_a_bits_mask,
+  input  [31:0] auto_spi_0_control_xing_in_a_bits_data,
+  input         auto_spi_0_control_xing_in_a_bits_corrupt,
+  input         auto_spi_0_control_xing_in_d_ready,
+  output        auto_spi_0_control_xing_in_d_valid,
+  output [2:0]  auto_spi_0_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_spi_0_control_xing_in_d_bits_size,
+  output [6:0]  auto_spi_0_control_xing_in_d_bits_source,
+  output [31:0] auto_spi_0_control_xing_in_d_bits_data,
+  output        auto_spi_0_io_out_sck,
+  input         auto_spi_0_io_out_dq_0_i,
+  output        auto_spi_0_io_out_dq_0_o,
+  output        auto_spi_0_io_out_dq_0_oe,
+  input         auto_spi_0_io_out_dq_1_i,
+  output        auto_spi_0_io_out_dq_1_o,
+  output        auto_spi_0_io_out_dq_1_oe,
+  input         auto_spi_0_io_out_dq_2_i,
+  output        auto_spi_0_io_out_dq_2_o,
+  output        auto_spi_0_io_out_dq_2_oe,
+  input         auto_spi_0_io_out_dq_3_i,
+  output        auto_spi_0_io_out_dq_3_o,
+  output        auto_spi_0_io_out_dq_3_oe,
+  output        auto_spi_0_io_out_cs_0,
+  output        auto_spi_0_io_out_cs_1,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  spi_0_clock; // @[SPI.scala 36:49]
+  wire  spi_0_reset; // @[SPI.scala 36:49]
+  wire  spi_0_auto_int_xing_out_sync_0; // @[SPI.scala 36:49]
+  wire  spi_0_auto_control_xing_in_a_ready; // @[SPI.scala 36:49]
+  wire  spi_0_auto_control_xing_in_a_valid; // @[SPI.scala 36:49]
+  wire [2:0] spi_0_auto_control_xing_in_a_bits_opcode; // @[SPI.scala 36:49]
+  wire [2:0] spi_0_auto_control_xing_in_a_bits_param; // @[SPI.scala 36:49]
+  wire [1:0] spi_0_auto_control_xing_in_a_bits_size; // @[SPI.scala 36:49]
+  wire [6:0] spi_0_auto_control_xing_in_a_bits_source; // @[SPI.scala 36:49]
+  wire [28:0] spi_0_auto_control_xing_in_a_bits_address; // @[SPI.scala 36:49]
+  wire [3:0] spi_0_auto_control_xing_in_a_bits_mask; // @[SPI.scala 36:49]
+  wire [31:0] spi_0_auto_control_xing_in_a_bits_data; // @[SPI.scala 36:49]
+  wire  spi_0_auto_control_xing_in_a_bits_corrupt; // @[SPI.scala 36:49]
+  wire  spi_0_auto_control_xing_in_d_ready; // @[SPI.scala 36:49]
+  wire  spi_0_auto_control_xing_in_d_valid; // @[SPI.scala 36:49]
+  wire [2:0] spi_0_auto_control_xing_in_d_bits_opcode; // @[SPI.scala 36:49]
+  wire [1:0] spi_0_auto_control_xing_in_d_bits_size; // @[SPI.scala 36:49]
+  wire [6:0] spi_0_auto_control_xing_in_d_bits_source; // @[SPI.scala 36:49]
+  wire [31:0] spi_0_auto_control_xing_in_d_bits_data; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_sck; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_0_i; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_0_o; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_0_oe; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_1_i; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_1_o; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_1_oe; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_2_i; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_2_o; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_2_oe; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_3_i; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_3_o; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_dq_3_oe; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_cs_0; // @[SPI.scala 36:49]
+  wire  spi_0_auto_io_out_cs_1; // @[SPI.scala 36:49]
+  TLSPI spi_0 ( // @[SPI.scala 36:49]
+    .clock(spi_0_clock),
+    .reset(spi_0_reset),
+    .auto_int_xing_out_sync_0(spi_0_auto_int_xing_out_sync_0),
+    .auto_control_xing_in_a_ready(spi_0_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(spi_0_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(spi_0_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(spi_0_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(spi_0_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(spi_0_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(spi_0_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(spi_0_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(spi_0_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(spi_0_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(spi_0_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(spi_0_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(spi_0_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(spi_0_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(spi_0_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(spi_0_auto_control_xing_in_d_bits_data),
+    .auto_io_out_sck(spi_0_auto_io_out_sck),
+    .auto_io_out_dq_0_i(spi_0_auto_io_out_dq_0_i),
+    .auto_io_out_dq_0_o(spi_0_auto_io_out_dq_0_o),
+    .auto_io_out_dq_0_oe(spi_0_auto_io_out_dq_0_oe),
+    .auto_io_out_dq_1_i(spi_0_auto_io_out_dq_1_i),
+    .auto_io_out_dq_1_o(spi_0_auto_io_out_dq_1_o),
+    .auto_io_out_dq_1_oe(spi_0_auto_io_out_dq_1_oe),
+    .auto_io_out_dq_2_i(spi_0_auto_io_out_dq_2_i),
+    .auto_io_out_dq_2_o(spi_0_auto_io_out_dq_2_o),
+    .auto_io_out_dq_2_oe(spi_0_auto_io_out_dq_2_oe),
+    .auto_io_out_dq_3_i(spi_0_auto_io_out_dq_3_i),
+    .auto_io_out_dq_3_o(spi_0_auto_io_out_dq_3_o),
+    .auto_io_out_dq_3_oe(spi_0_auto_io_out_dq_3_oe),
+    .auto_io_out_cs_0(spi_0_auto_io_out_cs_0),
+    .auto_io_out_cs_1(spi_0_auto_io_out_cs_1)
+  );
+  assign auto_spi_0_int_xing_out_sync_0 = spi_0_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_control_xing_in_a_ready = spi_0_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_spi_0_control_xing_in_d_valid = spi_0_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_spi_0_control_xing_in_d_bits_opcode = spi_0_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_spi_0_control_xing_in_d_bits_size = spi_0_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_spi_0_control_xing_in_d_bits_source = spi_0_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_spi_0_control_xing_in_d_bits_data = spi_0_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_spi_0_io_out_sck = spi_0_auto_io_out_sck; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_dq_0_o = spi_0_auto_io_out_dq_0_o; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_dq_0_oe = spi_0_auto_io_out_dq_0_oe; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_dq_1_o = spi_0_auto_io_out_dq_1_o; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_dq_1_oe = spi_0_auto_io_out_dq_1_oe; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_dq_2_o = spi_0_auto_io_out_dq_2_o; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_dq_2_oe = spi_0_auto_io_out_dq_2_oe; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_dq_3_o = spi_0_auto_io_out_dq_3_o; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_dq_3_oe = spi_0_auto_io_out_dq_3_oe; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_cs_0 = spi_0_auto_io_out_cs_0; // @[LazyModule.scala 311:12]
+  assign auto_spi_0_io_out_cs_1 = spi_0_auto_io_out_cs_1; // @[LazyModule.scala 311:12]
+  assign spi_0_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign spi_0_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_valid = auto_spi_0_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_bits_opcode = auto_spi_0_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_bits_param = auto_spi_0_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_bits_size = auto_spi_0_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_bits_source = auto_spi_0_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_bits_address = auto_spi_0_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_bits_mask = auto_spi_0_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_bits_data = auto_spi_0_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_a_bits_corrupt = auto_spi_0_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_control_xing_in_d_ready = auto_spi_0_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign spi_0_auto_io_out_dq_0_i = auto_spi_0_io_out_dq_0_i; // @[LazyModule.scala 311:12]
+  assign spi_0_auto_io_out_dq_1_i = auto_spi_0_io_out_dq_1_i; // @[LazyModule.scala 311:12]
+  assign spi_0_auto_io_out_dq_2_i = auto_spi_0_io_out_dq_2_i; // @[LazyModule.scala 311:12]
+  assign spi_0_auto_io_out_dq_3_i = auto_spi_0_io_out_dq_3_i; // @[LazyModule.scala 311:12]
+endmodule
+module AsyncResetRegVec_w32_i0(
+  input         clock,
+  input         reset,
+  input  [31:0] io_d,
+  output [31:0] io_q,
+  input         io_en
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [31:0] reg_; // @[AsyncResetReg.scala 64:50]
+  assign io_q = reg_; // @[AsyncResetReg.scala 68:8]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncResetReg.scala 65:16]
+      reg_ <= 32'h0; // @[AsyncResetReg.scala 66:9]
+    end else if (io_en) begin // @[AsyncResetReg.scala 64:50]
+      reg_ <= io_d;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  reg_ = _RAND_0[31:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    reg_ = 32'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module IntSyncCrossingSource_17(
+  input   clock,
+  input   reset,
+  input   auto_in_0,
+  input   auto_in_1,
+  input   auto_in_2,
+  input   auto_in_3,
+  input   auto_in_4,
+  input   auto_in_5,
+  input   auto_in_6,
+  input   auto_in_7,
+  input   auto_in_8,
+  input   auto_in_9,
+  input   auto_in_10,
+  input   auto_in_11,
+  input   auto_in_12,
+  input   auto_in_13,
+  input   auto_in_14,
+  input   auto_in_15,
+  input   auto_in_16,
+  input   auto_in_17,
+  input   auto_in_18,
+  input   auto_in_19,
+  input   auto_in_20,
+  input   auto_in_21,
+  input   auto_in_22,
+  input   auto_in_23,
+  input   auto_in_24,
+  input   auto_in_25,
+  input   auto_in_26,
+  input   auto_in_27,
+  input   auto_in_28,
+  input   auto_in_29,
+  input   auto_in_30,
+  input   auto_in_31,
+  output  auto_out_sync_0,
+  output  auto_out_sync_1,
+  output  auto_out_sync_2,
+  output  auto_out_sync_3,
+  output  auto_out_sync_4,
+  output  auto_out_sync_5,
+  output  auto_out_sync_6,
+  output  auto_out_sync_7,
+  output  auto_out_sync_8,
+  output  auto_out_sync_9,
+  output  auto_out_sync_10,
+  output  auto_out_sync_11,
+  output  auto_out_sync_12,
+  output  auto_out_sync_13,
+  output  auto_out_sync_14,
+  output  auto_out_sync_15,
+  output  auto_out_sync_16,
+  output  auto_out_sync_17,
+  output  auto_out_sync_18,
+  output  auto_out_sync_19,
+  output  auto_out_sync_20,
+  output  auto_out_sync_21,
+  output  auto_out_sync_22,
+  output  auto_out_sync_23,
+  output  auto_out_sync_24,
+  output  auto_out_sync_25,
+  output  auto_out_sync_26,
+  output  auto_out_sync_27,
+  output  auto_out_sync_28,
+  output  auto_out_sync_29,
+  output  auto_out_sync_30,
+  output  auto_out_sync_31
+);
+  wire  reg__clock; // @[AsyncResetReg.scala 89:21]
+  wire  reg__reset; // @[AsyncResetReg.scala 89:21]
+  wire [31:0] reg__io_d; // @[AsyncResetReg.scala 89:21]
+  wire [31:0] reg__io_q; // @[AsyncResetReg.scala 89:21]
+  wire  reg__io_en; // @[AsyncResetReg.scala 89:21]
+  wire [7:0] lo_lo = {auto_in_7,auto_in_6,auto_in_5,auto_in_4,auto_in_3,auto_in_2,auto_in_1,auto_in_0}; // @[Cat.scala 31:58]
+  wire [15:0] lo = {auto_in_15,auto_in_14,auto_in_13,auto_in_12,auto_in_11,auto_in_10,auto_in_9,auto_in_8,lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] hi_lo = {auto_in_23,auto_in_22,auto_in_21,auto_in_20,auto_in_19,auto_in_18,auto_in_17,auto_in_16}; // @[Cat.scala 31:58]
+  wire [15:0] hi = {auto_in_31,auto_in_30,auto_in_29,auto_in_28,auto_in_27,auto_in_26,auto_in_25,auto_in_24,hi_lo}; // @[Cat.scala 31:58]
+  AsyncResetRegVec_w32_i0 reg_ ( // @[AsyncResetReg.scala 89:21]
+    .clock(reg__clock),
+    .reset(reg__reset),
+    .io_d(reg__io_d),
+    .io_q(reg__io_q),
+    .io_en(reg__io_en)
+  );
+  assign auto_out_sync_0 = reg__io_q[0]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_1 = reg__io_q[1]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_2 = reg__io_q[2]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_3 = reg__io_q[3]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_4 = reg__io_q[4]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_5 = reg__io_q[5]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_6 = reg__io_q[6]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_7 = reg__io_q[7]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_8 = reg__io_q[8]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_9 = reg__io_q[9]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_10 = reg__io_q[10]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_11 = reg__io_q[11]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_12 = reg__io_q[12]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_13 = reg__io_q[13]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_14 = reg__io_q[14]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_15 = reg__io_q[15]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_16 = reg__io_q[16]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_17 = reg__io_q[17]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_18 = reg__io_q[18]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_19 = reg__io_q[19]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_20 = reg__io_q[20]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_21 = reg__io_q[21]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_22 = reg__io_q[22]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_23 = reg__io_q[23]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_24 = reg__io_q[24]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_25 = reg__io_q[25]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_26 = reg__io_q[26]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_27 = reg__io_q[27]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_28 = reg__io_q[28]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_29 = reg__io_q[29]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_30 = reg__io_q[30]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_31 = reg__io_q[31]; // @[Crossing.scala 41:52]
+  assign reg__clock = clock;
+  assign reg__reset = reset;
+  assign reg__io_d = {hi,lo}; // @[Cat.scala 31:58]
+  assign reg__io_en = 1'h1; // @[AsyncResetReg.scala 92:15]
+endmodule
+module TLMonitor_66(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10012000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SynchronizerShiftReg_w32_d3(
+  input         clock,
+  input  [31:0] io_d,
+  output [31:0] io_q
+);
+  wire  output_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_1_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_1_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_1_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_2_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_2_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_2_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_3_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_3_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_3_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_4_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_4_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_4_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_5_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_5_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_5_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_6_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_6_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_6_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_7_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_7_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_7_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_8_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_8_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_8_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_9_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_9_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_9_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_10_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_10_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_10_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_11_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_11_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_11_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_12_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_12_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_12_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_13_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_13_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_13_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_14_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_14_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_14_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_15_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_15_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_15_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_16_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_16_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_16_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_17_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_17_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_17_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_18_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_18_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_18_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_19_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_19_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_19_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_20_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_20_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_20_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_21_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_21_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_21_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_22_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_22_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_22_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_23_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_23_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_23_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_24_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_24_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_24_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_25_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_25_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_25_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_26_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_26_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_26_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_27_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_27_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_27_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_28_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_28_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_28_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_29_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_29_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_29_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_30_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_30_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_30_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_chain_31_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_31_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_31_io_q; // @[ShiftReg.scala 45:23]
+  wire  output_1 = output_chain_1_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_0 = output_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_3 = output_chain_3_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_2 = output_chain_2_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_5 = output_chain_5_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_4 = output_chain_4_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_7 = output_chain_7_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_6 = output_chain_6_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [7:0] io_q_lo_lo = {output_7,output_6,output_5,output_4,output_3,output_2,output_1,output_0}; // @[Cat.scala 31:58]
+  wire  output_9 = output_chain_9_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_8 = output_chain_8_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_11 = output_chain_11_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_10 = output_chain_10_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_13 = output_chain_13_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_12 = output_chain_12_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_15 = output_chain_15_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_14 = output_chain_14_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [15:0] io_q_lo = {output_15,output_14,output_13,output_12,output_11,output_10,output_9,output_8,io_q_lo_lo}; // @[Cat.scala 31:58]
+  wire  output_17 = output_chain_17_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_16 = output_chain_16_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_19 = output_chain_19_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_18 = output_chain_18_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_21 = output_chain_21_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_20 = output_chain_20_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_23 = output_chain_23_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_22 = output_chain_22_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [7:0] io_q_hi_lo = {output_23,output_22,output_21,output_20,output_19,output_18,output_17,output_16}; // @[Cat.scala 31:58]
+  wire  output_25 = output_chain_25_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_24 = output_chain_24_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_27 = output_chain_27_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_26 = output_chain_26_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_29 = output_chain_29_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_28 = output_chain_28_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_31 = output_chain_31_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_30 = output_chain_30_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [15:0] io_q_hi = {output_31,output_30,output_29,output_28,output_27,output_26,output_25,output_24,io_q_hi_lo}; // @[Cat.scala 31:58]
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_clock),
+    .io_d(output_chain_io_d),
+    .io_q(output_chain_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_1 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_1_clock),
+    .io_d(output_chain_1_io_d),
+    .io_q(output_chain_1_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_2 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_2_clock),
+    .io_d(output_chain_2_io_d),
+    .io_q(output_chain_2_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_3 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_3_clock),
+    .io_d(output_chain_3_io_d),
+    .io_q(output_chain_3_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_4 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_4_clock),
+    .io_d(output_chain_4_io_d),
+    .io_q(output_chain_4_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_5 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_5_clock),
+    .io_d(output_chain_5_io_d),
+    .io_q(output_chain_5_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_6 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_6_clock),
+    .io_d(output_chain_6_io_d),
+    .io_q(output_chain_6_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_7 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_7_clock),
+    .io_d(output_chain_7_io_d),
+    .io_q(output_chain_7_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_8 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_8_clock),
+    .io_d(output_chain_8_io_d),
+    .io_q(output_chain_8_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_9 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_9_clock),
+    .io_d(output_chain_9_io_d),
+    .io_q(output_chain_9_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_10 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_10_clock),
+    .io_d(output_chain_10_io_d),
+    .io_q(output_chain_10_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_11 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_11_clock),
+    .io_d(output_chain_11_io_d),
+    .io_q(output_chain_11_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_12 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_12_clock),
+    .io_d(output_chain_12_io_d),
+    .io_q(output_chain_12_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_13 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_13_clock),
+    .io_d(output_chain_13_io_d),
+    .io_q(output_chain_13_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_14 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_14_clock),
+    .io_d(output_chain_14_io_d),
+    .io_q(output_chain_14_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_15 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_15_clock),
+    .io_d(output_chain_15_io_d),
+    .io_q(output_chain_15_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_16 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_16_clock),
+    .io_d(output_chain_16_io_d),
+    .io_q(output_chain_16_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_17 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_17_clock),
+    .io_d(output_chain_17_io_d),
+    .io_q(output_chain_17_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_18 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_18_clock),
+    .io_d(output_chain_18_io_d),
+    .io_q(output_chain_18_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_19 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_19_clock),
+    .io_d(output_chain_19_io_d),
+    .io_q(output_chain_19_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_20 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_20_clock),
+    .io_d(output_chain_20_io_d),
+    .io_q(output_chain_20_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_21 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_21_clock),
+    .io_d(output_chain_21_io_d),
+    .io_q(output_chain_21_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_22 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_22_clock),
+    .io_d(output_chain_22_io_d),
+    .io_q(output_chain_22_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_23 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_23_clock),
+    .io_d(output_chain_23_io_d),
+    .io_q(output_chain_23_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_24 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_24_clock),
+    .io_d(output_chain_24_io_d),
+    .io_q(output_chain_24_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_25 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_25_clock),
+    .io_d(output_chain_25_io_d),
+    .io_q(output_chain_25_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_26 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_26_clock),
+    .io_d(output_chain_26_io_d),
+    .io_q(output_chain_26_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_27 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_27_clock),
+    .io_d(output_chain_27_io_d),
+    .io_q(output_chain_27_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_28 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_28_clock),
+    .io_d(output_chain_28_io_d),
+    .io_q(output_chain_28_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_29 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_29_clock),
+    .io_d(output_chain_29_io_d),
+    .io_q(output_chain_29_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_30 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_30_clock),
+    .io_d(output_chain_30_io_d),
+    .io_q(output_chain_30_io_q)
+  );
+  NonSyncResetSynchronizerPrimitiveShiftReg_d3 output_chain_31 ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_31_clock),
+    .io_d(output_chain_31_io_d),
+    .io_q(output_chain_31_io_q)
+  );
+  assign io_q = {io_q_hi,io_q_lo}; // @[Cat.scala 31:58]
+  assign output_chain_clock = clock;
+  assign output_chain_io_d = io_d[0]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_1_clock = clock;
+  assign output_chain_1_io_d = io_d[1]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_2_clock = clock;
+  assign output_chain_2_io_d = io_d[2]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_3_clock = clock;
+  assign output_chain_3_io_d = io_d[3]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_4_clock = clock;
+  assign output_chain_4_io_d = io_d[4]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_5_clock = clock;
+  assign output_chain_5_io_d = io_d[5]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_6_clock = clock;
+  assign output_chain_6_io_d = io_d[6]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_7_clock = clock;
+  assign output_chain_7_io_d = io_d[7]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_8_clock = clock;
+  assign output_chain_8_io_d = io_d[8]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_9_clock = clock;
+  assign output_chain_9_io_d = io_d[9]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_10_clock = clock;
+  assign output_chain_10_io_d = io_d[10]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_11_clock = clock;
+  assign output_chain_11_io_d = io_d[11]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_12_clock = clock;
+  assign output_chain_12_io_d = io_d[12]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_13_clock = clock;
+  assign output_chain_13_io_d = io_d[13]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_14_clock = clock;
+  assign output_chain_14_io_d = io_d[14]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_15_clock = clock;
+  assign output_chain_15_io_d = io_d[15]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_16_clock = clock;
+  assign output_chain_16_io_d = io_d[16]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_17_clock = clock;
+  assign output_chain_17_io_d = io_d[17]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_18_clock = clock;
+  assign output_chain_18_io_d = io_d[18]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_19_clock = clock;
+  assign output_chain_19_io_d = io_d[19]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_20_clock = clock;
+  assign output_chain_20_io_d = io_d[20]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_21_clock = clock;
+  assign output_chain_21_io_d = io_d[21]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_22_clock = clock;
+  assign output_chain_22_io_d = io_d[22]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_23_clock = clock;
+  assign output_chain_23_io_d = io_d[23]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_24_clock = clock;
+  assign output_chain_24_io_d = io_d[24]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_25_clock = clock;
+  assign output_chain_25_io_d = io_d[25]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_26_clock = clock;
+  assign output_chain_26_io_d = io_d[26]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_27_clock = clock;
+  assign output_chain_27_io_d = io_d[27]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_28_clock = clock;
+  assign output_chain_28_io_d = io_d[28]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_29_clock = clock;
+  assign output_chain_29_io_d = io_d[29]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_30_clock = clock;
+  assign output_chain_30_io_d = io_d[30]; // @[SynchronizerReg.scala 173:39]
+  assign output_chain_31_clock = clock;
+  assign output_chain_31_io_d = io_d[31]; // @[SynchronizerReg.scala 173:39]
+endmodule
+module TLGPIO(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_int_xing_out_sync_1,
+  output        auto_int_xing_out_sync_2,
+  output        auto_int_xing_out_sync_3,
+  output        auto_int_xing_out_sync_4,
+  output        auto_int_xing_out_sync_5,
+  output        auto_int_xing_out_sync_6,
+  output        auto_int_xing_out_sync_7,
+  output        auto_int_xing_out_sync_8,
+  output        auto_int_xing_out_sync_9,
+  output        auto_int_xing_out_sync_10,
+  output        auto_int_xing_out_sync_11,
+  output        auto_int_xing_out_sync_12,
+  output        auto_int_xing_out_sync_13,
+  output        auto_int_xing_out_sync_14,
+  output        auto_int_xing_out_sync_15,
+  output        auto_int_xing_out_sync_16,
+  output        auto_int_xing_out_sync_17,
+  output        auto_int_xing_out_sync_18,
+  output        auto_int_xing_out_sync_19,
+  output        auto_int_xing_out_sync_20,
+  output        auto_int_xing_out_sync_21,
+  output        auto_int_xing_out_sync_22,
+  output        auto_int_xing_out_sync_23,
+  output        auto_int_xing_out_sync_24,
+  output        auto_int_xing_out_sync_25,
+  output        auto_int_xing_out_sync_26,
+  output        auto_int_xing_out_sync_27,
+  output        auto_int_xing_out_sync_28,
+  output        auto_int_xing_out_sync_29,
+  output        auto_int_xing_out_sync_30,
+  output        auto_int_xing_out_sync_31,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  input         auto_iof_out_iof_0_0_o_oval,
+  input         auto_iof_out_iof_0_1_o_oval,
+  output        auto_iof_out_iof_0_2_i_ival,
+  input         auto_iof_out_iof_0_2_o_oval,
+  input         auto_iof_out_iof_0_2_o_oe,
+  input         auto_iof_out_iof_0_2_o_ie,
+  output        auto_iof_out_iof_0_3_i_ival,
+  input         auto_iof_out_iof_0_3_o_oval,
+  input         auto_iof_out_iof_0_3_o_oe,
+  input         auto_iof_out_iof_0_3_o_ie,
+  output        auto_iof_out_iof_0_4_i_ival,
+  input         auto_iof_out_iof_0_4_o_oval,
+  input         auto_iof_out_iof_0_4_o_oe,
+  input         auto_iof_out_iof_0_4_o_ie,
+  output        auto_iof_out_iof_0_5_i_ival,
+  input         auto_iof_out_iof_0_5_o_oval,
+  input         auto_iof_out_iof_0_5_o_oe,
+  input         auto_iof_out_iof_0_5_o_ie,
+  output        auto_iof_out_iof_0_12_i_ival,
+  input         auto_iof_out_iof_0_12_o_oe,
+  output        auto_iof_out_iof_0_13_i_ival,
+  input         auto_iof_out_iof_0_13_o_oe,
+  output        auto_iof_out_iof_0_14_i_ival,
+  input         auto_iof_out_iof_0_14_o_oe,
+  output        auto_iof_out_iof_0_15_i_ival,
+  input         auto_iof_out_iof_0_15_o_oe,
+  output        auto_iof_out_iof_0_16_i_ival,
+  input         auto_iof_out_iof_0_17_o_oval,
+  output        auto_iof_out_iof_0_18_i_ival,
+  input         auto_iof_out_iof_0_19_o_oval,
+  output        auto_iof_out_iof_0_20_i_ival,
+  input         auto_iof_out_iof_0_21_o_oval,
+  output        auto_iof_out_iof_0_22_i_ival,
+  input         auto_iof_out_iof_0_23_o_oval,
+  input         auto_iof_out_iof_0_24_o_oval,
+  input         auto_iof_out_iof_1_12_o_oval,
+  input         auto_iof_out_iof_1_13_o_oval,
+  input         auto_iof_out_iof_1_14_o_oval,
+  input         auto_iof_out_iof_1_15_o_oval,
+  input         auto_iof_out_iof_1_16_o_oval,
+  input         auto_iof_out_iof_1_17_o_oval,
+  input         auto_iof_out_iof_1_18_o_oval,
+  input         auto_iof_out_iof_1_19_o_oval,
+  input         auto_iof_out_iof_1_20_o_oval,
+  input         auto_iof_out_iof_1_21_o_oval,
+  input         auto_iof_out_iof_1_22_o_oval,
+  input         auto_iof_out_iof_1_23_o_oval,
+  input         auto_io_out_pins_0_i_ival,
+  output        auto_io_out_pins_0_o_oval,
+  output        auto_io_out_pins_0_o_oe,
+  output        auto_io_out_pins_0_o_ie,
+  input         auto_io_out_pins_1_i_ival,
+  output        auto_io_out_pins_1_o_oval,
+  output        auto_io_out_pins_1_o_oe,
+  output        auto_io_out_pins_1_o_ie,
+  input         auto_io_out_pins_2_i_ival,
+  output        auto_io_out_pins_2_o_oval,
+  output        auto_io_out_pins_2_o_oe,
+  output        auto_io_out_pins_2_o_ie,
+  input         auto_io_out_pins_3_i_ival,
+  output        auto_io_out_pins_3_o_oval,
+  output        auto_io_out_pins_3_o_oe,
+  output        auto_io_out_pins_3_o_ie,
+  input         auto_io_out_pins_4_i_ival,
+  output        auto_io_out_pins_4_o_oval,
+  output        auto_io_out_pins_4_o_oe,
+  output        auto_io_out_pins_4_o_ie,
+  input         auto_io_out_pins_5_i_ival,
+  output        auto_io_out_pins_5_o_oval,
+  output        auto_io_out_pins_5_o_oe,
+  output        auto_io_out_pins_5_o_ie,
+  input         auto_io_out_pins_6_i_ival,
+  output        auto_io_out_pins_6_o_oval,
+  output        auto_io_out_pins_6_o_oe,
+  input         auto_io_out_pins_7_i_ival,
+  output        auto_io_out_pins_7_o_oval,
+  output        auto_io_out_pins_7_o_oe,
+  input         auto_io_out_pins_8_i_ival,
+  output        auto_io_out_pins_8_o_oval,
+  output        auto_io_out_pins_8_o_oe,
+  input         auto_io_out_pins_9_i_ival,
+  output        auto_io_out_pins_9_o_oval,
+  output        auto_io_out_pins_9_o_oe,
+  input         auto_io_out_pins_10_i_ival,
+  output        auto_io_out_pins_10_o_oval,
+  output        auto_io_out_pins_10_o_oe,
+  input         auto_io_out_pins_11_i_ival,
+  output        auto_io_out_pins_11_o_oval,
+  output        auto_io_out_pins_11_o_oe,
+  input         auto_io_out_pins_12_i_ival,
+  output        auto_io_out_pins_12_o_oval,
+  output        auto_io_out_pins_12_o_oe,
+  output        auto_io_out_pins_12_o_ie,
+  input         auto_io_out_pins_13_i_ival,
+  output        auto_io_out_pins_13_o_oval,
+  output        auto_io_out_pins_13_o_oe,
+  output        auto_io_out_pins_13_o_ie,
+  input         auto_io_out_pins_14_i_ival,
+  output        auto_io_out_pins_14_o_oval,
+  output        auto_io_out_pins_14_o_oe,
+  output        auto_io_out_pins_14_o_ie,
+  input         auto_io_out_pins_15_i_ival,
+  output        auto_io_out_pins_15_o_oval,
+  output        auto_io_out_pins_15_o_oe,
+  output        auto_io_out_pins_15_o_ie,
+  input         auto_io_out_pins_16_i_ival,
+  output        auto_io_out_pins_16_o_oval,
+  output        auto_io_out_pins_16_o_oe,
+  output        auto_io_out_pins_16_o_ie,
+  input         auto_io_out_pins_17_i_ival,
+  output        auto_io_out_pins_17_o_oval,
+  output        auto_io_out_pins_17_o_oe,
+  output        auto_io_out_pins_17_o_ie,
+  input         auto_io_out_pins_18_i_ival,
+  output        auto_io_out_pins_18_o_oval,
+  output        auto_io_out_pins_18_o_oe,
+  output        auto_io_out_pins_18_o_ie,
+  input         auto_io_out_pins_19_i_ival,
+  output        auto_io_out_pins_19_o_oval,
+  output        auto_io_out_pins_19_o_oe,
+  output        auto_io_out_pins_19_o_ie,
+  input         auto_io_out_pins_20_i_ival,
+  output        auto_io_out_pins_20_o_oval,
+  output        auto_io_out_pins_20_o_oe,
+  output        auto_io_out_pins_20_o_ie,
+  input         auto_io_out_pins_21_i_ival,
+  output        auto_io_out_pins_21_o_oval,
+  output        auto_io_out_pins_21_o_oe,
+  output        auto_io_out_pins_21_o_ie,
+  input         auto_io_out_pins_22_i_ival,
+  output        auto_io_out_pins_22_o_oval,
+  output        auto_io_out_pins_22_o_oe,
+  output        auto_io_out_pins_22_o_ie,
+  input         auto_io_out_pins_23_i_ival,
+  output        auto_io_out_pins_23_o_oval,
+  output        auto_io_out_pins_23_o_oe,
+  output        auto_io_out_pins_23_o_ie,
+  input         auto_io_out_pins_24_i_ival,
+  output        auto_io_out_pins_24_o_oval,
+  output        auto_io_out_pins_24_o_oe,
+  output        auto_io_out_pins_24_o_ie,
+  input         auto_io_out_pins_25_i_ival,
+  output        auto_io_out_pins_25_o_oval,
+  output        auto_io_out_pins_25_o_oe,
+  input         auto_io_out_pins_26_i_ival,
+  output        auto_io_out_pins_26_o_oval,
+  output        auto_io_out_pins_26_o_oe,
+  input         auto_io_out_pins_27_i_ival,
+  output        auto_io_out_pins_27_o_oval,
+  output        auto_io_out_pins_27_o_oe,
+  input         auto_io_out_pins_28_i_ival,
+  output        auto_io_out_pins_28_o_oval,
+  output        auto_io_out_pins_28_o_oe,
+  input         auto_io_out_pins_29_i_ival,
+  output        auto_io_out_pins_29_o_oval,
+  output        auto_io_out_pins_29_o_oe,
+  input         auto_io_out_pins_30_i_ival,
+  output        auto_io_out_pins_30_o_oval,
+  output        auto_io_out_pins_30_o_oe,
+  input         auto_io_out_pins_31_i_ival,
+  output        auto_io_out_pins_31_o_oval,
+  output        auto_io_out_pins_31_o_oe
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_2; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_3; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_4; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_5; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_6; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_7; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_8; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_9; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_10; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_11; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_12; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_13; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_14; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_15; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_16; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_17; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_18; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_19; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_20; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_21; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_22; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_23; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_24; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_25; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_26; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_27; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_28; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_29; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_30; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_31; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_2; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_3; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_4; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_5; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_6; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_7; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_8; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_9; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_10; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_11; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_12; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_13; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_14; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_15; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_16; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_17; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_18; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_19; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_20; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_21; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_22; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_23; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_24; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_25; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_26; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_27; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_28; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_29; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_30; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_31; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  oeReg_clock; // @[GPIO.scala 79:22]
+  wire  oeReg_reset; // @[GPIO.scala 79:22]
+  wire [31:0] oeReg_io_d; // @[GPIO.scala 79:22]
+  wire [31:0] oeReg_io_q; // @[GPIO.scala 79:22]
+  wire  oeReg_io_en; // @[GPIO.scala 79:22]
+  wire  pueReg_clock; // @[GPIO.scala 80:22]
+  wire  pueReg_reset; // @[GPIO.scala 80:22]
+  wire [31:0] pueReg_io_d; // @[GPIO.scala 80:22]
+  wire [31:0] pueReg_io_q; // @[GPIO.scala 80:22]
+  wire  pueReg_io_en; // @[GPIO.scala 80:22]
+  wire  ieReg_clock; // @[GPIO.scala 82:22]
+  wire  ieReg_reset; // @[GPIO.scala 82:22]
+  wire [31:0] ieReg_io_d; // @[GPIO.scala 82:22]
+  wire [31:0] ieReg_io_q; // @[GPIO.scala 82:22]
+  wire  ieReg_io_en; // @[GPIO.scala 82:22]
+  wire  poeReg_clock; // @[GPIO.scala 84:22]
+  wire  poeReg_reset; // @[GPIO.scala 84:22]
+  wire [31:0] poeReg_io_d; // @[GPIO.scala 84:22]
+  wire [31:0] poeReg_io_q; // @[GPIO.scala 84:22]
+  wire  poeReg_io_en; // @[GPIO.scala 84:22]
+  wire  inSyncReg_inSyncReg_clock; // @[ShiftReg.scala 45:23]
+  wire [31:0] inSyncReg_inSyncReg_io_d; // @[ShiftReg.scala 45:23]
+  wire [31:0] inSyncReg_inSyncReg_io_q; // @[ShiftReg.scala 45:23]
+  wire  iofEnReg_clock; // @[GPIO.scala 105:25]
+  wire  iofEnReg_reset; // @[GPIO.scala 105:25]
+  wire [31:0] iofEnReg_io_d; // @[GPIO.scala 105:25]
+  wire [31:0] iofEnReg_io_q; // @[GPIO.scala 105:25]
+  wire  iofEnReg_io_en; // @[GPIO.scala 105:25]
+  reg [31:0] portReg; // @[GPIO.scala 77:20]
+  reg [31:0] dsReg_0; // @[GPIO.scala 81:23]
+  wire [7:0] inVal_lo_lo = {auto_io_out_pins_7_i_ival,auto_io_out_pins_6_i_ival,auto_io_out_pins_5_i_ival,
+    auto_io_out_pins_4_i_ival,auto_io_out_pins_3_i_ival,auto_io_out_pins_2_i_ival,auto_io_out_pins_1_i_ival,
+    auto_io_out_pins_0_i_ival}; // @[GPIO.scala 88:41]
+  wire [15:0] inVal_lo = {auto_io_out_pins_15_i_ival,auto_io_out_pins_14_i_ival,auto_io_out_pins_13_i_ival,
+    auto_io_out_pins_12_i_ival,auto_io_out_pins_11_i_ival,auto_io_out_pins_10_i_ival,auto_io_out_pins_9_i_ival,
+    auto_io_out_pins_8_i_ival,inVal_lo_lo}; // @[GPIO.scala 88:41]
+  wire [7:0] inVal_hi_lo = {auto_io_out_pins_23_i_ival,auto_io_out_pins_22_i_ival,auto_io_out_pins_21_i_ival,
+    auto_io_out_pins_20_i_ival,auto_io_out_pins_19_i_ival,auto_io_out_pins_18_i_ival,auto_io_out_pins_17_i_ival,
+    auto_io_out_pins_16_i_ival}; // @[GPIO.scala 88:41]
+  wire [15:0] inVal_hi = {auto_io_out_pins_31_i_ival,auto_io_out_pins_30_i_ival,auto_io_out_pins_29_i_ival,
+    auto_io_out_pins_28_i_ival,auto_io_out_pins_27_i_ival,auto_io_out_pins_26_i_ival,auto_io_out_pins_25_i_ival,
+    auto_io_out_pins_24_i_ival,inVal_hi_lo}; // @[GPIO.scala 88:41]
+  reg [31:0] valueReg; // @[GPIO.scala 90:23]
+  reg [31:0] highIeReg; // @[GPIO.scala 93:22]
+  reg [31:0] lowIeReg; // @[GPIO.scala 94:22]
+  reg [31:0] riseIeReg; // @[GPIO.scala 95:22]
+  reg [31:0] fallIeReg; // @[GPIO.scala 96:22]
+  reg [31:0] highIpReg; // @[GPIO.scala 97:22]
+  reg [31:0] lowIpReg; // @[GPIO.scala 98:22]
+  reg [31:0] riseIpReg; // @[GPIO.scala 99:22]
+  reg [31:0] fallIpReg; // @[GPIO.scala 100:22]
+  reg [31:0] passthruHighIeReg; // @[GPIO.scala 101:30]
+  reg [31:0] passthruLowIeReg; // @[GPIO.scala 102:30]
+  reg [31:0] iofSelReg; // @[GPIO.scala 106:22]
+  reg [31:0] xorReg; // @[GPIO.scala 109:22]
+  wire [31:0] _rise_T = ~valueReg; // @[GPIO.scala 115:14]
+  wire [31:0] inSyncReg = inSyncReg_inSyncReg_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [31:0] rise = _rise_T & inSyncReg; // @[GPIO.scala 115:24]
+  wire [31:0] _fall_T = ~inSyncReg; // @[GPIO.scala 116:25]
+  wire [31:0] fall = valueReg & _fall_T; // @[GPIO.scala 116:23]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3e0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [4:0] out_oindex = {in_bits_index[4],in_bits_index[3],in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [31:0] _out_frontSel_T = 32'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_frontSel_5 = _out_frontSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_5 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1 = out_wivalid_1 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_2 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_2 = out_wivalid_2 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_14 = _out_frontSel_T[14]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_3 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_14 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_82 = iofEnReg_io_q; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_102 = ieReg_io_q; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_6 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_6 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_9 = _out_frontSel_T[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_7 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_9 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_7 = out_wivalid_7 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_fallIpReg_T = ~fallIpReg; // @[RegField.scala 128:61]
+  wire [31:0] _out_fallIpReg_T_1 = out_f_wivalid_7 ? bundleIn_0_a_bits_data : 32'h0; // @[RegField.scala 128:71]
+  wire [31:0] _out_fallIpReg_T_2 = _out_fallIpReg_T | _out_fallIpReg_T_1; // @[RegField.scala 128:66]
+  wire [31:0] _out_fallIpReg_T_3 = ~_out_fallIpReg_T_2; // @[RegField.scala 128:59]
+  wire [31:0] _out_fallIpReg_T_4 = _out_fallIpReg_T_3 | fall; // @[RegField.scala 128:95]
+  wire  out_frontSel_13 = _out_frontSel_T[13]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_8 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_13 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_8 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_lowIpReg_T = ~lowIpReg; // @[RegField.scala 128:61]
+  wire [31:0] _out_lowIpReg_T_1 = out_f_wivalid_8 ? bundleIn_0_a_bits_data : 32'h0; // @[RegField.scala 128:71]
+  wire [31:0] _out_lowIpReg_T_2 = _out_lowIpReg_T | _out_lowIpReg_T_1; // @[RegField.scala 128:66]
+  wire [31:0] _out_lowIpReg_T_3 = ~_out_lowIpReg_T_2; // @[RegField.scala 128:59]
+  wire [31:0] _out_lowIpReg_T_4 = _out_lowIpReg_T_3 | _rise_T; // @[RegField.scala 128:95]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_146 = oeReg_io_q; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_17 = _out_frontSel_T[17]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_10 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_17 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_10 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_12 = _out_frontSel_T[12]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_11 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_12 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_11 = out_wivalid_11 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_7 = _out_frontSel_T[7]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_12 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_7 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_12 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_riseIpReg_T = ~riseIpReg; // @[RegField.scala 128:61]
+  wire [31:0] _out_riseIpReg_T_1 = out_f_wivalid_12 ? bundleIn_0_a_bits_data : 32'h0; // @[RegField.scala 128:71]
+  wire [31:0] _out_riseIpReg_T_2 = _out_riseIpReg_T | _out_riseIpReg_T_1; // @[RegField.scala 128:66]
+  wire [31:0] _out_riseIpReg_T_3 = ~_out_riseIpReg_T_2; // @[RegField.scala 128:59]
+  wire [31:0] _out_riseIpReg_T_4 = _out_riseIpReg_T_3 | rise; // @[RegField.scala 128:95]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_13 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_13 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_18 = _out_frontSel_T[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_14 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_18 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_14 = out_wivalid_14 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_16 = _out_frontSel_T[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_15 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_16 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_15 = out_wivalid_15 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_11 = _out_frontSel_T[11]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_16 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_11 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_16 = out_wivalid_16 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_highIpReg_T = ~highIpReg; // @[RegField.scala 128:61]
+  wire [31:0] _out_highIpReg_T_1 = out_f_wivalid_16 ? bundleIn_0_a_bits_data : 32'h0; // @[RegField.scala 128:71]
+  wire [31:0] _out_highIpReg_T_2 = _out_highIpReg_T | _out_highIpReg_T_1; // @[RegField.scala 128:66]
+  wire [31:0] _out_highIpReg_T_3 = ~_out_highIpReg_T_2; // @[RegField.scala 128:59]
+  wire [31:0] _out_highIpReg_T_4 = _out_highIpReg_T_3 | valueReg; // @[RegField.scala 128:95]
+  wire  out_frontSel_8 = _out_frontSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_17 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_8 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_17 = out_wivalid_17 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_4 = _out_frontSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_19 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_T_254 = pueReg_io_q; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_15 = _out_frontSel_T[15]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_20 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_15 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_20 = out_wivalid_20 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_139 = 5'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_140 = 5'h2 == out_oindex ? _out_T : _GEN_139; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_141 = 5'h3 == out_oindex ? _out_T : _GEN_140; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_142 = 5'h4 == out_oindex ? _out_T : _GEN_141; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_143 = 5'h5 == out_oindex ? _out_T : _GEN_142; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_144 = 5'h6 == out_oindex ? _out_T : _GEN_143; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_145 = 5'h7 == out_oindex ? _out_T : _GEN_144; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_146 = 5'h8 == out_oindex ? _out_T : _GEN_145; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_147 = 5'h9 == out_oindex ? _out_T : _GEN_146; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_148 = 5'ha == out_oindex ? _out_T : _GEN_147; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_149 = 5'hb == out_oindex ? _out_T : _GEN_148; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_150 = 5'hc == out_oindex ? _out_T : _GEN_149; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_151 = 5'hd == out_oindex ? _out_T : _GEN_150; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_152 = 5'he == out_oindex ? _out_T : _GEN_151; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_153 = 5'hf == out_oindex ? _out_T : _GEN_152; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_154 = 5'h10 == out_oindex ? _out_T : _GEN_153; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_155 = 5'h11 == out_oindex ? _out_T : _GEN_154; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_156 = 5'h12 == out_oindex ? _out_T : _GEN_155; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_157 = 5'h13 == out_oindex ? _out_T : _GEN_156; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_158 = 5'h14 == out_oindex ? _out_T : _GEN_157; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_169 = 5'h1f == out_oindex | (5'h1e == out_oindex | (5'h1d == out_oindex | (5'h1c == out_oindex | (5'h1b ==
+    out_oindex | (5'h1a == out_oindex | (5'h19 == out_oindex | (5'h18 == out_oindex | (5'h17 == out_oindex | (5'h16 ==
+    out_oindex | (5'h15 == out_oindex | _GEN_158)))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_171 = 5'h1 == out_oindex ? _out_T_102 : valueReg; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_172 = 5'h2 == out_oindex ? _out_T_146 : _GEN_171; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_173 = 5'h3 == out_oindex ? portReg : _GEN_172; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_174 = 5'h4 == out_oindex ? _out_T_254 : _GEN_173; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_175 = 5'h5 == out_oindex ? dsReg_0 : _GEN_174; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_176 = 5'h6 == out_oindex ? riseIeReg : _GEN_175; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_177 = 5'h7 == out_oindex ? riseIpReg : _GEN_176; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_178 = 5'h8 == out_oindex ? fallIeReg : _GEN_177; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_179 = 5'h9 == out_oindex ? fallIpReg : _GEN_178; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_180 = 5'ha == out_oindex ? highIeReg : _GEN_179; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_181 = 5'hb == out_oindex ? highIpReg : _GEN_180; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_182 = 5'hc == out_oindex ? lowIeReg : _GEN_181; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_183 = 5'hd == out_oindex ? lowIpReg : _GEN_182; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_184 = 5'he == out_oindex ? _out_T_82 : _GEN_183; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_185 = 5'hf == out_oindex ? iofSelReg : _GEN_184; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_186 = 5'h10 == out_oindex ? xorReg : _GEN_185; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_187 = 5'h11 == out_oindex ? passthruHighIeReg : _GEN_186; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_188 = 5'h12 == out_oindex ? passthruLowIeReg : _GEN_187; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_189 = 5'h13 == out_oindex ? 32'h0 : _GEN_188; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_190 = 5'h14 == out_oindex ? 32'h0 : _GEN_189; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_191 = 5'h15 == out_oindex ? 32'h0 : _GEN_190; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_192 = 5'h16 == out_oindex ? 32'h0 : _GEN_191; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_193 = 5'h17 == out_oindex ? 32'h0 : _GEN_192; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_194 = 5'h18 == out_oindex ? 32'h0 : _GEN_193; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_195 = 5'h19 == out_oindex ? 32'h0 : _GEN_194; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_196 = 5'h1a == out_oindex ? 32'h0 : _GEN_195; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_197 = 5'h1b == out_oindex ? 32'h0 : _GEN_196; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_198 = 5'h1c == out_oindex ? 32'h0 : _GEN_197; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_199 = 5'h1d == out_oindex ? 32'h0 : _GEN_198; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_200 = 5'h1e == out_oindex ? 32'h0 : _GEN_199; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_201 = 5'h1f == out_oindex ? 32'h0 : _GEN_200; // @[MuxLiteral.scala 48:{10,10}]
+  wire  swPinCtrl_0_oval = portReg[0]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_0_oe = oeReg_io_q[0]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_0_ie = ieReg_io_q[0]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_0_oval = iofSelReg[0] ? swPinCtrl_0_oval : auto_iof_out_iof_0_0_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_0_oe = iofSelReg[0] ? swPinCtrl_0_oe : 1'h1; // @[GPIO.scala 222:32]
+  wire  iofCtrl_0_ie = iofSelReg[0] & swPinCtrl_0_ie; // @[GPIO.scala 222:32]
+  wire  pre_xor_oval = iofEnReg_io_q[0] ? iofCtrl_0_oval : swPinCtrl_0_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_0_T_5 = fallIpReg[0] & fallIeReg[0]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_0_T_6 = riseIpReg[0] & riseIeReg[0] | _bundleOut_0_0_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_0_T_9 = highIpReg[0] & highIeReg[0]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_0_T_10 = _bundleOut_0_0_T_6 | _bundleOut_0_0_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_0_T_13 = lowIpReg[0] & lowIeReg[0]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_0_T_14 = _bundleOut_0_0_T_10 | _bundleOut_0_0_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_0_T_17 = valueReg[0] & passthruHighIeReg[0]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_0_T_18 = _bundleOut_0_0_T_14 | _bundleOut_0_0_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_0_T_22 = ~valueReg[0] & passthruLowIeReg[0]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_1_oval = portReg[1]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_1_oe = oeReg_io_q[1]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_1_ie = ieReg_io_q[1]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_1_oval = iofSelReg[1] ? swPinCtrl_1_oval : auto_iof_out_iof_0_1_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_1_oe = iofSelReg[1] ? swPinCtrl_1_oe : 1'h1; // @[GPIO.scala 222:32]
+  wire  iofCtrl_1_ie = iofSelReg[1] & swPinCtrl_1_ie; // @[GPIO.scala 222:32]
+  wire  pre_xor_1_oval = iofEnReg_io_q[1] ? iofCtrl_1_oval : swPinCtrl_1_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_1_T_5 = fallIpReg[1] & fallIeReg[1]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_1_T_6 = riseIpReg[1] & riseIeReg[1] | _bundleOut_0_1_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_1_T_9 = highIpReg[1] & highIeReg[1]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_1_T_10 = _bundleOut_0_1_T_6 | _bundleOut_0_1_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_1_T_13 = lowIpReg[1] & lowIeReg[1]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_1_T_14 = _bundleOut_0_1_T_10 | _bundleOut_0_1_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_1_T_17 = valueReg[1] & passthruHighIeReg[1]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_1_T_18 = _bundleOut_0_1_T_14 | _bundleOut_0_1_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_1_T_22 = ~valueReg[1] & passthruLowIeReg[1]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_2_oval = portReg[2]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_2_oe = oeReg_io_q[2]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_2_ie = ieReg_io_q[2]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_2_oval = iofSelReg[2] ? swPinCtrl_2_oval : auto_iof_out_iof_0_2_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_2_oe = iofSelReg[2] ? swPinCtrl_2_oe : auto_iof_out_iof_0_2_o_oe; // @[GPIO.scala 222:32]
+  wire  iofCtrl_2_ie = iofSelReg[2] ? swPinCtrl_2_ie : auto_iof_out_iof_0_2_o_ie; // @[GPIO.scala 222:32]
+  wire  pre_xor_2_oval = iofEnReg_io_q[2] ? iofCtrl_2_oval : swPinCtrl_2_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_2_T_5 = fallIpReg[2] & fallIeReg[2]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_2_T_6 = riseIpReg[2] & riseIeReg[2] | _bundleOut_0_2_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_2_T_9 = highIpReg[2] & highIeReg[2]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_2_T_10 = _bundleOut_0_2_T_6 | _bundleOut_0_2_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_2_T_13 = lowIpReg[2] & lowIeReg[2]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_2_T_14 = _bundleOut_0_2_T_10 | _bundleOut_0_2_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_2_T_17 = valueReg[2] & passthruHighIeReg[2]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_2_T_18 = _bundleOut_0_2_T_14 | _bundleOut_0_2_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_2_T_22 = ~valueReg[2] & passthruLowIeReg[2]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_3_oval = portReg[3]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_3_oe = oeReg_io_q[3]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_3_ie = ieReg_io_q[3]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_3_oval = iofSelReg[3] ? swPinCtrl_3_oval : auto_iof_out_iof_0_3_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_3_oe = iofSelReg[3] ? swPinCtrl_3_oe : auto_iof_out_iof_0_3_o_oe; // @[GPIO.scala 222:32]
+  wire  iofCtrl_3_ie = iofSelReg[3] ? swPinCtrl_3_ie : auto_iof_out_iof_0_3_o_ie; // @[GPIO.scala 222:32]
+  wire  pre_xor_3_oval = iofEnReg_io_q[3] ? iofCtrl_3_oval : swPinCtrl_3_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_3_T_5 = fallIpReg[3] & fallIeReg[3]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_3_T_6 = riseIpReg[3] & riseIeReg[3] | _bundleOut_0_3_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_3_T_9 = highIpReg[3] & highIeReg[3]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_3_T_10 = _bundleOut_0_3_T_6 | _bundleOut_0_3_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_3_T_13 = lowIpReg[3] & lowIeReg[3]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_3_T_14 = _bundleOut_0_3_T_10 | _bundleOut_0_3_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_3_T_17 = valueReg[3] & passthruHighIeReg[3]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_3_T_18 = _bundleOut_0_3_T_14 | _bundleOut_0_3_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_3_T_22 = ~valueReg[3] & passthruLowIeReg[3]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_4_oval = portReg[4]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_4_oe = oeReg_io_q[4]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_4_ie = ieReg_io_q[4]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_4_oval = iofSelReg[4] ? swPinCtrl_4_oval : auto_iof_out_iof_0_4_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_4_oe = iofSelReg[4] ? swPinCtrl_4_oe : auto_iof_out_iof_0_4_o_oe; // @[GPIO.scala 222:32]
+  wire  iofCtrl_4_ie = iofSelReg[4] ? swPinCtrl_4_ie : auto_iof_out_iof_0_4_o_ie; // @[GPIO.scala 222:32]
+  wire  pre_xor_4_oval = iofEnReg_io_q[4] ? iofCtrl_4_oval : swPinCtrl_4_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_4_T_5 = fallIpReg[4] & fallIeReg[4]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_4_T_6 = riseIpReg[4] & riseIeReg[4] | _bundleOut_0_4_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_4_T_9 = highIpReg[4] & highIeReg[4]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_4_T_10 = _bundleOut_0_4_T_6 | _bundleOut_0_4_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_4_T_13 = lowIpReg[4] & lowIeReg[4]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_4_T_14 = _bundleOut_0_4_T_10 | _bundleOut_0_4_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_4_T_17 = valueReg[4] & passthruHighIeReg[4]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_4_T_18 = _bundleOut_0_4_T_14 | _bundleOut_0_4_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_4_T_22 = ~valueReg[4] & passthruLowIeReg[4]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_5_oval = portReg[5]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_5_oe = oeReg_io_q[5]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_5_ie = ieReg_io_q[5]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_5_oval = iofSelReg[5] ? swPinCtrl_5_oval : auto_iof_out_iof_0_5_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_5_oe = iofSelReg[5] ? swPinCtrl_5_oe : auto_iof_out_iof_0_5_o_oe; // @[GPIO.scala 222:32]
+  wire  iofCtrl_5_ie = iofSelReg[5] ? swPinCtrl_5_ie : auto_iof_out_iof_0_5_o_ie; // @[GPIO.scala 222:32]
+  wire  pre_xor_5_oval = iofEnReg_io_q[5] ? iofCtrl_5_oval : swPinCtrl_5_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_5_T_5 = fallIpReg[5] & fallIeReg[5]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_5_T_6 = riseIpReg[5] & riseIeReg[5] | _bundleOut_0_5_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_5_T_9 = highIpReg[5] & highIeReg[5]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_5_T_10 = _bundleOut_0_5_T_6 | _bundleOut_0_5_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_5_T_13 = lowIpReg[5] & lowIeReg[5]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_5_T_14 = _bundleOut_0_5_T_10 | _bundleOut_0_5_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_5_T_17 = valueReg[5] & passthruHighIeReg[5]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_5_T_18 = _bundleOut_0_5_T_14 | _bundleOut_0_5_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_5_T_22 = ~valueReg[5] & passthruLowIeReg[5]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_6_oval = portReg[6]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_6_T_5 = fallIpReg[6] & fallIeReg[6]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_6_T_6 = riseIpReg[6] & riseIeReg[6] | _bundleOut_0_6_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_6_T_9 = highIpReg[6] & highIeReg[6]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_6_T_10 = _bundleOut_0_6_T_6 | _bundleOut_0_6_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_6_T_13 = lowIpReg[6] & lowIeReg[6]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_6_T_14 = _bundleOut_0_6_T_10 | _bundleOut_0_6_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_6_T_17 = valueReg[6] & passthruHighIeReg[6]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_6_T_18 = _bundleOut_0_6_T_14 | _bundleOut_0_6_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_6_T_22 = ~valueReg[6] & passthruLowIeReg[6]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_7_oval = portReg[7]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_7_T_5 = fallIpReg[7] & fallIeReg[7]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_7_T_6 = riseIpReg[7] & riseIeReg[7] | _bundleOut_0_7_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_7_T_9 = highIpReg[7] & highIeReg[7]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_7_T_10 = _bundleOut_0_7_T_6 | _bundleOut_0_7_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_7_T_13 = lowIpReg[7] & lowIeReg[7]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_7_T_14 = _bundleOut_0_7_T_10 | _bundleOut_0_7_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_7_T_17 = valueReg[7] & passthruHighIeReg[7]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_7_T_18 = _bundleOut_0_7_T_14 | _bundleOut_0_7_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_7_T_22 = ~valueReg[7] & passthruLowIeReg[7]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_8_oval = portReg[8]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_8_T_5 = fallIpReg[8] & fallIeReg[8]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_8_T_6 = riseIpReg[8] & riseIeReg[8] | _bundleOut_0_8_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_8_T_9 = highIpReg[8] & highIeReg[8]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_8_T_10 = _bundleOut_0_8_T_6 | _bundleOut_0_8_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_8_T_13 = lowIpReg[8] & lowIeReg[8]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_8_T_14 = _bundleOut_0_8_T_10 | _bundleOut_0_8_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_8_T_17 = valueReg[8] & passthruHighIeReg[8]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_8_T_18 = _bundleOut_0_8_T_14 | _bundleOut_0_8_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_8_T_22 = ~valueReg[8] & passthruLowIeReg[8]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_9_oval = portReg[9]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_9_T_5 = fallIpReg[9] & fallIeReg[9]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_9_T_6 = riseIpReg[9] & riseIeReg[9] | _bundleOut_0_9_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_9_T_9 = highIpReg[9] & highIeReg[9]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_9_T_10 = _bundleOut_0_9_T_6 | _bundleOut_0_9_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_9_T_13 = lowIpReg[9] & lowIeReg[9]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_9_T_14 = _bundleOut_0_9_T_10 | _bundleOut_0_9_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_9_T_17 = valueReg[9] & passthruHighIeReg[9]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_9_T_18 = _bundleOut_0_9_T_14 | _bundleOut_0_9_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_9_T_22 = ~valueReg[9] & passthruLowIeReg[9]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_10_oval = portReg[10]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_10_T_5 = fallIpReg[10] & fallIeReg[10]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_10_T_6 = riseIpReg[10] & riseIeReg[10] | _bundleOut_0_10_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_10_T_9 = highIpReg[10] & highIeReg[10]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_10_T_10 = _bundleOut_0_10_T_6 | _bundleOut_0_10_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_10_T_13 = lowIpReg[10] & lowIeReg[10]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_10_T_14 = _bundleOut_0_10_T_10 | _bundleOut_0_10_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_10_T_17 = valueReg[10] & passthruHighIeReg[10]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_10_T_18 = _bundleOut_0_10_T_14 | _bundleOut_0_10_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_10_T_22 = ~valueReg[10] & passthruLowIeReg[10]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_11_oval = portReg[11]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_11_T_5 = fallIpReg[11] & fallIeReg[11]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_11_T_6 = riseIpReg[11] & riseIeReg[11] | _bundleOut_0_11_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_11_T_9 = highIpReg[11] & highIeReg[11]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_11_T_10 = _bundleOut_0_11_T_6 | _bundleOut_0_11_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_11_T_13 = lowIpReg[11] & lowIeReg[11]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_11_T_14 = _bundleOut_0_11_T_10 | _bundleOut_0_11_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_11_T_17 = valueReg[11] & passthruHighIeReg[11]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_11_T_18 = _bundleOut_0_11_T_14 | _bundleOut_0_11_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_11_T_22 = ~valueReg[11] & passthruLowIeReg[11]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_12_oval = portReg[12]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_12_oe = oeReg_io_q[12]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_12_ie = ieReg_io_q[12]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_12_oval = iofSelReg[12] & auto_iof_out_iof_1_12_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_12_oe = iofSelReg[12] | auto_iof_out_iof_0_12_o_oe; // @[GPIO.scala 222:32]
+  wire  iofCtrl_12_ie = iofSelReg[12] ? 1'h0 : 1'h1; // @[GPIO.scala 222:32]
+  wire  pre_xor_12_oval = iofEnReg_io_q[12] ? iofCtrl_12_oval : swPinCtrl_12_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_12_T_5 = fallIpReg[12] & fallIeReg[12]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_12_T_6 = riseIpReg[12] & riseIeReg[12] | _bundleOut_0_12_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_12_T_9 = highIpReg[12] & highIeReg[12]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_12_T_10 = _bundleOut_0_12_T_6 | _bundleOut_0_12_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_12_T_13 = lowIpReg[12] & lowIeReg[12]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_12_T_14 = _bundleOut_0_12_T_10 | _bundleOut_0_12_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_12_T_17 = valueReg[12] & passthruHighIeReg[12]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_12_T_18 = _bundleOut_0_12_T_14 | _bundleOut_0_12_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_12_T_22 = ~valueReg[12] & passthruLowIeReg[12]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_13_oval = portReg[13]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_13_oe = oeReg_io_q[13]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_13_ie = ieReg_io_q[13]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_13_oval = iofSelReg[13] & auto_iof_out_iof_1_13_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_13_oe = iofSelReg[13] | auto_iof_out_iof_0_13_o_oe; // @[GPIO.scala 222:32]
+  wire  iofCtrl_13_ie = iofSelReg[13] ? 1'h0 : 1'h1; // @[GPIO.scala 222:32]
+  wire  pre_xor_13_oval = iofEnReg_io_q[13] ? iofCtrl_13_oval : swPinCtrl_13_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_13_T_5 = fallIpReg[13] & fallIeReg[13]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_13_T_6 = riseIpReg[13] & riseIeReg[13] | _bundleOut_0_13_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_13_T_9 = highIpReg[13] & highIeReg[13]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_13_T_10 = _bundleOut_0_13_T_6 | _bundleOut_0_13_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_13_T_13 = lowIpReg[13] & lowIeReg[13]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_13_T_14 = _bundleOut_0_13_T_10 | _bundleOut_0_13_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_13_T_17 = valueReg[13] & passthruHighIeReg[13]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_13_T_18 = _bundleOut_0_13_T_14 | _bundleOut_0_13_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_13_T_22 = ~valueReg[13] & passthruLowIeReg[13]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_14_oval = portReg[14]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_14_oe = oeReg_io_q[14]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_14_ie = ieReg_io_q[14]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_14_oval = iofSelReg[14] & auto_iof_out_iof_1_14_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_14_oe = iofSelReg[14] | auto_iof_out_iof_0_14_o_oe; // @[GPIO.scala 222:32]
+  wire  iofCtrl_14_ie = iofSelReg[14] ? 1'h0 : 1'h1; // @[GPIO.scala 222:32]
+  wire  pre_xor_14_oval = iofEnReg_io_q[14] ? iofCtrl_14_oval : swPinCtrl_14_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_14_T_5 = fallIpReg[14] & fallIeReg[14]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_14_T_6 = riseIpReg[14] & riseIeReg[14] | _bundleOut_0_14_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_14_T_9 = highIpReg[14] & highIeReg[14]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_14_T_10 = _bundleOut_0_14_T_6 | _bundleOut_0_14_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_14_T_13 = lowIpReg[14] & lowIeReg[14]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_14_T_14 = _bundleOut_0_14_T_10 | _bundleOut_0_14_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_14_T_17 = valueReg[14] & passthruHighIeReg[14]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_14_T_18 = _bundleOut_0_14_T_14 | _bundleOut_0_14_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_14_T_22 = ~valueReg[14] & passthruLowIeReg[14]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_15_oval = portReg[15]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_15_oe = oeReg_io_q[15]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_15_ie = ieReg_io_q[15]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_15_oval = iofSelReg[15] & auto_iof_out_iof_1_15_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_15_oe = iofSelReg[15] | auto_iof_out_iof_0_15_o_oe; // @[GPIO.scala 222:32]
+  wire  iofCtrl_15_ie = iofSelReg[15] ? 1'h0 : 1'h1; // @[GPIO.scala 222:32]
+  wire  pre_xor_15_oval = iofEnReg_io_q[15] ? iofCtrl_15_oval : swPinCtrl_15_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_15_T_5 = fallIpReg[15] & fallIeReg[15]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_15_T_6 = riseIpReg[15] & riseIeReg[15] | _bundleOut_0_15_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_15_T_9 = highIpReg[15] & highIeReg[15]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_15_T_10 = _bundleOut_0_15_T_6 | _bundleOut_0_15_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_15_T_13 = lowIpReg[15] & lowIeReg[15]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_15_T_14 = _bundleOut_0_15_T_10 | _bundleOut_0_15_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_15_T_17 = valueReg[15] & passthruHighIeReg[15]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_15_T_18 = _bundleOut_0_15_T_14 | _bundleOut_0_15_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_15_T_22 = ~valueReg[15] & passthruLowIeReg[15]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_16_oval = portReg[16]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_16_oe = oeReg_io_q[16]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_16_ie = ieReg_io_q[16]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_16_oe = iofSelReg[16]; // @[GPIO.scala 222:42]
+  wire  iofCtrl_16_oval = iofCtrl_16_oe & auto_iof_out_iof_1_16_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_16_ie = iofCtrl_16_oe ? 1'h0 : 1'h1; // @[GPIO.scala 222:32]
+  wire  pre_xor_16_oval = iofEnReg_io_q[16] ? iofCtrl_16_oval : swPinCtrl_16_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_16_T_5 = fallIpReg[16] & fallIeReg[16]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_16_T_6 = riseIpReg[16] & riseIeReg[16] | _bundleOut_0_16_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_16_T_9 = highIpReg[16] & highIeReg[16]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_16_T_10 = _bundleOut_0_16_T_6 | _bundleOut_0_16_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_16_T_13 = lowIpReg[16] & lowIeReg[16]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_16_T_14 = _bundleOut_0_16_T_10 | _bundleOut_0_16_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_16_T_17 = valueReg[16] & passthruHighIeReg[16]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_16_T_18 = _bundleOut_0_16_T_14 | _bundleOut_0_16_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_16_T_22 = ~valueReg[16] & passthruLowIeReg[16]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_17_oval = portReg[17]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_17_oe = oeReg_io_q[17]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_17_ie = ieReg_io_q[17]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_17_oval = iofSelReg[17] ? auto_iof_out_iof_1_17_o_oval : auto_iof_out_iof_0_17_o_oval; // @[GPIO.scala 222:32]
+  wire  pre_xor_17_oval = iofEnReg_io_q[17] ? iofCtrl_17_oval : swPinCtrl_17_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_17_T_5 = fallIpReg[17] & fallIeReg[17]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_17_T_6 = riseIpReg[17] & riseIeReg[17] | _bundleOut_0_17_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_17_T_9 = highIpReg[17] & highIeReg[17]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_17_T_10 = _bundleOut_0_17_T_6 | _bundleOut_0_17_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_17_T_13 = lowIpReg[17] & lowIeReg[17]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_17_T_14 = _bundleOut_0_17_T_10 | _bundleOut_0_17_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_17_T_17 = valueReg[17] & passthruHighIeReg[17]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_17_T_18 = _bundleOut_0_17_T_14 | _bundleOut_0_17_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_17_T_22 = ~valueReg[17] & passthruLowIeReg[17]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_18_oval = portReg[18]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_18_oe = oeReg_io_q[18]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_18_ie = ieReg_io_q[18]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_18_oe = iofSelReg[18]; // @[GPIO.scala 222:42]
+  wire  iofCtrl_18_oval = iofCtrl_18_oe & auto_iof_out_iof_1_18_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_18_ie = iofCtrl_18_oe ? 1'h0 : 1'h1; // @[GPIO.scala 222:32]
+  wire  pre_xor_18_oval = iofEnReg_io_q[18] ? iofCtrl_18_oval : swPinCtrl_18_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_18_T_5 = fallIpReg[18] & fallIeReg[18]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_18_T_6 = riseIpReg[18] & riseIeReg[18] | _bundleOut_0_18_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_18_T_9 = highIpReg[18] & highIeReg[18]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_18_T_10 = _bundleOut_0_18_T_6 | _bundleOut_0_18_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_18_T_13 = lowIpReg[18] & lowIeReg[18]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_18_T_14 = _bundleOut_0_18_T_10 | _bundleOut_0_18_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_18_T_17 = valueReg[18] & passthruHighIeReg[18]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_18_T_18 = _bundleOut_0_18_T_14 | _bundleOut_0_18_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_18_T_22 = ~valueReg[18] & passthruLowIeReg[18]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_19_oval = portReg[19]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_19_oe = oeReg_io_q[19]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_19_ie = ieReg_io_q[19]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_19_oval = iofSelReg[19] ? auto_iof_out_iof_1_19_o_oval : auto_iof_out_iof_0_19_o_oval; // @[GPIO.scala 222:32]
+  wire  pre_xor_19_oval = iofEnReg_io_q[19] ? iofCtrl_19_oval : swPinCtrl_19_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_19_T_5 = fallIpReg[19] & fallIeReg[19]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_19_T_6 = riseIpReg[19] & riseIeReg[19] | _bundleOut_0_19_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_19_T_9 = highIpReg[19] & highIeReg[19]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_19_T_10 = _bundleOut_0_19_T_6 | _bundleOut_0_19_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_19_T_13 = lowIpReg[19] & lowIeReg[19]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_19_T_14 = _bundleOut_0_19_T_10 | _bundleOut_0_19_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_19_T_17 = valueReg[19] & passthruHighIeReg[19]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_19_T_18 = _bundleOut_0_19_T_14 | _bundleOut_0_19_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_19_T_22 = ~valueReg[19] & passthruLowIeReg[19]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_20_oval = portReg[20]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_20_oe = oeReg_io_q[20]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_20_ie = ieReg_io_q[20]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_20_oe = iofSelReg[20]; // @[GPIO.scala 222:42]
+  wire  iofCtrl_20_oval = iofCtrl_20_oe & auto_iof_out_iof_1_20_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_20_ie = iofCtrl_20_oe ? 1'h0 : 1'h1; // @[GPIO.scala 222:32]
+  wire  pre_xor_20_oval = iofEnReg_io_q[20] ? iofCtrl_20_oval : swPinCtrl_20_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_20_T_5 = fallIpReg[20] & fallIeReg[20]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_20_T_6 = riseIpReg[20] & riseIeReg[20] | _bundleOut_0_20_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_20_T_9 = highIpReg[20] & highIeReg[20]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_20_T_10 = _bundleOut_0_20_T_6 | _bundleOut_0_20_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_20_T_13 = lowIpReg[20] & lowIeReg[20]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_20_T_14 = _bundleOut_0_20_T_10 | _bundleOut_0_20_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_20_T_17 = valueReg[20] & passthruHighIeReg[20]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_20_T_18 = _bundleOut_0_20_T_14 | _bundleOut_0_20_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_20_T_22 = ~valueReg[20] & passthruLowIeReg[20]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_21_oval = portReg[21]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_21_oe = oeReg_io_q[21]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_21_ie = ieReg_io_q[21]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_21_oval = iofSelReg[21] ? auto_iof_out_iof_1_21_o_oval : auto_iof_out_iof_0_21_o_oval; // @[GPIO.scala 222:32]
+  wire  pre_xor_21_oval = iofEnReg_io_q[21] ? iofCtrl_21_oval : swPinCtrl_21_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_21_T_5 = fallIpReg[21] & fallIeReg[21]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_21_T_6 = riseIpReg[21] & riseIeReg[21] | _bundleOut_0_21_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_21_T_9 = highIpReg[21] & highIeReg[21]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_21_T_10 = _bundleOut_0_21_T_6 | _bundleOut_0_21_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_21_T_13 = lowIpReg[21] & lowIeReg[21]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_21_T_14 = _bundleOut_0_21_T_10 | _bundleOut_0_21_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_21_T_17 = valueReg[21] & passthruHighIeReg[21]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_21_T_18 = _bundleOut_0_21_T_14 | _bundleOut_0_21_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_21_T_22 = ~valueReg[21] & passthruLowIeReg[21]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_22_oval = portReg[22]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_22_oe = oeReg_io_q[22]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_22_ie = ieReg_io_q[22]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_22_oe = iofSelReg[22]; // @[GPIO.scala 222:42]
+  wire  iofCtrl_22_oval = iofCtrl_22_oe & auto_iof_out_iof_1_22_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_22_ie = iofCtrl_22_oe ? 1'h0 : 1'h1; // @[GPIO.scala 222:32]
+  wire  pre_xor_22_oval = iofEnReg_io_q[22] ? iofCtrl_22_oval : swPinCtrl_22_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_22_T_5 = fallIpReg[22] & fallIeReg[22]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_22_T_6 = riseIpReg[22] & riseIeReg[22] | _bundleOut_0_22_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_22_T_9 = highIpReg[22] & highIeReg[22]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_22_T_10 = _bundleOut_0_22_T_6 | _bundleOut_0_22_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_22_T_13 = lowIpReg[22] & lowIeReg[22]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_22_T_14 = _bundleOut_0_22_T_10 | _bundleOut_0_22_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_22_T_17 = valueReg[22] & passthruHighIeReg[22]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_22_T_18 = _bundleOut_0_22_T_14 | _bundleOut_0_22_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_22_T_22 = ~valueReg[22] & passthruLowIeReg[22]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_23_oval = portReg[23]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_23_oe = oeReg_io_q[23]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_23_ie = ieReg_io_q[23]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_23_oval = iofSelReg[23] ? auto_iof_out_iof_1_23_o_oval : auto_iof_out_iof_0_23_o_oval; // @[GPIO.scala 222:32]
+  wire  pre_xor_23_oval = iofEnReg_io_q[23] ? iofCtrl_23_oval : swPinCtrl_23_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_23_T_5 = fallIpReg[23] & fallIeReg[23]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_23_T_6 = riseIpReg[23] & riseIeReg[23] | _bundleOut_0_23_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_23_T_9 = highIpReg[23] & highIeReg[23]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_23_T_10 = _bundleOut_0_23_T_6 | _bundleOut_0_23_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_23_T_13 = lowIpReg[23] & lowIeReg[23]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_23_T_14 = _bundleOut_0_23_T_10 | _bundleOut_0_23_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_23_T_17 = valueReg[23] & passthruHighIeReg[23]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_23_T_18 = _bundleOut_0_23_T_14 | _bundleOut_0_23_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_23_T_22 = ~valueReg[23] & passthruLowIeReg[23]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_24_oval = portReg[24]; // @[GPIO.scala 199:37]
+  wire  swPinCtrl_24_oe = oeReg_io_q[24]; // @[GPIO.scala 200:40]
+  wire  swPinCtrl_24_ie = ieReg_io_q[24]; // @[GPIO.scala 202:40]
+  wire  iofCtrl_24_oval = iofSelReg[24] ? swPinCtrl_24_oval : auto_iof_out_iof_0_24_o_oval; // @[GPIO.scala 222:32]
+  wire  iofCtrl_24_oe = iofSelReg[24] ? swPinCtrl_24_oe : 1'h1; // @[GPIO.scala 222:32]
+  wire  iofCtrl_24_ie = iofSelReg[24] & swPinCtrl_24_ie; // @[GPIO.scala 222:32]
+  wire  pre_xor_24_oval = iofEnReg_io_q[24] ? iofCtrl_24_oval : swPinCtrl_24_oval; // @[GPIO.scala 229:22]
+  wire  _bundleOut_0_24_T_5 = fallIpReg[24] & fallIeReg[24]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_24_T_6 = riseIpReg[24] & riseIeReg[24] | _bundleOut_0_24_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_24_T_9 = highIpReg[24] & highIeReg[24]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_24_T_10 = _bundleOut_0_24_T_6 | _bundleOut_0_24_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_24_T_13 = lowIpReg[24] & lowIeReg[24]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_24_T_14 = _bundleOut_0_24_T_10 | _bundleOut_0_24_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_24_T_17 = valueReg[24] & passthruHighIeReg[24]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_24_T_18 = _bundleOut_0_24_T_14 | _bundleOut_0_24_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_24_T_22 = ~valueReg[24] & passthruLowIeReg[24]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_25_oval = portReg[25]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_25_T_5 = fallIpReg[25] & fallIeReg[25]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_25_T_6 = riseIpReg[25] & riseIeReg[25] | _bundleOut_0_25_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_25_T_9 = highIpReg[25] & highIeReg[25]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_25_T_10 = _bundleOut_0_25_T_6 | _bundleOut_0_25_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_25_T_13 = lowIpReg[25] & lowIeReg[25]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_25_T_14 = _bundleOut_0_25_T_10 | _bundleOut_0_25_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_25_T_17 = valueReg[25] & passthruHighIeReg[25]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_25_T_18 = _bundleOut_0_25_T_14 | _bundleOut_0_25_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_25_T_22 = ~valueReg[25] & passthruLowIeReg[25]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_26_oval = portReg[26]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_26_T_5 = fallIpReg[26] & fallIeReg[26]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_26_T_6 = riseIpReg[26] & riseIeReg[26] | _bundleOut_0_26_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_26_T_9 = highIpReg[26] & highIeReg[26]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_26_T_10 = _bundleOut_0_26_T_6 | _bundleOut_0_26_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_26_T_13 = lowIpReg[26] & lowIeReg[26]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_26_T_14 = _bundleOut_0_26_T_10 | _bundleOut_0_26_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_26_T_17 = valueReg[26] & passthruHighIeReg[26]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_26_T_18 = _bundleOut_0_26_T_14 | _bundleOut_0_26_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_26_T_22 = ~valueReg[26] & passthruLowIeReg[26]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_27_oval = portReg[27]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_27_T_5 = fallIpReg[27] & fallIeReg[27]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_27_T_6 = riseIpReg[27] & riseIeReg[27] | _bundleOut_0_27_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_27_T_9 = highIpReg[27] & highIeReg[27]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_27_T_10 = _bundleOut_0_27_T_6 | _bundleOut_0_27_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_27_T_13 = lowIpReg[27] & lowIeReg[27]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_27_T_14 = _bundleOut_0_27_T_10 | _bundleOut_0_27_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_27_T_17 = valueReg[27] & passthruHighIeReg[27]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_27_T_18 = _bundleOut_0_27_T_14 | _bundleOut_0_27_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_27_T_22 = ~valueReg[27] & passthruLowIeReg[27]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_28_oval = portReg[28]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_28_T_5 = fallIpReg[28] & fallIeReg[28]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_28_T_6 = riseIpReg[28] & riseIeReg[28] | _bundleOut_0_28_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_28_T_9 = highIpReg[28] & highIeReg[28]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_28_T_10 = _bundleOut_0_28_T_6 | _bundleOut_0_28_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_28_T_13 = lowIpReg[28] & lowIeReg[28]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_28_T_14 = _bundleOut_0_28_T_10 | _bundleOut_0_28_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_28_T_17 = valueReg[28] & passthruHighIeReg[28]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_28_T_18 = _bundleOut_0_28_T_14 | _bundleOut_0_28_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_28_T_22 = ~valueReg[28] & passthruLowIeReg[28]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_29_oval = portReg[29]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_29_T_5 = fallIpReg[29] & fallIeReg[29]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_29_T_6 = riseIpReg[29] & riseIeReg[29] | _bundleOut_0_29_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_29_T_9 = highIpReg[29] & highIeReg[29]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_29_T_10 = _bundleOut_0_29_T_6 | _bundleOut_0_29_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_29_T_13 = lowIpReg[29] & lowIeReg[29]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_29_T_14 = _bundleOut_0_29_T_10 | _bundleOut_0_29_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_29_T_17 = valueReg[29] & passthruHighIeReg[29]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_29_T_18 = _bundleOut_0_29_T_14 | _bundleOut_0_29_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_29_T_22 = ~valueReg[29] & passthruLowIeReg[29]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_30_oval = portReg[30]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_30_T_5 = fallIpReg[30] & fallIeReg[30]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_30_T_6 = riseIpReg[30] & riseIeReg[30] | _bundleOut_0_30_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_30_T_9 = highIpReg[30] & highIeReg[30]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_30_T_10 = _bundleOut_0_30_T_6 | _bundleOut_0_30_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_30_T_13 = lowIpReg[30] & lowIeReg[30]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_30_T_14 = _bundleOut_0_30_T_10 | _bundleOut_0_30_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_30_T_17 = valueReg[30] & passthruHighIeReg[30]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_30_T_18 = _bundleOut_0_30_T_14 | _bundleOut_0_30_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_30_T_22 = ~valueReg[30] & passthruLowIeReg[30]; // @[GPIO.scala 243:42]
+  wire  swPinCtrl_31_oval = portReg[31]; // @[GPIO.scala 199:37]
+  wire  _bundleOut_0_31_T_5 = fallIpReg[31] & fallIeReg[31]; // @[GPIO.scala 239:42]
+  wire  _bundleOut_0_31_T_6 = riseIpReg[31] & riseIeReg[31] | _bundleOut_0_31_T_5; // @[GPIO.scala 238:58]
+  wire  _bundleOut_0_31_T_9 = highIpReg[31] & highIeReg[31]; // @[GPIO.scala 240:42]
+  wire  _bundleOut_0_31_T_10 = _bundleOut_0_31_T_6 | _bundleOut_0_31_T_9; // @[GPIO.scala 239:60]
+  wire  _bundleOut_0_31_T_13 = lowIpReg[31] & lowIeReg[31]; // @[GPIO.scala 241:41]
+  wire  _bundleOut_0_31_T_14 = _bundleOut_0_31_T_10 | _bundleOut_0_31_T_13; // @[GPIO.scala 240:60]
+  wire  _bundleOut_0_31_T_17 = valueReg[31] & passthruHighIeReg[31]; // @[GPIO.scala 242:41]
+  wire  _bundleOut_0_31_T_18 = _bundleOut_0_31_T_14 | _bundleOut_0_31_T_17; // @[GPIO.scala 241:58]
+  wire  _bundleOut_0_31_T_22 = ~valueReg[31] & passthruLowIeReg[31]; // @[GPIO.scala 243:42]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_17 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_in_1(intsource_auto_in_1),
+    .auto_in_2(intsource_auto_in_2),
+    .auto_in_3(intsource_auto_in_3),
+    .auto_in_4(intsource_auto_in_4),
+    .auto_in_5(intsource_auto_in_5),
+    .auto_in_6(intsource_auto_in_6),
+    .auto_in_7(intsource_auto_in_7),
+    .auto_in_8(intsource_auto_in_8),
+    .auto_in_9(intsource_auto_in_9),
+    .auto_in_10(intsource_auto_in_10),
+    .auto_in_11(intsource_auto_in_11),
+    .auto_in_12(intsource_auto_in_12),
+    .auto_in_13(intsource_auto_in_13),
+    .auto_in_14(intsource_auto_in_14),
+    .auto_in_15(intsource_auto_in_15),
+    .auto_in_16(intsource_auto_in_16),
+    .auto_in_17(intsource_auto_in_17),
+    .auto_in_18(intsource_auto_in_18),
+    .auto_in_19(intsource_auto_in_19),
+    .auto_in_20(intsource_auto_in_20),
+    .auto_in_21(intsource_auto_in_21),
+    .auto_in_22(intsource_auto_in_22),
+    .auto_in_23(intsource_auto_in_23),
+    .auto_in_24(intsource_auto_in_24),
+    .auto_in_25(intsource_auto_in_25),
+    .auto_in_26(intsource_auto_in_26),
+    .auto_in_27(intsource_auto_in_27),
+    .auto_in_28(intsource_auto_in_28),
+    .auto_in_29(intsource_auto_in_29),
+    .auto_in_30(intsource_auto_in_30),
+    .auto_in_31(intsource_auto_in_31),
+    .auto_out_sync_0(intsource_auto_out_sync_0),
+    .auto_out_sync_1(intsource_auto_out_sync_1),
+    .auto_out_sync_2(intsource_auto_out_sync_2),
+    .auto_out_sync_3(intsource_auto_out_sync_3),
+    .auto_out_sync_4(intsource_auto_out_sync_4),
+    .auto_out_sync_5(intsource_auto_out_sync_5),
+    .auto_out_sync_6(intsource_auto_out_sync_6),
+    .auto_out_sync_7(intsource_auto_out_sync_7),
+    .auto_out_sync_8(intsource_auto_out_sync_8),
+    .auto_out_sync_9(intsource_auto_out_sync_9),
+    .auto_out_sync_10(intsource_auto_out_sync_10),
+    .auto_out_sync_11(intsource_auto_out_sync_11),
+    .auto_out_sync_12(intsource_auto_out_sync_12),
+    .auto_out_sync_13(intsource_auto_out_sync_13),
+    .auto_out_sync_14(intsource_auto_out_sync_14),
+    .auto_out_sync_15(intsource_auto_out_sync_15),
+    .auto_out_sync_16(intsource_auto_out_sync_16),
+    .auto_out_sync_17(intsource_auto_out_sync_17),
+    .auto_out_sync_18(intsource_auto_out_sync_18),
+    .auto_out_sync_19(intsource_auto_out_sync_19),
+    .auto_out_sync_20(intsource_auto_out_sync_20),
+    .auto_out_sync_21(intsource_auto_out_sync_21),
+    .auto_out_sync_22(intsource_auto_out_sync_22),
+    .auto_out_sync_23(intsource_auto_out_sync_23),
+    .auto_out_sync_24(intsource_auto_out_sync_24),
+    .auto_out_sync_25(intsource_auto_out_sync_25),
+    .auto_out_sync_26(intsource_auto_out_sync_26),
+    .auto_out_sync_27(intsource_auto_out_sync_27),
+    .auto_out_sync_28(intsource_auto_out_sync_28),
+    .auto_out_sync_29(intsource_auto_out_sync_29),
+    .auto_out_sync_30(intsource_auto_out_sync_30),
+    .auto_out_sync_31(intsource_auto_out_sync_31)
+  );
+  TLMonitor_66 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  AsyncResetRegVec_w32_i0 oeReg ( // @[GPIO.scala 79:22]
+    .clock(oeReg_clock),
+    .reset(oeReg_reset),
+    .io_d(oeReg_io_d),
+    .io_q(oeReg_io_q),
+    .io_en(oeReg_io_en)
+  );
+  AsyncResetRegVec_w32_i0 pueReg ( // @[GPIO.scala 80:22]
+    .clock(pueReg_clock),
+    .reset(pueReg_reset),
+    .io_d(pueReg_io_d),
+    .io_q(pueReg_io_q),
+    .io_en(pueReg_io_en)
+  );
+  AsyncResetRegVec_w32_i0 ieReg ( // @[GPIO.scala 82:22]
+    .clock(ieReg_clock),
+    .reset(ieReg_reset),
+    .io_d(ieReg_io_d),
+    .io_q(ieReg_io_q),
+    .io_en(ieReg_io_en)
+  );
+  AsyncResetRegVec_w32_i0 poeReg ( // @[GPIO.scala 84:22]
+    .clock(poeReg_clock),
+    .reset(poeReg_reset),
+    .io_d(poeReg_io_d),
+    .io_q(poeReg_io_q),
+    .io_en(poeReg_io_en)
+  );
+  SynchronizerShiftReg_w32_d3 inSyncReg_inSyncReg ( // @[ShiftReg.scala 45:23]
+    .clock(inSyncReg_inSyncReg_clock),
+    .io_d(inSyncReg_inSyncReg_io_d),
+    .io_q(inSyncReg_inSyncReg_io_q)
+  );
+  AsyncResetRegVec_w32_i0 iofEnReg ( // @[GPIO.scala 105:25]
+    .clock(iofEnReg_clock),
+    .reset(iofEnReg_reset),
+    .io_d(iofEnReg_io_d),
+    .io_q(iofEnReg_io_q),
+    .io_en(iofEnReg_io_en)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_1 = intsource_auto_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_2 = intsource_auto_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_3 = intsource_auto_out_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_4 = intsource_auto_out_sync_4; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_5 = intsource_auto_out_sync_5; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_6 = intsource_auto_out_sync_6; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_7 = intsource_auto_out_sync_7; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_8 = intsource_auto_out_sync_8; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_9 = intsource_auto_out_sync_9; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_10 = intsource_auto_out_sync_10; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_11 = intsource_auto_out_sync_11; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_12 = intsource_auto_out_sync_12; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_13 = intsource_auto_out_sync_13; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_14 = intsource_auto_out_sync_14; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_15 = intsource_auto_out_sync_15; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_16 = intsource_auto_out_sync_16; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_17 = intsource_auto_out_sync_17; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_18 = intsource_auto_out_sync_18; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_19 = intsource_auto_out_sync_19; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_20 = intsource_auto_out_sync_20; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_21 = intsource_auto_out_sync_21; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_22 = intsource_auto_out_sync_22; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_23 = intsource_auto_out_sync_23; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_24 = intsource_auto_out_sync_24; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_25 = intsource_auto_out_sync_25; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_26 = intsource_auto_out_sync_26; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_27 = intsource_auto_out_sync_27; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_28 = intsource_auto_out_sync_28; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_29 = intsource_auto_out_sync_29; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_30 = intsource_auto_out_sync_30; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_31 = intsource_auto_out_sync_31; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_iof_out_iof_0_2_i_ival = inSyncReg[2]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_3_i_ival = inSyncReg[3]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_4_i_ival = inSyncReg[4]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_5_i_ival = inSyncReg[5]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_12_i_ival = inSyncReg[12]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_13_i_ival = inSyncReg[13]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_14_i_ival = inSyncReg[14]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_15_i_ival = inSyncReg[15]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_16_i_ival = inSyncReg[16]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_18_i_ival = inSyncReg[18]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_20_i_ival = inSyncReg[20]; // @[GPIO.scala 247:49]
+  assign auto_iof_out_iof_0_22_i_ival = inSyncReg[22]; // @[GPIO.scala 247:49]
+  assign auto_io_out_pins_0_o_oval = pre_xor_oval ^ xorReg[0]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_0_o_oe = iofEnReg_io_q[0] ? iofCtrl_0_oe : swPinCtrl_0_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_0_o_ie = iofEnReg_io_q[0] ? iofCtrl_0_ie : swPinCtrl_0_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_1_o_oval = pre_xor_1_oval ^ xorReg[1]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_1_o_oe = iofEnReg_io_q[1] ? iofCtrl_1_oe : swPinCtrl_1_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_1_o_ie = iofEnReg_io_q[1] ? iofCtrl_1_ie : swPinCtrl_1_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_2_o_oval = pre_xor_2_oval ^ xorReg[2]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_2_o_oe = iofEnReg_io_q[2] ? iofCtrl_2_oe : swPinCtrl_2_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_2_o_ie = iofEnReg_io_q[2] ? iofCtrl_2_ie : swPinCtrl_2_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_3_o_oval = pre_xor_3_oval ^ xorReg[3]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_3_o_oe = iofEnReg_io_q[3] ? iofCtrl_3_oe : swPinCtrl_3_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_3_o_ie = iofEnReg_io_q[3] ? iofCtrl_3_ie : swPinCtrl_3_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_4_o_oval = pre_xor_4_oval ^ xorReg[4]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_4_o_oe = iofEnReg_io_q[4] ? iofCtrl_4_oe : swPinCtrl_4_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_4_o_ie = iofEnReg_io_q[4] ? iofCtrl_4_ie : swPinCtrl_4_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_5_o_oval = pre_xor_5_oval ^ xorReg[5]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_5_o_oe = iofEnReg_io_q[5] ? iofCtrl_5_oe : swPinCtrl_5_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_5_o_ie = iofEnReg_io_q[5] ? iofCtrl_5_ie : swPinCtrl_5_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_6_o_oval = swPinCtrl_6_oval ^ xorReg[6]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_6_o_oe = oeReg_io_q[6]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_7_o_oval = swPinCtrl_7_oval ^ xorReg[7]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_7_o_oe = oeReg_io_q[7]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_8_o_oval = swPinCtrl_8_oval ^ xorReg[8]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_8_o_oe = oeReg_io_q[8]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_9_o_oval = swPinCtrl_9_oval ^ xorReg[9]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_9_o_oe = oeReg_io_q[9]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_10_o_oval = swPinCtrl_10_oval ^ xorReg[10]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_10_o_oe = oeReg_io_q[10]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_11_o_oval = swPinCtrl_11_oval ^ xorReg[11]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_11_o_oe = oeReg_io_q[11]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_12_o_oval = pre_xor_12_oval ^ xorReg[12]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_12_o_oe = iofEnReg_io_q[12] ? iofCtrl_12_oe : swPinCtrl_12_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_12_o_ie = iofEnReg_io_q[12] ? iofCtrl_12_ie : swPinCtrl_12_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_13_o_oval = pre_xor_13_oval ^ xorReg[13]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_13_o_oe = iofEnReg_io_q[13] ? iofCtrl_13_oe : swPinCtrl_13_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_13_o_ie = iofEnReg_io_q[13] ? iofCtrl_13_ie : swPinCtrl_13_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_14_o_oval = pre_xor_14_oval ^ xorReg[14]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_14_o_oe = iofEnReg_io_q[14] ? iofCtrl_14_oe : swPinCtrl_14_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_14_o_ie = iofEnReg_io_q[14] ? iofCtrl_14_ie : swPinCtrl_14_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_15_o_oval = pre_xor_15_oval ^ xorReg[15]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_15_o_oe = iofEnReg_io_q[15] ? iofCtrl_15_oe : swPinCtrl_15_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_15_o_ie = iofEnReg_io_q[15] ? iofCtrl_15_ie : swPinCtrl_15_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_16_o_oval = pre_xor_16_oval ^ xorReg[16]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_16_o_oe = iofEnReg_io_q[16] ? iofCtrl_16_oe : swPinCtrl_16_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_16_o_ie = iofEnReg_io_q[16] ? iofCtrl_16_ie : swPinCtrl_16_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_17_o_oval = pre_xor_17_oval ^ xorReg[17]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_17_o_oe = iofEnReg_io_q[17] | swPinCtrl_17_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_17_o_ie = iofEnReg_io_q[17] ? 1'h0 : swPinCtrl_17_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_18_o_oval = pre_xor_18_oval ^ xorReg[18]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_18_o_oe = iofEnReg_io_q[18] ? iofCtrl_18_oe : swPinCtrl_18_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_18_o_ie = iofEnReg_io_q[18] ? iofCtrl_18_ie : swPinCtrl_18_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_19_o_oval = pre_xor_19_oval ^ xorReg[19]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_19_o_oe = iofEnReg_io_q[19] | swPinCtrl_19_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_19_o_ie = iofEnReg_io_q[19] ? 1'h0 : swPinCtrl_19_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_20_o_oval = pre_xor_20_oval ^ xorReg[20]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_20_o_oe = iofEnReg_io_q[20] ? iofCtrl_20_oe : swPinCtrl_20_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_20_o_ie = iofEnReg_io_q[20] ? iofCtrl_20_ie : swPinCtrl_20_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_21_o_oval = pre_xor_21_oval ^ xorReg[21]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_21_o_oe = iofEnReg_io_q[21] | swPinCtrl_21_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_21_o_ie = iofEnReg_io_q[21] ? 1'h0 : swPinCtrl_21_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_22_o_oval = pre_xor_22_oval ^ xorReg[22]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_22_o_oe = iofEnReg_io_q[22] ? iofCtrl_22_oe : swPinCtrl_22_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_22_o_ie = iofEnReg_io_q[22] ? iofCtrl_22_ie : swPinCtrl_22_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_23_o_oval = pre_xor_23_oval ^ xorReg[23]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_23_o_oe = iofEnReg_io_q[23] | swPinCtrl_23_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_23_o_ie = iofEnReg_io_q[23] ? 1'h0 : swPinCtrl_23_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_24_o_oval = pre_xor_24_oval ^ xorReg[24]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_24_o_oe = iofEnReg_io_q[24] ? iofCtrl_24_oe : swPinCtrl_24_oe; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_24_o_ie = iofEnReg_io_q[24] ? iofCtrl_24_ie : swPinCtrl_24_ie; // @[GPIO.scala 229:22]
+  assign auto_io_out_pins_25_o_oval = swPinCtrl_25_oval ^ xorReg[25]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_25_o_oe = oeReg_io_q[25]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_26_o_oval = swPinCtrl_26_oval ^ xorReg[26]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_26_o_oe = oeReg_io_q[26]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_27_o_oval = swPinCtrl_27_oval ^ xorReg[27]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_27_o_oe = oeReg_io_q[27]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_28_o_oval = swPinCtrl_28_oval ^ xorReg[28]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_28_o_oe = oeReg_io_q[28]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_29_o_oval = swPinCtrl_29_oval ^ xorReg[29]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_29_o_oe = oeReg_io_q[29]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_30_o_oval = swPinCtrl_30_oval ^ xorReg[30]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_30_o_oe = oeReg_io_q[30]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_31_o_oval = swPinCtrl_31_oval ^ xorReg[31]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_31_o_oe = oeReg_io_q[31]; // @[GPIO.scala 200:40]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_169 ? _GEN_201 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = _bundleOut_0_0_T_18 | _bundleOut_0_0_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_1 = _bundleOut_0_1_T_18 | _bundleOut_0_1_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_2 = _bundleOut_0_2_T_18 | _bundleOut_0_2_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_3 = _bundleOut_0_3_T_18 | _bundleOut_0_3_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_4 = _bundleOut_0_4_T_18 | _bundleOut_0_4_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_5 = _bundleOut_0_5_T_18 | _bundleOut_0_5_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_6 = _bundleOut_0_6_T_18 | _bundleOut_0_6_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_7 = _bundleOut_0_7_T_18 | _bundleOut_0_7_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_8 = _bundleOut_0_8_T_18 | _bundleOut_0_8_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_9 = _bundleOut_0_9_T_18 | _bundleOut_0_9_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_10 = _bundleOut_0_10_T_18 | _bundleOut_0_10_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_11 = _bundleOut_0_11_T_18 | _bundleOut_0_11_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_12 = _bundleOut_0_12_T_18 | _bundleOut_0_12_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_13 = _bundleOut_0_13_T_18 | _bundleOut_0_13_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_14 = _bundleOut_0_14_T_18 | _bundleOut_0_14_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_15 = _bundleOut_0_15_T_18 | _bundleOut_0_15_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_16 = _bundleOut_0_16_T_18 | _bundleOut_0_16_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_17 = _bundleOut_0_17_T_18 | _bundleOut_0_17_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_18 = _bundleOut_0_18_T_18 | _bundleOut_0_18_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_19 = _bundleOut_0_19_T_18 | _bundleOut_0_19_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_20 = _bundleOut_0_20_T_18 | _bundleOut_0_20_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_21 = _bundleOut_0_21_T_18 | _bundleOut_0_21_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_22 = _bundleOut_0_22_T_18 | _bundleOut_0_22_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_23 = _bundleOut_0_23_T_18 | _bundleOut_0_23_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_24 = _bundleOut_0_24_T_18 | _bundleOut_0_24_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_25 = _bundleOut_0_25_T_18 | _bundleOut_0_25_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_26 = _bundleOut_0_26_T_18 | _bundleOut_0_26_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_27 = _bundleOut_0_27_T_18 | _bundleOut_0_27_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_28 = _bundleOut_0_28_T_18 | _bundleOut_0_28_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_29 = _bundleOut_0_29_T_18 | _bundleOut_0_29_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_30 = _bundleOut_0_30_T_18 | _bundleOut_0_30_T_22; // @[GPIO.scala 242:67]
+  assign intsource_auto_in_31 = _bundleOut_0_31_T_18 | _bundleOut_0_31_T_22; // @[GPIO.scala 242:67]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign oeReg_clock = clock;
+  assign oeReg_reset = reset;
+  assign oeReg_io_d = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign oeReg_io_en = out_wivalid_9 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign pueReg_clock = clock;
+  assign pueReg_reset = reset;
+  assign pueReg_io_d = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pueReg_io_en = out_wivalid_19 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign ieReg_clock = clock;
+  assign ieReg_reset = reset;
+  assign ieReg_io_d = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign ieReg_io_en = out_wivalid_5 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign poeReg_clock = clock;
+  assign poeReg_reset = reset;
+  assign poeReg_io_d = 32'h0;
+  assign poeReg_io_en = 1'h0;
+  assign inSyncReg_inSyncReg_clock = clock;
+  assign inSyncReg_inSyncReg_io_d = {inVal_hi,inVal_lo}; // @[GPIO.scala 88:41]
+  assign iofEnReg_clock = clock;
+  assign iofEnReg_reset = reset;
+  assign iofEnReg_io_d = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iofEnReg_io_en = out_wivalid_3 & out_wimask; // @[RegisterRouter.scala 83:24]
+  always @(posedge clock) begin
+    if (reset) begin // @[GPIO.scala 77:20]
+      portReg <= 32'h0; // @[GPIO.scala 77:20]
+    end else if (out_f_wivalid_13) begin // @[RegField.scala 74:88]
+      portReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 81:23]
+      dsReg_0 <= 32'h0; // @[GPIO.scala 81:23]
+    end else if (out_f_wivalid_1) begin // @[RegField.scala 74:88]
+      dsReg_0 <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 90:23]
+      valueReg <= 32'h0; // @[GPIO.scala 90:23]
+    end else begin
+      valueReg <= inSyncReg; // @[GPIO.scala 90:23]
+    end
+    if (reset) begin // @[GPIO.scala 93:22]
+      highIeReg <= 32'h0; // @[GPIO.scala 93:22]
+    end else if (out_f_wivalid_2) begin // @[RegField.scala 74:88]
+      highIeReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 94:22]
+      lowIeReg <= 32'h0; // @[GPIO.scala 94:22]
+    end else if (out_f_wivalid_11) begin // @[RegField.scala 74:88]
+      lowIeReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 95:22]
+      riseIeReg <= 32'h0; // @[GPIO.scala 95:22]
+    end else if (out_f_wivalid_6) begin // @[RegField.scala 74:88]
+      riseIeReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 96:22]
+      fallIeReg <= 32'h0; // @[GPIO.scala 96:22]
+    end else if (out_f_wivalid_17) begin // @[RegField.scala 74:88]
+      fallIeReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 97:22]
+      highIpReg <= 32'h0; // @[GPIO.scala 97:22]
+    end else begin
+      highIpReg <= _out_highIpReg_T_4; // @[RegField.scala 128:56]
+    end
+    if (reset) begin // @[GPIO.scala 98:22]
+      lowIpReg <= 32'h0; // @[GPIO.scala 98:22]
+    end else begin
+      lowIpReg <= _out_lowIpReg_T_4; // @[RegField.scala 128:56]
+    end
+    if (reset) begin // @[GPIO.scala 99:22]
+      riseIpReg <= 32'h0; // @[GPIO.scala 99:22]
+    end else begin
+      riseIpReg <= _out_riseIpReg_T_4; // @[RegField.scala 128:56]
+    end
+    if (reset) begin // @[GPIO.scala 100:22]
+      fallIpReg <= 32'h0; // @[GPIO.scala 100:22]
+    end else begin
+      fallIpReg <= _out_fallIpReg_T_4; // @[RegField.scala 128:56]
+    end
+    if (reset) begin // @[GPIO.scala 101:30]
+      passthruHighIeReg <= 32'h0; // @[GPIO.scala 101:30]
+    end else if (out_f_wivalid_10) begin // @[RegField.scala 74:88]
+      passthruHighIeReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 102:30]
+      passthruLowIeReg <= 32'h0; // @[GPIO.scala 102:30]
+    end else if (out_f_wivalid_14) begin // @[RegField.scala 74:88]
+      passthruLowIeReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 106:22]
+      iofSelReg <= 32'h0; // @[GPIO.scala 106:22]
+    end else if (out_f_wivalid_20) begin // @[RegField.scala 74:88]
+      iofSelReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 109:22]
+      xorReg <= 32'h0; // @[GPIO.scala 109:22]
+    end else if (out_f_wivalid_15) begin // @[RegField.scala 74:88]
+      xorReg <= bundleIn_0_a_bits_data; // @[RegField.scala 74:92]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  portReg = _RAND_0[31:0];
+  _RAND_1 = {1{`RANDOM}};
+  dsReg_0 = _RAND_1[31:0];
+  _RAND_2 = {1{`RANDOM}};
+  valueReg = _RAND_2[31:0];
+  _RAND_3 = {1{`RANDOM}};
+  highIeReg = _RAND_3[31:0];
+  _RAND_4 = {1{`RANDOM}};
+  lowIeReg = _RAND_4[31:0];
+  _RAND_5 = {1{`RANDOM}};
+  riseIeReg = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  fallIeReg = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  highIpReg = _RAND_7[31:0];
+  _RAND_8 = {1{`RANDOM}};
+  lowIpReg = _RAND_8[31:0];
+  _RAND_9 = {1{`RANDOM}};
+  riseIpReg = _RAND_9[31:0];
+  _RAND_10 = {1{`RANDOM}};
+  fallIpReg = _RAND_10[31:0];
+  _RAND_11 = {1{`RANDOM}};
+  passthruHighIeReg = _RAND_11[31:0];
+  _RAND_12 = {1{`RANDOM}};
+  passthruLowIeReg = _RAND_12[31:0];
+  _RAND_13 = {1{`RANDOM}};
+  iofSelReg = _RAND_13[31:0];
+  _RAND_14 = {1{`RANDOM}};
+  xorReg = _RAND_14[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_9(
+  output        auto_gpio_0_int_xing_out_sync_0,
+  output        auto_gpio_0_int_xing_out_sync_1,
+  output        auto_gpio_0_int_xing_out_sync_2,
+  output        auto_gpio_0_int_xing_out_sync_3,
+  output        auto_gpio_0_int_xing_out_sync_4,
+  output        auto_gpio_0_int_xing_out_sync_5,
+  output        auto_gpio_0_int_xing_out_sync_6,
+  output        auto_gpio_0_int_xing_out_sync_7,
+  output        auto_gpio_0_int_xing_out_sync_8,
+  output        auto_gpio_0_int_xing_out_sync_9,
+  output        auto_gpio_0_int_xing_out_sync_10,
+  output        auto_gpio_0_int_xing_out_sync_11,
+  output        auto_gpio_0_int_xing_out_sync_12,
+  output        auto_gpio_0_int_xing_out_sync_13,
+  output        auto_gpio_0_int_xing_out_sync_14,
+  output        auto_gpio_0_int_xing_out_sync_15,
+  output        auto_gpio_0_int_xing_out_sync_16,
+  output        auto_gpio_0_int_xing_out_sync_17,
+  output        auto_gpio_0_int_xing_out_sync_18,
+  output        auto_gpio_0_int_xing_out_sync_19,
+  output        auto_gpio_0_int_xing_out_sync_20,
+  output        auto_gpio_0_int_xing_out_sync_21,
+  output        auto_gpio_0_int_xing_out_sync_22,
+  output        auto_gpio_0_int_xing_out_sync_23,
+  output        auto_gpio_0_int_xing_out_sync_24,
+  output        auto_gpio_0_int_xing_out_sync_25,
+  output        auto_gpio_0_int_xing_out_sync_26,
+  output        auto_gpio_0_int_xing_out_sync_27,
+  output        auto_gpio_0_int_xing_out_sync_28,
+  output        auto_gpio_0_int_xing_out_sync_29,
+  output        auto_gpio_0_int_xing_out_sync_30,
+  output        auto_gpio_0_int_xing_out_sync_31,
+  output        auto_gpio_0_control_xing_in_a_ready,
+  input         auto_gpio_0_control_xing_in_a_valid,
+  input  [2:0]  auto_gpio_0_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_gpio_0_control_xing_in_a_bits_param,
+  input  [1:0]  auto_gpio_0_control_xing_in_a_bits_size,
+  input  [6:0]  auto_gpio_0_control_xing_in_a_bits_source,
+  input  [28:0] auto_gpio_0_control_xing_in_a_bits_address,
+  input  [3:0]  auto_gpio_0_control_xing_in_a_bits_mask,
+  input  [31:0] auto_gpio_0_control_xing_in_a_bits_data,
+  input         auto_gpio_0_control_xing_in_a_bits_corrupt,
+  input         auto_gpio_0_control_xing_in_d_ready,
+  output        auto_gpio_0_control_xing_in_d_valid,
+  output [2:0]  auto_gpio_0_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_gpio_0_control_xing_in_d_bits_size,
+  output [6:0]  auto_gpio_0_control_xing_in_d_bits_source,
+  output [31:0] auto_gpio_0_control_xing_in_d_bits_data,
+  input         auto_gpio_0_iof_out_iof_0_0_o_oval,
+  input         auto_gpio_0_iof_out_iof_0_1_o_oval,
+  output        auto_gpio_0_iof_out_iof_0_2_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_2_o_oval,
+  input         auto_gpio_0_iof_out_iof_0_2_o_oe,
+  input         auto_gpio_0_iof_out_iof_0_2_o_ie,
+  output        auto_gpio_0_iof_out_iof_0_3_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_3_o_oval,
+  input         auto_gpio_0_iof_out_iof_0_3_o_oe,
+  input         auto_gpio_0_iof_out_iof_0_3_o_ie,
+  output        auto_gpio_0_iof_out_iof_0_4_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_4_o_oval,
+  input         auto_gpio_0_iof_out_iof_0_4_o_oe,
+  input         auto_gpio_0_iof_out_iof_0_4_o_ie,
+  output        auto_gpio_0_iof_out_iof_0_5_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_5_o_oval,
+  input         auto_gpio_0_iof_out_iof_0_5_o_oe,
+  input         auto_gpio_0_iof_out_iof_0_5_o_ie,
+  output        auto_gpio_0_iof_out_iof_0_12_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_12_o_oe,
+  output        auto_gpio_0_iof_out_iof_0_13_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_13_o_oe,
+  output        auto_gpio_0_iof_out_iof_0_14_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_14_o_oe,
+  output        auto_gpio_0_iof_out_iof_0_15_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_15_o_oe,
+  output        auto_gpio_0_iof_out_iof_0_16_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_17_o_oval,
+  output        auto_gpio_0_iof_out_iof_0_18_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_19_o_oval,
+  output        auto_gpio_0_iof_out_iof_0_20_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_21_o_oval,
+  output        auto_gpio_0_iof_out_iof_0_22_i_ival,
+  input         auto_gpio_0_iof_out_iof_0_23_o_oval,
+  input         auto_gpio_0_iof_out_iof_0_24_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_12_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_13_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_14_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_15_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_16_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_17_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_18_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_19_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_20_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_21_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_22_o_oval,
+  input         auto_gpio_0_iof_out_iof_1_23_o_oval,
+  input         auto_gpio_0_io_out_pins_0_i_ival,
+  output        auto_gpio_0_io_out_pins_0_o_oval,
+  output        auto_gpio_0_io_out_pins_0_o_oe,
+  output        auto_gpio_0_io_out_pins_0_o_ie,
+  input         auto_gpio_0_io_out_pins_1_i_ival,
+  output        auto_gpio_0_io_out_pins_1_o_oval,
+  output        auto_gpio_0_io_out_pins_1_o_oe,
+  output        auto_gpio_0_io_out_pins_1_o_ie,
+  input         auto_gpio_0_io_out_pins_2_i_ival,
+  output        auto_gpio_0_io_out_pins_2_o_oval,
+  output        auto_gpio_0_io_out_pins_2_o_oe,
+  output        auto_gpio_0_io_out_pins_2_o_ie,
+  input         auto_gpio_0_io_out_pins_3_i_ival,
+  output        auto_gpio_0_io_out_pins_3_o_oval,
+  output        auto_gpio_0_io_out_pins_3_o_oe,
+  output        auto_gpio_0_io_out_pins_3_o_ie,
+  input         auto_gpio_0_io_out_pins_4_i_ival,
+  output        auto_gpio_0_io_out_pins_4_o_oval,
+  output        auto_gpio_0_io_out_pins_4_o_oe,
+  output        auto_gpio_0_io_out_pins_4_o_ie,
+  input         auto_gpio_0_io_out_pins_5_i_ival,
+  output        auto_gpio_0_io_out_pins_5_o_oval,
+  output        auto_gpio_0_io_out_pins_5_o_oe,
+  output        auto_gpio_0_io_out_pins_5_o_ie,
+  input         auto_gpio_0_io_out_pins_6_i_ival,
+  output        auto_gpio_0_io_out_pins_6_o_oval,
+  output        auto_gpio_0_io_out_pins_6_o_oe,
+  input         auto_gpio_0_io_out_pins_7_i_ival,
+  output        auto_gpio_0_io_out_pins_7_o_oval,
+  output        auto_gpio_0_io_out_pins_7_o_oe,
+  input         auto_gpio_0_io_out_pins_8_i_ival,
+  output        auto_gpio_0_io_out_pins_8_o_oval,
+  output        auto_gpio_0_io_out_pins_8_o_oe,
+  input         auto_gpio_0_io_out_pins_9_i_ival,
+  output        auto_gpio_0_io_out_pins_9_o_oval,
+  output        auto_gpio_0_io_out_pins_9_o_oe,
+  input         auto_gpio_0_io_out_pins_10_i_ival,
+  output        auto_gpio_0_io_out_pins_10_o_oval,
+  output        auto_gpio_0_io_out_pins_10_o_oe,
+  input         auto_gpio_0_io_out_pins_11_i_ival,
+  output        auto_gpio_0_io_out_pins_11_o_oval,
+  output        auto_gpio_0_io_out_pins_11_o_oe,
+  input         auto_gpio_0_io_out_pins_12_i_ival,
+  output        auto_gpio_0_io_out_pins_12_o_oval,
+  output        auto_gpio_0_io_out_pins_12_o_oe,
+  output        auto_gpio_0_io_out_pins_12_o_ie,
+  input         auto_gpio_0_io_out_pins_13_i_ival,
+  output        auto_gpio_0_io_out_pins_13_o_oval,
+  output        auto_gpio_0_io_out_pins_13_o_oe,
+  output        auto_gpio_0_io_out_pins_13_o_ie,
+  input         auto_gpio_0_io_out_pins_14_i_ival,
+  output        auto_gpio_0_io_out_pins_14_o_oval,
+  output        auto_gpio_0_io_out_pins_14_o_oe,
+  output        auto_gpio_0_io_out_pins_14_o_ie,
+  input         auto_gpio_0_io_out_pins_15_i_ival,
+  output        auto_gpio_0_io_out_pins_15_o_oval,
+  output        auto_gpio_0_io_out_pins_15_o_oe,
+  output        auto_gpio_0_io_out_pins_15_o_ie,
+  input         auto_gpio_0_io_out_pins_16_i_ival,
+  output        auto_gpio_0_io_out_pins_16_o_oval,
+  output        auto_gpio_0_io_out_pins_16_o_oe,
+  output        auto_gpio_0_io_out_pins_16_o_ie,
+  input         auto_gpio_0_io_out_pins_17_i_ival,
+  output        auto_gpio_0_io_out_pins_17_o_oval,
+  output        auto_gpio_0_io_out_pins_17_o_oe,
+  output        auto_gpio_0_io_out_pins_17_o_ie,
+  input         auto_gpio_0_io_out_pins_18_i_ival,
+  output        auto_gpio_0_io_out_pins_18_o_oval,
+  output        auto_gpio_0_io_out_pins_18_o_oe,
+  output        auto_gpio_0_io_out_pins_18_o_ie,
+  input         auto_gpio_0_io_out_pins_19_i_ival,
+  output        auto_gpio_0_io_out_pins_19_o_oval,
+  output        auto_gpio_0_io_out_pins_19_o_oe,
+  output        auto_gpio_0_io_out_pins_19_o_ie,
+  input         auto_gpio_0_io_out_pins_20_i_ival,
+  output        auto_gpio_0_io_out_pins_20_o_oval,
+  output        auto_gpio_0_io_out_pins_20_o_oe,
+  output        auto_gpio_0_io_out_pins_20_o_ie,
+  input         auto_gpio_0_io_out_pins_21_i_ival,
+  output        auto_gpio_0_io_out_pins_21_o_oval,
+  output        auto_gpio_0_io_out_pins_21_o_oe,
+  output        auto_gpio_0_io_out_pins_21_o_ie,
+  input         auto_gpio_0_io_out_pins_22_i_ival,
+  output        auto_gpio_0_io_out_pins_22_o_oval,
+  output        auto_gpio_0_io_out_pins_22_o_oe,
+  output        auto_gpio_0_io_out_pins_22_o_ie,
+  input         auto_gpio_0_io_out_pins_23_i_ival,
+  output        auto_gpio_0_io_out_pins_23_o_oval,
+  output        auto_gpio_0_io_out_pins_23_o_oe,
+  output        auto_gpio_0_io_out_pins_23_o_ie,
+  input         auto_gpio_0_io_out_pins_24_i_ival,
+  output        auto_gpio_0_io_out_pins_24_o_oval,
+  output        auto_gpio_0_io_out_pins_24_o_oe,
+  output        auto_gpio_0_io_out_pins_24_o_ie,
+  input         auto_gpio_0_io_out_pins_25_i_ival,
+  output        auto_gpio_0_io_out_pins_25_o_oval,
+  output        auto_gpio_0_io_out_pins_25_o_oe,
+  input         auto_gpio_0_io_out_pins_26_i_ival,
+  output        auto_gpio_0_io_out_pins_26_o_oval,
+  output        auto_gpio_0_io_out_pins_26_o_oe,
+  input         auto_gpio_0_io_out_pins_27_i_ival,
+  output        auto_gpio_0_io_out_pins_27_o_oval,
+  output        auto_gpio_0_io_out_pins_27_o_oe,
+  input         auto_gpio_0_io_out_pins_28_i_ival,
+  output        auto_gpio_0_io_out_pins_28_o_oval,
+  output        auto_gpio_0_io_out_pins_28_o_oe,
+  input         auto_gpio_0_io_out_pins_29_i_ival,
+  output        auto_gpio_0_io_out_pins_29_o_oval,
+  output        auto_gpio_0_io_out_pins_29_o_oe,
+  input         auto_gpio_0_io_out_pins_30_i_ival,
+  output        auto_gpio_0_io_out_pins_30_o_oval,
+  output        auto_gpio_0_io_out_pins_30_o_oe,
+  input         auto_gpio_0_io_out_pins_31_i_ival,
+  output        auto_gpio_0_io_out_pins_31_o_oval,
+  output        auto_gpio_0_io_out_pins_31_o_oe,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  gpio_0_clock; // @[GPIO.scala 282:51]
+  wire  gpio_0_reset; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_0; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_1; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_2; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_3; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_4; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_5; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_6; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_7; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_8; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_9; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_10; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_11; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_12; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_13; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_14; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_15; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_16; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_17; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_18; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_19; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_20; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_21; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_22; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_23; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_24; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_25; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_26; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_27; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_28; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_29; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_30; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_int_xing_out_sync_31; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_control_xing_in_a_ready; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_control_xing_in_a_valid; // @[GPIO.scala 282:51]
+  wire [2:0] gpio_0_auto_control_xing_in_a_bits_opcode; // @[GPIO.scala 282:51]
+  wire [2:0] gpio_0_auto_control_xing_in_a_bits_param; // @[GPIO.scala 282:51]
+  wire [1:0] gpio_0_auto_control_xing_in_a_bits_size; // @[GPIO.scala 282:51]
+  wire [6:0] gpio_0_auto_control_xing_in_a_bits_source; // @[GPIO.scala 282:51]
+  wire [28:0] gpio_0_auto_control_xing_in_a_bits_address; // @[GPIO.scala 282:51]
+  wire [3:0] gpio_0_auto_control_xing_in_a_bits_mask; // @[GPIO.scala 282:51]
+  wire [31:0] gpio_0_auto_control_xing_in_a_bits_data; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_control_xing_in_a_bits_corrupt; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_control_xing_in_d_ready; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_control_xing_in_d_valid; // @[GPIO.scala 282:51]
+  wire [2:0] gpio_0_auto_control_xing_in_d_bits_opcode; // @[GPIO.scala 282:51]
+  wire [1:0] gpio_0_auto_control_xing_in_d_bits_size; // @[GPIO.scala 282:51]
+  wire [6:0] gpio_0_auto_control_xing_in_d_bits_source; // @[GPIO.scala 282:51]
+  wire [31:0] gpio_0_auto_control_xing_in_d_bits_data; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_0_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_1_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_2_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_2_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_2_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_2_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_3_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_3_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_3_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_3_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_4_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_4_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_4_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_4_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_5_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_5_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_5_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_5_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_12_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_12_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_13_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_13_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_14_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_14_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_15_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_15_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_16_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_17_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_18_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_19_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_20_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_21_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_22_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_23_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_0_24_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_12_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_13_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_14_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_15_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_16_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_17_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_18_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_19_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_20_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_21_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_22_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_iof_out_iof_1_23_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_0_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_0_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_0_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_0_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_1_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_1_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_1_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_1_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_2_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_2_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_2_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_2_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_3_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_3_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_3_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_3_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_4_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_4_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_4_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_4_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_5_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_5_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_5_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_5_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_6_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_6_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_6_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_7_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_7_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_7_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_8_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_8_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_8_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_9_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_9_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_9_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_10_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_10_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_10_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_11_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_11_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_11_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_12_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_12_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_12_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_12_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_13_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_13_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_13_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_13_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_14_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_14_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_14_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_14_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_15_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_15_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_15_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_15_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_16_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_16_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_16_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_16_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_17_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_17_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_17_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_17_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_18_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_18_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_18_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_18_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_19_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_19_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_19_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_19_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_20_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_20_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_20_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_20_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_21_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_21_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_21_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_21_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_22_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_22_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_22_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_22_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_23_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_23_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_23_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_23_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_24_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_24_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_24_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_24_o_ie; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_25_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_25_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_25_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_26_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_26_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_26_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_27_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_27_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_27_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_28_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_28_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_28_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_29_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_29_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_29_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_30_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_30_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_30_o_oe; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_31_i_ival; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_31_o_oval; // @[GPIO.scala 282:51]
+  wire  gpio_0_auto_io_out_pins_31_o_oe; // @[GPIO.scala 282:51]
+  TLGPIO gpio_0 ( // @[GPIO.scala 282:51]
+    .clock(gpio_0_clock),
+    .reset(gpio_0_reset),
+    .auto_int_xing_out_sync_0(gpio_0_auto_int_xing_out_sync_0),
+    .auto_int_xing_out_sync_1(gpio_0_auto_int_xing_out_sync_1),
+    .auto_int_xing_out_sync_2(gpio_0_auto_int_xing_out_sync_2),
+    .auto_int_xing_out_sync_3(gpio_0_auto_int_xing_out_sync_3),
+    .auto_int_xing_out_sync_4(gpio_0_auto_int_xing_out_sync_4),
+    .auto_int_xing_out_sync_5(gpio_0_auto_int_xing_out_sync_5),
+    .auto_int_xing_out_sync_6(gpio_0_auto_int_xing_out_sync_6),
+    .auto_int_xing_out_sync_7(gpio_0_auto_int_xing_out_sync_7),
+    .auto_int_xing_out_sync_8(gpio_0_auto_int_xing_out_sync_8),
+    .auto_int_xing_out_sync_9(gpio_0_auto_int_xing_out_sync_9),
+    .auto_int_xing_out_sync_10(gpio_0_auto_int_xing_out_sync_10),
+    .auto_int_xing_out_sync_11(gpio_0_auto_int_xing_out_sync_11),
+    .auto_int_xing_out_sync_12(gpio_0_auto_int_xing_out_sync_12),
+    .auto_int_xing_out_sync_13(gpio_0_auto_int_xing_out_sync_13),
+    .auto_int_xing_out_sync_14(gpio_0_auto_int_xing_out_sync_14),
+    .auto_int_xing_out_sync_15(gpio_0_auto_int_xing_out_sync_15),
+    .auto_int_xing_out_sync_16(gpio_0_auto_int_xing_out_sync_16),
+    .auto_int_xing_out_sync_17(gpio_0_auto_int_xing_out_sync_17),
+    .auto_int_xing_out_sync_18(gpio_0_auto_int_xing_out_sync_18),
+    .auto_int_xing_out_sync_19(gpio_0_auto_int_xing_out_sync_19),
+    .auto_int_xing_out_sync_20(gpio_0_auto_int_xing_out_sync_20),
+    .auto_int_xing_out_sync_21(gpio_0_auto_int_xing_out_sync_21),
+    .auto_int_xing_out_sync_22(gpio_0_auto_int_xing_out_sync_22),
+    .auto_int_xing_out_sync_23(gpio_0_auto_int_xing_out_sync_23),
+    .auto_int_xing_out_sync_24(gpio_0_auto_int_xing_out_sync_24),
+    .auto_int_xing_out_sync_25(gpio_0_auto_int_xing_out_sync_25),
+    .auto_int_xing_out_sync_26(gpio_0_auto_int_xing_out_sync_26),
+    .auto_int_xing_out_sync_27(gpio_0_auto_int_xing_out_sync_27),
+    .auto_int_xing_out_sync_28(gpio_0_auto_int_xing_out_sync_28),
+    .auto_int_xing_out_sync_29(gpio_0_auto_int_xing_out_sync_29),
+    .auto_int_xing_out_sync_30(gpio_0_auto_int_xing_out_sync_30),
+    .auto_int_xing_out_sync_31(gpio_0_auto_int_xing_out_sync_31),
+    .auto_control_xing_in_a_ready(gpio_0_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(gpio_0_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(gpio_0_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(gpio_0_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(gpio_0_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(gpio_0_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(gpio_0_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(gpio_0_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(gpio_0_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(gpio_0_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(gpio_0_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(gpio_0_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(gpio_0_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(gpio_0_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(gpio_0_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(gpio_0_auto_control_xing_in_d_bits_data),
+    .auto_iof_out_iof_0_0_o_oval(gpio_0_auto_iof_out_iof_0_0_o_oval),
+    .auto_iof_out_iof_0_1_o_oval(gpio_0_auto_iof_out_iof_0_1_o_oval),
+    .auto_iof_out_iof_0_2_i_ival(gpio_0_auto_iof_out_iof_0_2_i_ival),
+    .auto_iof_out_iof_0_2_o_oval(gpio_0_auto_iof_out_iof_0_2_o_oval),
+    .auto_iof_out_iof_0_2_o_oe(gpio_0_auto_iof_out_iof_0_2_o_oe),
+    .auto_iof_out_iof_0_2_o_ie(gpio_0_auto_iof_out_iof_0_2_o_ie),
+    .auto_iof_out_iof_0_3_i_ival(gpio_0_auto_iof_out_iof_0_3_i_ival),
+    .auto_iof_out_iof_0_3_o_oval(gpio_0_auto_iof_out_iof_0_3_o_oval),
+    .auto_iof_out_iof_0_3_o_oe(gpio_0_auto_iof_out_iof_0_3_o_oe),
+    .auto_iof_out_iof_0_3_o_ie(gpio_0_auto_iof_out_iof_0_3_o_ie),
+    .auto_iof_out_iof_0_4_i_ival(gpio_0_auto_iof_out_iof_0_4_i_ival),
+    .auto_iof_out_iof_0_4_o_oval(gpio_0_auto_iof_out_iof_0_4_o_oval),
+    .auto_iof_out_iof_0_4_o_oe(gpio_0_auto_iof_out_iof_0_4_o_oe),
+    .auto_iof_out_iof_0_4_o_ie(gpio_0_auto_iof_out_iof_0_4_o_ie),
+    .auto_iof_out_iof_0_5_i_ival(gpio_0_auto_iof_out_iof_0_5_i_ival),
+    .auto_iof_out_iof_0_5_o_oval(gpio_0_auto_iof_out_iof_0_5_o_oval),
+    .auto_iof_out_iof_0_5_o_oe(gpio_0_auto_iof_out_iof_0_5_o_oe),
+    .auto_iof_out_iof_0_5_o_ie(gpio_0_auto_iof_out_iof_0_5_o_ie),
+    .auto_iof_out_iof_0_12_i_ival(gpio_0_auto_iof_out_iof_0_12_i_ival),
+    .auto_iof_out_iof_0_12_o_oe(gpio_0_auto_iof_out_iof_0_12_o_oe),
+    .auto_iof_out_iof_0_13_i_ival(gpio_0_auto_iof_out_iof_0_13_i_ival),
+    .auto_iof_out_iof_0_13_o_oe(gpio_0_auto_iof_out_iof_0_13_o_oe),
+    .auto_iof_out_iof_0_14_i_ival(gpio_0_auto_iof_out_iof_0_14_i_ival),
+    .auto_iof_out_iof_0_14_o_oe(gpio_0_auto_iof_out_iof_0_14_o_oe),
+    .auto_iof_out_iof_0_15_i_ival(gpio_0_auto_iof_out_iof_0_15_i_ival),
+    .auto_iof_out_iof_0_15_o_oe(gpio_0_auto_iof_out_iof_0_15_o_oe),
+    .auto_iof_out_iof_0_16_i_ival(gpio_0_auto_iof_out_iof_0_16_i_ival),
+    .auto_iof_out_iof_0_17_o_oval(gpio_0_auto_iof_out_iof_0_17_o_oval),
+    .auto_iof_out_iof_0_18_i_ival(gpio_0_auto_iof_out_iof_0_18_i_ival),
+    .auto_iof_out_iof_0_19_o_oval(gpio_0_auto_iof_out_iof_0_19_o_oval),
+    .auto_iof_out_iof_0_20_i_ival(gpio_0_auto_iof_out_iof_0_20_i_ival),
+    .auto_iof_out_iof_0_21_o_oval(gpio_0_auto_iof_out_iof_0_21_o_oval),
+    .auto_iof_out_iof_0_22_i_ival(gpio_0_auto_iof_out_iof_0_22_i_ival),
+    .auto_iof_out_iof_0_23_o_oval(gpio_0_auto_iof_out_iof_0_23_o_oval),
+    .auto_iof_out_iof_0_24_o_oval(gpio_0_auto_iof_out_iof_0_24_o_oval),
+    .auto_iof_out_iof_1_12_o_oval(gpio_0_auto_iof_out_iof_1_12_o_oval),
+    .auto_iof_out_iof_1_13_o_oval(gpio_0_auto_iof_out_iof_1_13_o_oval),
+    .auto_iof_out_iof_1_14_o_oval(gpio_0_auto_iof_out_iof_1_14_o_oval),
+    .auto_iof_out_iof_1_15_o_oval(gpio_0_auto_iof_out_iof_1_15_o_oval),
+    .auto_iof_out_iof_1_16_o_oval(gpio_0_auto_iof_out_iof_1_16_o_oval),
+    .auto_iof_out_iof_1_17_o_oval(gpio_0_auto_iof_out_iof_1_17_o_oval),
+    .auto_iof_out_iof_1_18_o_oval(gpio_0_auto_iof_out_iof_1_18_o_oval),
+    .auto_iof_out_iof_1_19_o_oval(gpio_0_auto_iof_out_iof_1_19_o_oval),
+    .auto_iof_out_iof_1_20_o_oval(gpio_0_auto_iof_out_iof_1_20_o_oval),
+    .auto_iof_out_iof_1_21_o_oval(gpio_0_auto_iof_out_iof_1_21_o_oval),
+    .auto_iof_out_iof_1_22_o_oval(gpio_0_auto_iof_out_iof_1_22_o_oval),
+    .auto_iof_out_iof_1_23_o_oval(gpio_0_auto_iof_out_iof_1_23_o_oval),
+    .auto_io_out_pins_0_i_ival(gpio_0_auto_io_out_pins_0_i_ival),
+    .auto_io_out_pins_0_o_oval(gpio_0_auto_io_out_pins_0_o_oval),
+    .auto_io_out_pins_0_o_oe(gpio_0_auto_io_out_pins_0_o_oe),
+    .auto_io_out_pins_0_o_ie(gpio_0_auto_io_out_pins_0_o_ie),
+    .auto_io_out_pins_1_i_ival(gpio_0_auto_io_out_pins_1_i_ival),
+    .auto_io_out_pins_1_o_oval(gpio_0_auto_io_out_pins_1_o_oval),
+    .auto_io_out_pins_1_o_oe(gpio_0_auto_io_out_pins_1_o_oe),
+    .auto_io_out_pins_1_o_ie(gpio_0_auto_io_out_pins_1_o_ie),
+    .auto_io_out_pins_2_i_ival(gpio_0_auto_io_out_pins_2_i_ival),
+    .auto_io_out_pins_2_o_oval(gpio_0_auto_io_out_pins_2_o_oval),
+    .auto_io_out_pins_2_o_oe(gpio_0_auto_io_out_pins_2_o_oe),
+    .auto_io_out_pins_2_o_ie(gpio_0_auto_io_out_pins_2_o_ie),
+    .auto_io_out_pins_3_i_ival(gpio_0_auto_io_out_pins_3_i_ival),
+    .auto_io_out_pins_3_o_oval(gpio_0_auto_io_out_pins_3_o_oval),
+    .auto_io_out_pins_3_o_oe(gpio_0_auto_io_out_pins_3_o_oe),
+    .auto_io_out_pins_3_o_ie(gpio_0_auto_io_out_pins_3_o_ie),
+    .auto_io_out_pins_4_i_ival(gpio_0_auto_io_out_pins_4_i_ival),
+    .auto_io_out_pins_4_o_oval(gpio_0_auto_io_out_pins_4_o_oval),
+    .auto_io_out_pins_4_o_oe(gpio_0_auto_io_out_pins_4_o_oe),
+    .auto_io_out_pins_4_o_ie(gpio_0_auto_io_out_pins_4_o_ie),
+    .auto_io_out_pins_5_i_ival(gpio_0_auto_io_out_pins_5_i_ival),
+    .auto_io_out_pins_5_o_oval(gpio_0_auto_io_out_pins_5_o_oval),
+    .auto_io_out_pins_5_o_oe(gpio_0_auto_io_out_pins_5_o_oe),
+    .auto_io_out_pins_5_o_ie(gpio_0_auto_io_out_pins_5_o_ie),
+    .auto_io_out_pins_6_i_ival(gpio_0_auto_io_out_pins_6_i_ival),
+    .auto_io_out_pins_6_o_oval(gpio_0_auto_io_out_pins_6_o_oval),
+    .auto_io_out_pins_6_o_oe(gpio_0_auto_io_out_pins_6_o_oe),
+    .auto_io_out_pins_7_i_ival(gpio_0_auto_io_out_pins_7_i_ival),
+    .auto_io_out_pins_7_o_oval(gpio_0_auto_io_out_pins_7_o_oval),
+    .auto_io_out_pins_7_o_oe(gpio_0_auto_io_out_pins_7_o_oe),
+    .auto_io_out_pins_8_i_ival(gpio_0_auto_io_out_pins_8_i_ival),
+    .auto_io_out_pins_8_o_oval(gpio_0_auto_io_out_pins_8_o_oval),
+    .auto_io_out_pins_8_o_oe(gpio_0_auto_io_out_pins_8_o_oe),
+    .auto_io_out_pins_9_i_ival(gpio_0_auto_io_out_pins_9_i_ival),
+    .auto_io_out_pins_9_o_oval(gpio_0_auto_io_out_pins_9_o_oval),
+    .auto_io_out_pins_9_o_oe(gpio_0_auto_io_out_pins_9_o_oe),
+    .auto_io_out_pins_10_i_ival(gpio_0_auto_io_out_pins_10_i_ival),
+    .auto_io_out_pins_10_o_oval(gpio_0_auto_io_out_pins_10_o_oval),
+    .auto_io_out_pins_10_o_oe(gpio_0_auto_io_out_pins_10_o_oe),
+    .auto_io_out_pins_11_i_ival(gpio_0_auto_io_out_pins_11_i_ival),
+    .auto_io_out_pins_11_o_oval(gpio_0_auto_io_out_pins_11_o_oval),
+    .auto_io_out_pins_11_o_oe(gpio_0_auto_io_out_pins_11_o_oe),
+    .auto_io_out_pins_12_i_ival(gpio_0_auto_io_out_pins_12_i_ival),
+    .auto_io_out_pins_12_o_oval(gpio_0_auto_io_out_pins_12_o_oval),
+    .auto_io_out_pins_12_o_oe(gpio_0_auto_io_out_pins_12_o_oe),
+    .auto_io_out_pins_12_o_ie(gpio_0_auto_io_out_pins_12_o_ie),
+    .auto_io_out_pins_13_i_ival(gpio_0_auto_io_out_pins_13_i_ival),
+    .auto_io_out_pins_13_o_oval(gpio_0_auto_io_out_pins_13_o_oval),
+    .auto_io_out_pins_13_o_oe(gpio_0_auto_io_out_pins_13_o_oe),
+    .auto_io_out_pins_13_o_ie(gpio_0_auto_io_out_pins_13_o_ie),
+    .auto_io_out_pins_14_i_ival(gpio_0_auto_io_out_pins_14_i_ival),
+    .auto_io_out_pins_14_o_oval(gpio_0_auto_io_out_pins_14_o_oval),
+    .auto_io_out_pins_14_o_oe(gpio_0_auto_io_out_pins_14_o_oe),
+    .auto_io_out_pins_14_o_ie(gpio_0_auto_io_out_pins_14_o_ie),
+    .auto_io_out_pins_15_i_ival(gpio_0_auto_io_out_pins_15_i_ival),
+    .auto_io_out_pins_15_o_oval(gpio_0_auto_io_out_pins_15_o_oval),
+    .auto_io_out_pins_15_o_oe(gpio_0_auto_io_out_pins_15_o_oe),
+    .auto_io_out_pins_15_o_ie(gpio_0_auto_io_out_pins_15_o_ie),
+    .auto_io_out_pins_16_i_ival(gpio_0_auto_io_out_pins_16_i_ival),
+    .auto_io_out_pins_16_o_oval(gpio_0_auto_io_out_pins_16_o_oval),
+    .auto_io_out_pins_16_o_oe(gpio_0_auto_io_out_pins_16_o_oe),
+    .auto_io_out_pins_16_o_ie(gpio_0_auto_io_out_pins_16_o_ie),
+    .auto_io_out_pins_17_i_ival(gpio_0_auto_io_out_pins_17_i_ival),
+    .auto_io_out_pins_17_o_oval(gpio_0_auto_io_out_pins_17_o_oval),
+    .auto_io_out_pins_17_o_oe(gpio_0_auto_io_out_pins_17_o_oe),
+    .auto_io_out_pins_17_o_ie(gpio_0_auto_io_out_pins_17_o_ie),
+    .auto_io_out_pins_18_i_ival(gpio_0_auto_io_out_pins_18_i_ival),
+    .auto_io_out_pins_18_o_oval(gpio_0_auto_io_out_pins_18_o_oval),
+    .auto_io_out_pins_18_o_oe(gpio_0_auto_io_out_pins_18_o_oe),
+    .auto_io_out_pins_18_o_ie(gpio_0_auto_io_out_pins_18_o_ie),
+    .auto_io_out_pins_19_i_ival(gpio_0_auto_io_out_pins_19_i_ival),
+    .auto_io_out_pins_19_o_oval(gpio_0_auto_io_out_pins_19_o_oval),
+    .auto_io_out_pins_19_o_oe(gpio_0_auto_io_out_pins_19_o_oe),
+    .auto_io_out_pins_19_o_ie(gpio_0_auto_io_out_pins_19_o_ie),
+    .auto_io_out_pins_20_i_ival(gpio_0_auto_io_out_pins_20_i_ival),
+    .auto_io_out_pins_20_o_oval(gpio_0_auto_io_out_pins_20_o_oval),
+    .auto_io_out_pins_20_o_oe(gpio_0_auto_io_out_pins_20_o_oe),
+    .auto_io_out_pins_20_o_ie(gpio_0_auto_io_out_pins_20_o_ie),
+    .auto_io_out_pins_21_i_ival(gpio_0_auto_io_out_pins_21_i_ival),
+    .auto_io_out_pins_21_o_oval(gpio_0_auto_io_out_pins_21_o_oval),
+    .auto_io_out_pins_21_o_oe(gpio_0_auto_io_out_pins_21_o_oe),
+    .auto_io_out_pins_21_o_ie(gpio_0_auto_io_out_pins_21_o_ie),
+    .auto_io_out_pins_22_i_ival(gpio_0_auto_io_out_pins_22_i_ival),
+    .auto_io_out_pins_22_o_oval(gpio_0_auto_io_out_pins_22_o_oval),
+    .auto_io_out_pins_22_o_oe(gpio_0_auto_io_out_pins_22_o_oe),
+    .auto_io_out_pins_22_o_ie(gpio_0_auto_io_out_pins_22_o_ie),
+    .auto_io_out_pins_23_i_ival(gpio_0_auto_io_out_pins_23_i_ival),
+    .auto_io_out_pins_23_o_oval(gpio_0_auto_io_out_pins_23_o_oval),
+    .auto_io_out_pins_23_o_oe(gpio_0_auto_io_out_pins_23_o_oe),
+    .auto_io_out_pins_23_o_ie(gpio_0_auto_io_out_pins_23_o_ie),
+    .auto_io_out_pins_24_i_ival(gpio_0_auto_io_out_pins_24_i_ival),
+    .auto_io_out_pins_24_o_oval(gpio_0_auto_io_out_pins_24_o_oval),
+    .auto_io_out_pins_24_o_oe(gpio_0_auto_io_out_pins_24_o_oe),
+    .auto_io_out_pins_24_o_ie(gpio_0_auto_io_out_pins_24_o_ie),
+    .auto_io_out_pins_25_i_ival(gpio_0_auto_io_out_pins_25_i_ival),
+    .auto_io_out_pins_25_o_oval(gpio_0_auto_io_out_pins_25_o_oval),
+    .auto_io_out_pins_25_o_oe(gpio_0_auto_io_out_pins_25_o_oe),
+    .auto_io_out_pins_26_i_ival(gpio_0_auto_io_out_pins_26_i_ival),
+    .auto_io_out_pins_26_o_oval(gpio_0_auto_io_out_pins_26_o_oval),
+    .auto_io_out_pins_26_o_oe(gpio_0_auto_io_out_pins_26_o_oe),
+    .auto_io_out_pins_27_i_ival(gpio_0_auto_io_out_pins_27_i_ival),
+    .auto_io_out_pins_27_o_oval(gpio_0_auto_io_out_pins_27_o_oval),
+    .auto_io_out_pins_27_o_oe(gpio_0_auto_io_out_pins_27_o_oe),
+    .auto_io_out_pins_28_i_ival(gpio_0_auto_io_out_pins_28_i_ival),
+    .auto_io_out_pins_28_o_oval(gpio_0_auto_io_out_pins_28_o_oval),
+    .auto_io_out_pins_28_o_oe(gpio_0_auto_io_out_pins_28_o_oe),
+    .auto_io_out_pins_29_i_ival(gpio_0_auto_io_out_pins_29_i_ival),
+    .auto_io_out_pins_29_o_oval(gpio_0_auto_io_out_pins_29_o_oval),
+    .auto_io_out_pins_29_o_oe(gpio_0_auto_io_out_pins_29_o_oe),
+    .auto_io_out_pins_30_i_ival(gpio_0_auto_io_out_pins_30_i_ival),
+    .auto_io_out_pins_30_o_oval(gpio_0_auto_io_out_pins_30_o_oval),
+    .auto_io_out_pins_30_o_oe(gpio_0_auto_io_out_pins_30_o_oe),
+    .auto_io_out_pins_31_i_ival(gpio_0_auto_io_out_pins_31_i_ival),
+    .auto_io_out_pins_31_o_oval(gpio_0_auto_io_out_pins_31_o_oval),
+    .auto_io_out_pins_31_o_oe(gpio_0_auto_io_out_pins_31_o_oe)
+  );
+  assign auto_gpio_0_int_xing_out_sync_0 = gpio_0_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_1 = gpio_0_auto_int_xing_out_sync_1; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_2 = gpio_0_auto_int_xing_out_sync_2; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_3 = gpio_0_auto_int_xing_out_sync_3; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_4 = gpio_0_auto_int_xing_out_sync_4; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_5 = gpio_0_auto_int_xing_out_sync_5; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_6 = gpio_0_auto_int_xing_out_sync_6; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_7 = gpio_0_auto_int_xing_out_sync_7; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_8 = gpio_0_auto_int_xing_out_sync_8; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_9 = gpio_0_auto_int_xing_out_sync_9; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_10 = gpio_0_auto_int_xing_out_sync_10; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_11 = gpio_0_auto_int_xing_out_sync_11; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_12 = gpio_0_auto_int_xing_out_sync_12; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_13 = gpio_0_auto_int_xing_out_sync_13; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_14 = gpio_0_auto_int_xing_out_sync_14; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_15 = gpio_0_auto_int_xing_out_sync_15; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_16 = gpio_0_auto_int_xing_out_sync_16; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_17 = gpio_0_auto_int_xing_out_sync_17; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_18 = gpio_0_auto_int_xing_out_sync_18; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_19 = gpio_0_auto_int_xing_out_sync_19; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_20 = gpio_0_auto_int_xing_out_sync_20; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_21 = gpio_0_auto_int_xing_out_sync_21; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_22 = gpio_0_auto_int_xing_out_sync_22; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_23 = gpio_0_auto_int_xing_out_sync_23; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_24 = gpio_0_auto_int_xing_out_sync_24; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_25 = gpio_0_auto_int_xing_out_sync_25; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_26 = gpio_0_auto_int_xing_out_sync_26; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_27 = gpio_0_auto_int_xing_out_sync_27; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_28 = gpio_0_auto_int_xing_out_sync_28; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_29 = gpio_0_auto_int_xing_out_sync_29; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_30 = gpio_0_auto_int_xing_out_sync_30; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_int_xing_out_sync_31 = gpio_0_auto_int_xing_out_sync_31; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_control_xing_in_a_ready = gpio_0_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_gpio_0_control_xing_in_d_valid = gpio_0_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_gpio_0_control_xing_in_d_bits_opcode = gpio_0_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_gpio_0_control_xing_in_d_bits_size = gpio_0_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_gpio_0_control_xing_in_d_bits_source = gpio_0_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_gpio_0_control_xing_in_d_bits_data = gpio_0_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_gpio_0_iof_out_iof_0_2_i_ival = gpio_0_auto_iof_out_iof_0_2_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_3_i_ival = gpio_0_auto_iof_out_iof_0_3_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_4_i_ival = gpio_0_auto_iof_out_iof_0_4_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_5_i_ival = gpio_0_auto_iof_out_iof_0_5_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_12_i_ival = gpio_0_auto_iof_out_iof_0_12_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_13_i_ival = gpio_0_auto_iof_out_iof_0_13_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_14_i_ival = gpio_0_auto_iof_out_iof_0_14_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_15_i_ival = gpio_0_auto_iof_out_iof_0_15_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_16_i_ival = gpio_0_auto_iof_out_iof_0_16_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_18_i_ival = gpio_0_auto_iof_out_iof_0_18_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_20_i_ival = gpio_0_auto_iof_out_iof_0_20_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_iof_out_iof_0_22_i_ival = gpio_0_auto_iof_out_iof_0_22_i_ival; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_0_o_oval = gpio_0_auto_io_out_pins_0_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_0_o_oe = gpio_0_auto_io_out_pins_0_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_0_o_ie = gpio_0_auto_io_out_pins_0_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_1_o_oval = gpio_0_auto_io_out_pins_1_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_1_o_oe = gpio_0_auto_io_out_pins_1_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_1_o_ie = gpio_0_auto_io_out_pins_1_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_2_o_oval = gpio_0_auto_io_out_pins_2_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_2_o_oe = gpio_0_auto_io_out_pins_2_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_2_o_ie = gpio_0_auto_io_out_pins_2_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_3_o_oval = gpio_0_auto_io_out_pins_3_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_3_o_oe = gpio_0_auto_io_out_pins_3_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_3_o_ie = gpio_0_auto_io_out_pins_3_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_4_o_oval = gpio_0_auto_io_out_pins_4_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_4_o_oe = gpio_0_auto_io_out_pins_4_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_4_o_ie = gpio_0_auto_io_out_pins_4_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_5_o_oval = gpio_0_auto_io_out_pins_5_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_5_o_oe = gpio_0_auto_io_out_pins_5_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_5_o_ie = gpio_0_auto_io_out_pins_5_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_6_o_oval = gpio_0_auto_io_out_pins_6_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_6_o_oe = gpio_0_auto_io_out_pins_6_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_7_o_oval = gpio_0_auto_io_out_pins_7_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_7_o_oe = gpio_0_auto_io_out_pins_7_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_8_o_oval = gpio_0_auto_io_out_pins_8_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_8_o_oe = gpio_0_auto_io_out_pins_8_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_9_o_oval = gpio_0_auto_io_out_pins_9_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_9_o_oe = gpio_0_auto_io_out_pins_9_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_10_o_oval = gpio_0_auto_io_out_pins_10_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_10_o_oe = gpio_0_auto_io_out_pins_10_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_11_o_oval = gpio_0_auto_io_out_pins_11_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_11_o_oe = gpio_0_auto_io_out_pins_11_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_12_o_oval = gpio_0_auto_io_out_pins_12_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_12_o_oe = gpio_0_auto_io_out_pins_12_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_12_o_ie = gpio_0_auto_io_out_pins_12_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_13_o_oval = gpio_0_auto_io_out_pins_13_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_13_o_oe = gpio_0_auto_io_out_pins_13_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_13_o_ie = gpio_0_auto_io_out_pins_13_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_14_o_oval = gpio_0_auto_io_out_pins_14_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_14_o_oe = gpio_0_auto_io_out_pins_14_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_14_o_ie = gpio_0_auto_io_out_pins_14_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_15_o_oval = gpio_0_auto_io_out_pins_15_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_15_o_oe = gpio_0_auto_io_out_pins_15_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_15_o_ie = gpio_0_auto_io_out_pins_15_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_16_o_oval = gpio_0_auto_io_out_pins_16_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_16_o_oe = gpio_0_auto_io_out_pins_16_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_16_o_ie = gpio_0_auto_io_out_pins_16_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_17_o_oval = gpio_0_auto_io_out_pins_17_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_17_o_oe = gpio_0_auto_io_out_pins_17_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_17_o_ie = gpio_0_auto_io_out_pins_17_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_18_o_oval = gpio_0_auto_io_out_pins_18_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_18_o_oe = gpio_0_auto_io_out_pins_18_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_18_o_ie = gpio_0_auto_io_out_pins_18_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_19_o_oval = gpio_0_auto_io_out_pins_19_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_19_o_oe = gpio_0_auto_io_out_pins_19_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_19_o_ie = gpio_0_auto_io_out_pins_19_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_20_o_oval = gpio_0_auto_io_out_pins_20_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_20_o_oe = gpio_0_auto_io_out_pins_20_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_20_o_ie = gpio_0_auto_io_out_pins_20_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_21_o_oval = gpio_0_auto_io_out_pins_21_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_21_o_oe = gpio_0_auto_io_out_pins_21_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_21_o_ie = gpio_0_auto_io_out_pins_21_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_22_o_oval = gpio_0_auto_io_out_pins_22_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_22_o_oe = gpio_0_auto_io_out_pins_22_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_22_o_ie = gpio_0_auto_io_out_pins_22_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_23_o_oval = gpio_0_auto_io_out_pins_23_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_23_o_oe = gpio_0_auto_io_out_pins_23_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_23_o_ie = gpio_0_auto_io_out_pins_23_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_24_o_oval = gpio_0_auto_io_out_pins_24_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_24_o_oe = gpio_0_auto_io_out_pins_24_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_24_o_ie = gpio_0_auto_io_out_pins_24_o_ie; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_25_o_oval = gpio_0_auto_io_out_pins_25_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_25_o_oe = gpio_0_auto_io_out_pins_25_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_26_o_oval = gpio_0_auto_io_out_pins_26_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_26_o_oe = gpio_0_auto_io_out_pins_26_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_27_o_oval = gpio_0_auto_io_out_pins_27_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_27_o_oe = gpio_0_auto_io_out_pins_27_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_28_o_oval = gpio_0_auto_io_out_pins_28_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_28_o_oe = gpio_0_auto_io_out_pins_28_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_29_o_oval = gpio_0_auto_io_out_pins_29_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_29_o_oe = gpio_0_auto_io_out_pins_29_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_30_o_oval = gpio_0_auto_io_out_pins_30_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_30_o_oe = gpio_0_auto_io_out_pins_30_o_oe; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_31_o_oval = gpio_0_auto_io_out_pins_31_o_oval; // @[LazyModule.scala 311:12]
+  assign auto_gpio_0_io_out_pins_31_o_oe = gpio_0_auto_io_out_pins_31_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gpio_0_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_valid = auto_gpio_0_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_bits_opcode = auto_gpio_0_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_bits_param = auto_gpio_0_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_bits_size = auto_gpio_0_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_bits_source = auto_gpio_0_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_bits_address = auto_gpio_0_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_bits_mask = auto_gpio_0_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_bits_data = auto_gpio_0_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_a_bits_corrupt = auto_gpio_0_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_control_xing_in_d_ready = auto_gpio_0_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign gpio_0_auto_iof_out_iof_0_0_o_oval = auto_gpio_0_iof_out_iof_0_0_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_1_o_oval = auto_gpio_0_iof_out_iof_0_1_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_2_o_oval = auto_gpio_0_iof_out_iof_0_2_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_2_o_oe = auto_gpio_0_iof_out_iof_0_2_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_2_o_ie = auto_gpio_0_iof_out_iof_0_2_o_ie; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_3_o_oval = auto_gpio_0_iof_out_iof_0_3_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_3_o_oe = auto_gpio_0_iof_out_iof_0_3_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_3_o_ie = auto_gpio_0_iof_out_iof_0_3_o_ie; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_4_o_oval = auto_gpio_0_iof_out_iof_0_4_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_4_o_oe = auto_gpio_0_iof_out_iof_0_4_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_4_o_ie = auto_gpio_0_iof_out_iof_0_4_o_ie; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_5_o_oval = auto_gpio_0_iof_out_iof_0_5_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_5_o_oe = auto_gpio_0_iof_out_iof_0_5_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_5_o_ie = auto_gpio_0_iof_out_iof_0_5_o_ie; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_12_o_oe = auto_gpio_0_iof_out_iof_0_12_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_13_o_oe = auto_gpio_0_iof_out_iof_0_13_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_14_o_oe = auto_gpio_0_iof_out_iof_0_14_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_15_o_oe = auto_gpio_0_iof_out_iof_0_15_o_oe; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_17_o_oval = auto_gpio_0_iof_out_iof_0_17_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_19_o_oval = auto_gpio_0_iof_out_iof_0_19_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_21_o_oval = auto_gpio_0_iof_out_iof_0_21_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_23_o_oval = auto_gpio_0_iof_out_iof_0_23_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_0_24_o_oval = auto_gpio_0_iof_out_iof_0_24_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_12_o_oval = auto_gpio_0_iof_out_iof_1_12_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_13_o_oval = auto_gpio_0_iof_out_iof_1_13_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_14_o_oval = auto_gpio_0_iof_out_iof_1_14_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_15_o_oval = auto_gpio_0_iof_out_iof_1_15_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_16_o_oval = auto_gpio_0_iof_out_iof_1_16_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_17_o_oval = auto_gpio_0_iof_out_iof_1_17_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_18_o_oval = auto_gpio_0_iof_out_iof_1_18_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_19_o_oval = auto_gpio_0_iof_out_iof_1_19_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_20_o_oval = auto_gpio_0_iof_out_iof_1_20_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_21_o_oval = auto_gpio_0_iof_out_iof_1_21_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_22_o_oval = auto_gpio_0_iof_out_iof_1_22_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_iof_out_iof_1_23_o_oval = auto_gpio_0_iof_out_iof_1_23_o_oval; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_0_i_ival = auto_gpio_0_io_out_pins_0_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_1_i_ival = auto_gpio_0_io_out_pins_1_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_2_i_ival = auto_gpio_0_io_out_pins_2_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_3_i_ival = auto_gpio_0_io_out_pins_3_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_4_i_ival = auto_gpio_0_io_out_pins_4_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_5_i_ival = auto_gpio_0_io_out_pins_5_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_6_i_ival = auto_gpio_0_io_out_pins_6_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_7_i_ival = auto_gpio_0_io_out_pins_7_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_8_i_ival = auto_gpio_0_io_out_pins_8_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_9_i_ival = auto_gpio_0_io_out_pins_9_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_10_i_ival = auto_gpio_0_io_out_pins_10_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_11_i_ival = auto_gpio_0_io_out_pins_11_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_12_i_ival = auto_gpio_0_io_out_pins_12_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_13_i_ival = auto_gpio_0_io_out_pins_13_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_14_i_ival = auto_gpio_0_io_out_pins_14_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_15_i_ival = auto_gpio_0_io_out_pins_15_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_16_i_ival = auto_gpio_0_io_out_pins_16_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_17_i_ival = auto_gpio_0_io_out_pins_17_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_18_i_ival = auto_gpio_0_io_out_pins_18_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_19_i_ival = auto_gpio_0_io_out_pins_19_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_20_i_ival = auto_gpio_0_io_out_pins_20_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_21_i_ival = auto_gpio_0_io_out_pins_21_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_22_i_ival = auto_gpio_0_io_out_pins_22_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_23_i_ival = auto_gpio_0_io_out_pins_23_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_24_i_ival = auto_gpio_0_io_out_pins_24_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_25_i_ival = auto_gpio_0_io_out_pins_25_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_26_i_ival = auto_gpio_0_io_out_pins_26_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_27_i_ival = auto_gpio_0_io_out_pins_27_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_28_i_ival = auto_gpio_0_io_out_pins_28_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_29_i_ival = auto_gpio_0_io_out_pins_29_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_30_i_ival = auto_gpio_0_io_out_pins_30_i_ival; // @[LazyModule.scala 311:12]
+  assign gpio_0_auto_io_out_pins_31_i_ival = auto_gpio_0_io_out_pins_31_i_ival; // @[LazyModule.scala 311:12]
+endmodule
+module IntSyncSyncCrossingSink_15(
+  input   auto_in_sync_0,
+  input   auto_in_sync_1,
+  input   auto_in_sync_2,
+  input   auto_in_sync_3,
+  input   auto_in_sync_4,
+  input   auto_in_sync_5,
+  input   auto_in_sync_6,
+  input   auto_in_sync_7,
+  input   auto_in_sync_8,
+  input   auto_in_sync_9,
+  input   auto_in_sync_10,
+  input   auto_in_sync_11,
+  input   auto_in_sync_12,
+  input   auto_in_sync_13,
+  input   auto_in_sync_14,
+  input   auto_in_sync_15,
+  input   auto_in_sync_16,
+  input   auto_in_sync_17,
+  input   auto_in_sync_18,
+  input   auto_in_sync_19,
+  input   auto_in_sync_20,
+  input   auto_in_sync_21,
+  input   auto_in_sync_22,
+  input   auto_in_sync_23,
+  input   auto_in_sync_24,
+  input   auto_in_sync_25,
+  input   auto_in_sync_26,
+  input   auto_in_sync_27,
+  input   auto_in_sync_28,
+  input   auto_in_sync_29,
+  input   auto_in_sync_30,
+  input   auto_in_sync_31,
+  output  auto_out_0,
+  output  auto_out_1,
+  output  auto_out_2,
+  output  auto_out_3,
+  output  auto_out_4,
+  output  auto_out_5,
+  output  auto_out_6,
+  output  auto_out_7,
+  output  auto_out_8,
+  output  auto_out_9,
+  output  auto_out_10,
+  output  auto_out_11,
+  output  auto_out_12,
+  output  auto_out_13,
+  output  auto_out_14,
+  output  auto_out_15,
+  output  auto_out_16,
+  output  auto_out_17,
+  output  auto_out_18,
+  output  auto_out_19,
+  output  auto_out_20,
+  output  auto_out_21,
+  output  auto_out_22,
+  output  auto_out_23,
+  output  auto_out_24,
+  output  auto_out_25,
+  output  auto_out_26,
+  output  auto_out_27,
+  output  auto_out_28,
+  output  auto_out_29,
+  output  auto_out_30,
+  output  auto_out_31
+);
+  assign auto_out_0 = auto_in_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1 = auto_in_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2 = auto_in_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3 = auto_in_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4 = auto_in_sync_4; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_5 = auto_in_sync_5; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_6 = auto_in_sync_6; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_7 = auto_in_sync_7; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_8 = auto_in_sync_8; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_9 = auto_in_sync_9; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_10 = auto_in_sync_10; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_11 = auto_in_sync_11; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_12 = auto_in_sync_12; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_13 = auto_in_sync_13; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_14 = auto_in_sync_14; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_15 = auto_in_sync_15; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_16 = auto_in_sync_16; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_17 = auto_in_sync_17; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_18 = auto_in_sync_18; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_19 = auto_in_sync_19; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_20 = auto_in_sync_20; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_21 = auto_in_sync_21; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_22 = auto_in_sync_22; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_23 = auto_in_sync_23; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_24 = auto_in_sync_24; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_25 = auto_in_sync_25; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_26 = auto_in_sync_26; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_27 = auto_in_sync_27; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_28 = auto_in_sync_28; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_29 = auto_in_sync_29; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_30 = auto_in_sync_30; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_31 = auto_in_sync_31; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module AsyncResetRegVec_w4_i0(
+  input        clock,
+  input        reset,
+  input  [3:0] io_d,
+  output [3:0] io_q
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [3:0] reg_; // @[AsyncResetReg.scala 64:50]
+  assign io_q = reg_; // @[AsyncResetReg.scala 68:8]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[AsyncResetReg.scala 65:16]
+      reg_ <= 4'h0; // @[AsyncResetReg.scala 66:9]
+    end else begin
+      reg_ <= io_d; // @[AsyncResetReg.scala 64:50]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  reg_ = _RAND_0[3:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    reg_ = 4'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module IntSyncCrossingSource_18(
+  input   clock,
+  input   reset,
+  input   auto_in_0,
+  input   auto_in_1,
+  input   auto_in_2,
+  input   auto_in_3,
+  output  auto_out_sync_0,
+  output  auto_out_sync_1,
+  output  auto_out_sync_2,
+  output  auto_out_sync_3
+);
+  wire  reg__clock; // @[AsyncResetReg.scala 89:21]
+  wire  reg__reset; // @[AsyncResetReg.scala 89:21]
+  wire [3:0] reg__io_d; // @[AsyncResetReg.scala 89:21]
+  wire [3:0] reg__io_q; // @[AsyncResetReg.scala 89:21]
+  wire [1:0] lo = {auto_in_1,auto_in_0}; // @[Cat.scala 31:58]
+  wire [1:0] hi = {auto_in_3,auto_in_2}; // @[Cat.scala 31:58]
+  AsyncResetRegVec_w4_i0 reg_ ( // @[AsyncResetReg.scala 89:21]
+    .clock(reg__clock),
+    .reset(reg__reset),
+    .io_d(reg__io_d),
+    .io_q(reg__io_q)
+  );
+  assign auto_out_sync_0 = reg__io_q[0]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_1 = reg__io_q[1]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_2 = reg__io_q[2]; // @[Crossing.scala 41:52]
+  assign auto_out_sync_3 = reg__io_q[3]; // @[Crossing.scala 41:52]
+  assign reg__clock = clock;
+  assign reg__reset = reset;
+  assign reg__io_d = {hi,lo}; // @[Cat.scala 31:58]
+endmodule
+module TLMonitor_67(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10015000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module PWMTimer(
+  input         clock,
+  input         reset,
+  input         scale_io_regs_cfg_write__ip_0,
+  input         scale_io_regs_cfg_write__ip_1,
+  input         scale_io_regs_cfg_write__ip_2,
+  input         scale_io_regs_cfg_write__ip_3,
+  input         scale_io_regs_cfg_write__gang_0,
+  input         scale_io_regs_cfg_write__gang_1,
+  input         scale_io_regs_cfg_write__gang_2,
+  input         scale_io_regs_cfg_write__gang_3,
+  input         scale_io_regs_cfg_write__extra_0,
+  input         scale_io_regs_cfg_write__extra_1,
+  input         scale_io_regs_cfg_write__extra_2,
+  input         scale_io_regs_cfg_write__extra_3,
+  input         scale_io_regs_cfg_write__center_0,
+  input         scale_io_regs_cfg_write__center_1,
+  input         scale_io_regs_cfg_write__center_2,
+  input         scale_io_regs_cfg_write__center_3,
+  input         scale_io_regs_cfg_write__running,
+  input         scale_io_regs_cfg_write__countAlways,
+  input         scale_io_regs_cfg_write__deglitch,
+  input         scale_io_regs_cfg_write__zerocmp,
+  input         scale_io_regs_cfg_write__sticky,
+  input  [3:0]  scale_io_regs_cfg_write__scale,
+  output        scale_io_regs_cfg_read_ip_0,
+  output        scale_io_regs_cfg_read_ip_1,
+  output        scale_io_regs_cfg_read_ip_2,
+  output        scale_io_regs_cfg_read_ip_3,
+  output        scale_io_regs_cfg_read_gang_0,
+  output        scale_io_regs_cfg_read_gang_1,
+  output        scale_io_regs_cfg_read_gang_2,
+  output        scale_io_regs_cfg_read_gang_3,
+  output        scale_io_regs_cfg_read_extra_0,
+  output        scale_io_regs_cfg_read_extra_1,
+  output        scale_io_regs_cfg_read_extra_2,
+  output        scale_io_regs_cfg_read_extra_3,
+  output        scale_io_regs_cfg_read_center_0,
+  output        scale_io_regs_cfg_read_center_1,
+  output        scale_io_regs_cfg_read_center_2,
+  output        scale_io_regs_cfg_read_center_3,
+  output        scale_io_regs_cfg_read_running,
+  output        scale_io_regs_cfg_read_countAlways,
+  output        scale_io_regs_cfg_read_deglitch,
+  output        scale_io_regs_cfg_read_zerocmp,
+  output        scale_io_regs_cfg_read_sticky,
+  output [3:0]  scale_io_regs_cfg_read_scale,
+  input         scale_io_regs_cfg_write_ip_0,
+  input         scale_io_regs_cfg_write_ip_1,
+  input         scale_io_regs_cfg_write_ip_2,
+  input         scale_io_regs_cfg_write_ip_3,
+  input         scale_io_regs_cfg_write_gang_0,
+  input         scale_io_regs_cfg_write_gang_1,
+  input         scale_io_regs_cfg_write_gang_2,
+  input         scale_io_regs_cfg_write_gang_3,
+  input         scale_io_regs_cfg_write_extra_0,
+  input         scale_io_regs_cfg_write_extra_1,
+  input         scale_io_regs_cfg_write_extra_2,
+  input         scale_io_regs_cfg_write_extra_3,
+  input         scale_io_regs_cfg_write_center_0,
+  input         scale_io_regs_cfg_write_center_1,
+  input         scale_io_regs_cfg_write_center_2,
+  input         scale_io_regs_cfg_write_center_3,
+  input         scale_io_regs_cfg_write_running,
+  input         scale_io_regs_cfg_write_countAlways,
+  input         scale_io_regs_cfg_write_deglitch,
+  input         scale_io_regs_cfg_write_zerocmp,
+  input         scale_io_regs_cfg_write_sticky,
+  input         scale_io_regs_cfg_write_scale,
+  input         scale_io_regs_countLo_write_valid,
+  input  [30:0] scale_io_regs_countLo_write_bits,
+  output [30:0] scale_io_regs_countLo_read,
+  output [15:0] scale_io_regs_s_read,
+  input         scale_io_regs_cmp_0_write_valid,
+  input  [15:0] scale_io_regs_cmp_0_write_bits,
+  output [15:0] scale_io_regs_cmp_0_read,
+  input         scale_io_regs_cmp_1_write_valid,
+  input  [15:0] scale_io_regs_cmp_1_write_bits,
+  output [15:0] scale_io_regs_cmp_1_read,
+  input         scale_io_regs_cmp_2_write_valid,
+  input  [15:0] scale_io_regs_cmp_2_write_bits,
+  output [15:0] scale_io_regs_cmp_2_read,
+  input         scale_io_regs_cmp_3_write_valid,
+  input  [15:0] scale_io_regs_cmp_3_write_bits,
+  output [15:0] scale_io_regs_cmp_3_read,
+  output        scale_io_ip_0,
+  output        scale_io_ip_1,
+  output        scale_io_ip_2,
+  output        scale_io_ip_3,
+  output        scale_io_gpio_0,
+  output        scale_io_gpio_1,
+  output        scale_io_gpio_2,
+  output        scale_io_gpio_3
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+`endif // RANDOMIZE_REG_INIT
+  reg [3:0] scale; // @[Reg.scala 16:16]
+  reg [15:0] cmp_0; // @[Reg.scala 16:16]
+  reg [15:0] cmp_1; // @[Reg.scala 16:16]
+  reg [15:0] cmp_2; // @[Reg.scala 16:16]
+  reg [15:0] cmp_3; // @[Reg.scala 16:16]
+  reg [4:0] small_; // @[Counters.scala 45:37]
+  reg  countAlways; // @[Reg.scala 28:20]
+  reg  oneShot; // @[Reg.scala 28:20]
+  wire  countEn = countAlways | oneShot; // @[PWM.scala 63:26]
+  wire [4:0] _GEN_32 = {{4'd0}, countEn}; // @[Counters.scala 46:33]
+  wire [5:0] nextSmall = small_ + _GEN_32; // @[Counters.scala 46:33]
+  reg [25:0] large_; // @[Counters.scala 50:27]
+  wire [26:0] _large_r_T = large_ + 26'h1; // @[Counters.scala 51:55]
+  wire [25:0] _large_r_T_1 = large_ + 26'h1; // @[Counters.scala 51:55]
+  wire [25:0] _GEN_6 = nextSmall[5] ? _large_r_T_1 : large_; // @[Counters.scala 50:27 51:{46,50}]
+  wire [30:0] value = {large_,small_}; // @[Cat.scala 31:58]
+  wire [30:0] _s_T = value >> scale; // @[Timer.scala 209:28]
+  wire [15:0] s = _s_T[15:0]; // @[Timer.scala 209:37]
+  wire  _elapsed_center_T_3 = scale_io_regs_cfg_write_center_0 | scale_io_regs_cfg_write_center_1 |
+    scale_io_regs_cfg_write_center_2 | scale_io_regs_cfg_write_center_3; // @[PWM.scala 27:59]
+  reg  center_0; // @[Reg.scala 16:16]
+  reg  center_1; // @[Reg.scala 16:16]
+  reg  center_2; // @[Reg.scala 16:16]
+  reg  center_3; // @[Reg.scala 16:16]
+  wire  _elapsed_T_1 = s[15] & center_0; // @[Timer.scala 211:69]
+  wire [15:0] _elapsed_T_2 = ~s; // @[Timer.scala 211:83]
+  wire [15:0] _elapsed_T_3 = s[15] & center_0 ? _elapsed_T_2 : s; // @[Timer.scala 211:54]
+  wire  elapsed_0 = _elapsed_T_3 >= cmp_0; // @[Timer.scala 211:90]
+  wire  _elapsed_T_6 = s[15] & center_1; // @[Timer.scala 211:69]
+  wire [15:0] _elapsed_T_8 = s[15] & center_1 ? _elapsed_T_2 : s; // @[Timer.scala 211:54]
+  wire  elapsed_1 = _elapsed_T_8 >= cmp_1; // @[Timer.scala 211:90]
+  wire  _elapsed_T_11 = s[15] & center_2; // @[Timer.scala 211:69]
+  wire [15:0] _elapsed_T_13 = s[15] & center_2 ? _elapsed_T_2 : s; // @[Timer.scala 211:54]
+  wire  elapsed_2 = _elapsed_T_13 >= cmp_2; // @[Timer.scala 211:90]
+  wire  _elapsed_T_16 = s[15] & center_3; // @[Timer.scala 211:69]
+  wire [15:0] _elapsed_T_18 = s[15] & center_3 ? _elapsed_T_2 : s; // @[Timer.scala 211:54]
+  wire  elapsed_3 = _elapsed_T_18 >= cmp_3; // @[Timer.scala 211:90]
+  wire [5:0] _GEN_33 = {{1'd0}, small_}; // @[Counters.scala 57:21]
+  wire [5:0] _countReset_feed_carryOut_lo_T = _GEN_33 ^ nextSmall; // @[Counters.scala 57:21]
+  wire [4:0] countReset_feed_carryOut_lo = _countReset_feed_carryOut_lo_T[5:1]; // @[Counters.scala 57:34]
+  wire [26:0] _GEN_34 = {{1'd0}, large_}; // @[Counters.scala 59:49]
+  wire [26:0] _countReset_feed_carryOut_hi_T_2 = _GEN_34 ^ _large_r_T; // @[Counters.scala 59:49]
+  wire [26:0] _countReset_feed_carryOut_hi_T_3 = nextSmall[5] ? _countReset_feed_carryOut_hi_T_2 : 27'h0; // @[Counters.scala 59:19]
+  wire [25:0] countReset_feed_carryOut_hi = _countReset_feed_carryOut_hi_T_3[26:1]; // @[Counters.scala 59:80]
+  wire [30:0] countReset_feed_carryOut = {countReset_feed_carryOut_hi,countReset_feed_carryOut_lo}; // @[Cat.scala 31:58]
+  wire [4:0] _GEN_35 = {{1'd0}, scale}; // @[PWM.scala 30:50]
+  wire [4:0] _countReset_feed_T_1 = _GEN_35 + 5'h10; // @[PWM.scala 30:50]
+  wire [30:0] _countReset_feed_T_2 = countReset_feed_carryOut >> _countReset_feed_T_1; // @[PWM.scala 30:43]
+  wire  feed = _countReset_feed_T_2[0]; // @[PWM.scala 30:43]
+  reg  zerocmp; // @[Reg.scala 16:16]
+  wire  countReset = feed | zerocmp & elapsed_0; // @[Timer.scala 212:35]
+  wire [5:0] _GEN_12 = countReset ? 6'h0 : nextSmall; // @[Timer.scala 213:21 Counters.scala 65:11]
+  wire [25:0] _GEN_13 = countReset ? 26'h0 : _GEN_6; // @[Timer.scala 213:21 Counters.scala 66:23]
+  wire [31:0] _T_3 = {1'h0,scale_io_regs_countLo_write_bits}; // @[Cat.scala 31:58]
+  wire [31:0] _GEN_14 = scale_io_regs_countLo_write_valid ? _T_3 : {{26'd0}, _GEN_12}; // @[Timer.scala 214:50 Counters.scala 65:11]
+  wire [26:0] _GEN_15 = scale_io_regs_countLo_write_valid ? _T_3[31:5] : {{1'd0}, _GEN_13}; // @[Timer.scala 214:50 Counters.scala 66:23]
+  reg  ip_doSticky_x1_deglitch_r; // @[Reg.scala 16:16]
+  wire  _ip_doSticky_x1_T = ~countReset; // @[PWM.scala 39:44]
+  reg  ip_doSticky_x1_sticky_r; // @[Reg.scala 16:16]
+  reg  ip_doSticky; // @[PWM.scala 39:23]
+  reg  ip_0; // @[PWM.scala 41:18]
+  reg  ip_1; // @[PWM.scala 41:18]
+  reg  ip_2; // @[PWM.scala 41:18]
+  reg  ip_3; // @[PWM.scala 41:18]
+  wire  _ip_T = _elapsed_T_1 & elapsed_0; // @[package.scala 65:72]
+  wire  _ip_T_1 = _elapsed_T_6 & elapsed_1; // @[package.scala 65:72]
+  wire  _ip_T_2 = _elapsed_T_11 & elapsed_2; // @[package.scala 65:72]
+  wire  _ip_T_3 = _elapsed_T_16 & elapsed_3; // @[package.scala 65:72]
+  wire  _ip_T_4 = ~_elapsed_T_1; // @[package.scala 70:38]
+  wire  _ip_T_5 = ~_elapsed_T_6; // @[package.scala 70:38]
+  wire  _ip_T_6 = ~_elapsed_T_11; // @[package.scala 70:38]
+  wire  _ip_T_7 = ~_elapsed_T_16; // @[package.scala 70:38]
+  wire  _ip_T_8 = ip_doSticky & ip_0; // @[package.scala 65:72]
+  wire  _ip_T_9 = ip_doSticky & ip_1; // @[package.scala 65:72]
+  wire  _ip_T_10 = ip_doSticky & ip_2; // @[package.scala 65:72]
+  wire  _ip_T_11 = ip_doSticky & ip_3; // @[package.scala 65:72]
+  wire  _ip_T_12 = elapsed_0 | _ip_T_8; // @[package.scala 66:75]
+  wire  _ip_T_13 = elapsed_1 | _ip_T_9; // @[package.scala 66:75]
+  wire  _ip_T_14 = elapsed_2 | _ip_T_10; // @[package.scala 66:75]
+  wire  _ip_T_15 = elapsed_3 | _ip_T_11; // @[package.scala 66:75]
+  wire  _ip_T_16 = _ip_T_4 & _ip_T_12; // @[package.scala 65:72]
+  wire  _ip_T_17 = _ip_T_5 & _ip_T_13; // @[package.scala 65:72]
+  wire  _ip_T_18 = _ip_T_6 & _ip_T_14; // @[package.scala 65:72]
+  wire  _ip_T_19 = _ip_T_7 & _ip_T_15; // @[package.scala 65:72]
+  wire  _ip_T_20 = _ip_T | _ip_T_16; // @[package.scala 66:75]
+  wire  _ip_T_21 = _ip_T_1 | _ip_T_17; // @[package.scala 66:75]
+  wire  _ip_T_22 = _ip_T_2 | _ip_T_18; // @[package.scala 66:75]
+  wire  _ip_T_23 = _ip_T_3 | _ip_T_19; // @[package.scala 66:75]
+  wire  _ip_T_27 = scale_io_regs_cfg_write_ip_0 | scale_io_regs_cfg_write_ip_1 | scale_io_regs_cfg_write_ip_2 |
+    scale_io_regs_cfg_write_ip_3; // @[PWM.scala 27:59]
+  wire  _gang_T_3 = scale_io_regs_cfg_write_gang_0 | scale_io_regs_cfg_write_gang_1 | scale_io_regs_cfg_write_gang_2 |
+    scale_io_regs_cfg_write_gang_3; // @[PWM.scala 27:59]
+  reg  gang_0; // @[Reg.scala 16:16]
+  reg  gang_1; // @[Reg.scala 16:16]
+  reg  gang_2; // @[Reg.scala 16:16]
+  reg  gang_3; // @[Reg.scala 16:16]
+  wire  _extra_T_3 = scale_io_regs_cfg_write_extra_0 | scale_io_regs_cfg_write_extra_1 | scale_io_regs_cfg_write_extra_2
+     | scale_io_regs_cfg_write_extra_3; // @[PWM.scala 27:59]
+  reg  extra_0; // @[Reg.scala 28:20]
+  reg  extra_1; // @[Reg.scala 28:20]
+  reg  extra_2; // @[Reg.scala 28:20]
+  reg  extra_3; // @[Reg.scala 28:20]
+  wire  _io_regs_cfg_read_running_oneShot_T_1 = scale_io_regs_cfg_write__running & _ip_doSticky_x1_T; // @[PWM.scala 32:77]
+  wire  _io_regs_cfg_read_running_oneShot_T_3 = scale_io_regs_cfg_write_running | countReset; // @[PWM.scala 32:146]
+  wire [3:0] invert = {extra_3,extra_2,extra_1,extra_0}; // @[PWM.scala 57:22]
+  wire [3:0] ipU = {ip_3,ip_2,ip_1,ip_0}; // @[PWM.scala 59:16]
+  wire [3:0] gangU = {gang_3,gang_2,gang_1,gang_0}; // @[PWM.scala 60:20]
+  wire [3:0] _T_6 = {ipU[0],ipU[3:1]}; // @[Cat.scala 31:58]
+  wire [3:0] _T_7 = gangU & _T_6; // @[PWM.scala 62:46]
+  wire [3:0] _T_8 = ~_T_7; // @[PWM.scala 62:38]
+  wire [3:0] _T_9 = ipU & _T_8; // @[PWM.scala 62:36]
+  wire [3:0] _T_10 = _T_9 ^ invert; // @[PWM.scala 62:72]
+  assign scale_io_regs_cfg_read_ip_0 = ip_0; // @[Timer.scala 218:23]
+  assign scale_io_regs_cfg_read_ip_1 = ip_1; // @[Timer.scala 218:23]
+  assign scale_io_regs_cfg_read_ip_2 = ip_2; // @[Timer.scala 218:23]
+  assign scale_io_regs_cfg_read_ip_3 = ip_3; // @[Timer.scala 218:23]
+  assign scale_io_regs_cfg_read_gang_0 = gang_0; // @[Timer.scala 219:25]
+  assign scale_io_regs_cfg_read_gang_1 = gang_1; // @[Timer.scala 219:25]
+  assign scale_io_regs_cfg_read_gang_2 = gang_2; // @[Timer.scala 219:25]
+  assign scale_io_regs_cfg_read_gang_3 = gang_3; // @[Timer.scala 219:25]
+  assign scale_io_regs_cfg_read_extra_0 = extra_0; // @[Timer.scala 220:26]
+  assign scale_io_regs_cfg_read_extra_1 = extra_1; // @[Timer.scala 220:26]
+  assign scale_io_regs_cfg_read_extra_2 = extra_2; // @[Timer.scala 220:26]
+  assign scale_io_regs_cfg_read_extra_3 = extra_3; // @[Timer.scala 220:26]
+  assign scale_io_regs_cfg_read_center_0 = center_0; // @[Timer.scala 221:27]
+  assign scale_io_regs_cfg_read_center_1 = center_1; // @[Timer.scala 221:27]
+  assign scale_io_regs_cfg_read_center_2 = center_2; // @[Timer.scala 221:27]
+  assign scale_io_regs_cfg_read_center_3 = center_3; // @[Timer.scala 221:27]
+  assign scale_io_regs_cfg_read_running = oneShot; // @[Timer.scala 222:42]
+  assign scale_io_regs_cfg_read_countAlways = countAlways; // @[Timer.scala 223:32]
+  assign scale_io_regs_cfg_read_deglitch = ip_doSticky_x1_deglitch_r; // @[PWM.scala 36:119]
+  assign scale_io_regs_cfg_read_zerocmp = zerocmp; // @[Timer.scala 225:28]
+  assign scale_io_regs_cfg_read_sticky = ip_doSticky_x1_sticky_r; // @[Timer.scala 226:36]
+  assign scale_io_regs_cfg_read_scale = scale; // @[Timer.scala 227:26]
+  assign scale_io_regs_countLo_read = {large_,small_}; // @[Cat.scala 31:58]
+  assign scale_io_regs_s_read = _s_T[15:0]; // @[Timer.scala 209:37]
+  assign scale_io_regs_cmp_0_read = cmp_0; // @[Timer.scala 232:53]
+  assign scale_io_regs_cmp_1_read = cmp_1; // @[Timer.scala 232:53]
+  assign scale_io_regs_cmp_2_read = cmp_2; // @[Timer.scala 232:53]
+  assign scale_io_regs_cmp_3_read = cmp_3; // @[Timer.scala 232:53]
+  assign scale_io_ip_0 = ip_0; // @[Timer.scala 235:9]
+  assign scale_io_ip_1 = ip_1; // @[Timer.scala 235:9]
+  assign scale_io_ip_2 = ip_2; // @[Timer.scala 235:9]
+  assign scale_io_ip_3 = ip_3; // @[Timer.scala 235:9]
+  assign scale_io_gpio_0 = _T_10[0]; // @[PWM.scala 62:30]
+  assign scale_io_gpio_1 = _T_10[1]; // @[PWM.scala 62:30]
+  assign scale_io_gpio_2 = _T_10[2]; // @[PWM.scala 62:30]
+  assign scale_io_gpio_3 = _T_10[3]; // @[PWM.scala 62:30]
+  always @(posedge clock) begin
+    if (scale_io_regs_cfg_write_scale) begin // @[Reg.scala 17:18]
+      scale <= scale_io_regs_cfg_write__scale; // @[Reg.scala 17:22]
+    end
+    if (scale_io_regs_cmp_0_write_valid) begin // @[Reg.scala 17:18]
+      cmp_0 <= scale_io_regs_cmp_0_write_bits; // @[Reg.scala 17:22]
+    end
+    if (scale_io_regs_cmp_1_write_valid) begin // @[Reg.scala 17:18]
+      cmp_1 <= scale_io_regs_cmp_1_write_bits; // @[Reg.scala 17:22]
+    end
+    if (scale_io_regs_cmp_2_write_valid) begin // @[Reg.scala 17:18]
+      cmp_2 <= scale_io_regs_cmp_2_write_bits; // @[Reg.scala 17:22]
+    end
+    if (scale_io_regs_cmp_3_write_valid) begin // @[Reg.scala 17:18]
+      cmp_3 <= scale_io_regs_cmp_3_write_bits; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[Counters.scala 45:37]
+      small_ <= 5'h0; // @[Counters.scala 45:37]
+    end else begin
+      small_ <= _GEN_14[4:0];
+    end
+    if (reset) begin // @[Reg.scala 28:20]
+      countAlways <= 1'h0; // @[Reg.scala 28:20]
+    end else if (scale_io_regs_cfg_write_countAlways) begin // @[Reg.scala 29:18]
+      countAlways <= scale_io_regs_cfg_write__countAlways; // @[Reg.scala 29:22]
+    end
+    if (reset) begin // @[Reg.scala 28:20]
+      oneShot <= 1'h0; // @[Reg.scala 28:20]
+    end else if (_io_regs_cfg_read_running_oneShot_T_3) begin // @[Reg.scala 29:18]
+      oneShot <= _io_regs_cfg_read_running_oneShot_T_1; // @[Reg.scala 29:22]
+    end
+    if (reset) begin // @[Counters.scala 50:27]
+      large_ <= 26'h0; // @[Counters.scala 50:27]
+    end else begin
+      large_ <= _GEN_15[25:0];
+    end
+    if (_elapsed_center_T_3) begin // @[Reg.scala 17:18]
+      center_0 <= scale_io_regs_cfg_write__center_0; // @[Reg.scala 17:22]
+    end
+    if (_elapsed_center_T_3) begin // @[Reg.scala 17:18]
+      center_1 <= scale_io_regs_cfg_write__center_1; // @[Reg.scala 17:22]
+    end
+    if (_elapsed_center_T_3) begin // @[Reg.scala 17:18]
+      center_2 <= scale_io_regs_cfg_write__center_2; // @[Reg.scala 17:22]
+    end
+    if (_elapsed_center_T_3) begin // @[Reg.scala 17:18]
+      center_3 <= scale_io_regs_cfg_write__center_3; // @[Reg.scala 17:22]
+    end
+    if (scale_io_regs_cfg_write_zerocmp) begin // @[Reg.scala 17:18]
+      zerocmp <= scale_io_regs_cfg_write__zerocmp; // @[Reg.scala 17:22]
+    end
+    if (scale_io_regs_cfg_write_deglitch) begin // @[Reg.scala 17:18]
+      ip_doSticky_x1_deglitch_r <= scale_io_regs_cfg_write__deglitch; // @[Reg.scala 17:22]
+    end
+    if (scale_io_regs_cfg_write_sticky) begin // @[Reg.scala 17:18]
+      ip_doSticky_x1_sticky_r <= scale_io_regs_cfg_write__sticky; // @[Reg.scala 17:22]
+    end
+    ip_doSticky <= ip_doSticky_x1_deglitch_r & ~countReset | ip_doSticky_x1_sticky_r; // @[PWM.scala 39:57]
+    if (_ip_T_27) begin // @[PWM.scala 43:50]
+      ip_0 <= scale_io_regs_cfg_write__ip_0; // @[PWM.scala 43:56]
+    end else begin
+      ip_0 <= _ip_T_20; // @[PWM.scala 42:9]
+    end
+    if (_ip_T_27) begin // @[PWM.scala 43:50]
+      ip_1 <= scale_io_regs_cfg_write__ip_1; // @[PWM.scala 43:56]
+    end else begin
+      ip_1 <= _ip_T_21; // @[PWM.scala 42:9]
+    end
+    if (_ip_T_27) begin // @[PWM.scala 43:50]
+      ip_2 <= scale_io_regs_cfg_write__ip_2; // @[PWM.scala 43:56]
+    end else begin
+      ip_2 <= _ip_T_22; // @[PWM.scala 42:9]
+    end
+    if (_ip_T_27) begin // @[PWM.scala 43:50]
+      ip_3 <= scale_io_regs_cfg_write__ip_3; // @[PWM.scala 43:56]
+    end else begin
+      ip_3 <= _ip_T_23; // @[PWM.scala 42:9]
+    end
+    if (_gang_T_3) begin // @[Reg.scala 17:18]
+      gang_0 <= scale_io_regs_cfg_write__gang_0; // @[Reg.scala 17:22]
+    end
+    if (_gang_T_3) begin // @[Reg.scala 17:18]
+      gang_1 <= scale_io_regs_cfg_write__gang_1; // @[Reg.scala 17:22]
+    end
+    if (_gang_T_3) begin // @[Reg.scala 17:18]
+      gang_2 <= scale_io_regs_cfg_write__gang_2; // @[Reg.scala 17:22]
+    end
+    if (_gang_T_3) begin // @[Reg.scala 17:18]
+      gang_3 <= scale_io_regs_cfg_write__gang_3; // @[Reg.scala 17:22]
+    end
+    if (reset) begin // @[Reg.scala 28:20]
+      extra_0 <= 1'h0; // @[Reg.scala 28:20]
+    end else if (_extra_T_3) begin // @[Reg.scala 29:18]
+      extra_0 <= scale_io_regs_cfg_write__extra_0; // @[Reg.scala 29:22]
+    end
+    if (reset) begin // @[Reg.scala 28:20]
+      extra_1 <= 1'h0; // @[Reg.scala 28:20]
+    end else if (_extra_T_3) begin // @[Reg.scala 29:18]
+      extra_1 <= scale_io_regs_cfg_write__extra_1; // @[Reg.scala 29:22]
+    end
+    if (reset) begin // @[Reg.scala 28:20]
+      extra_2 <= 1'h0; // @[Reg.scala 28:20]
+    end else if (_extra_T_3) begin // @[Reg.scala 29:18]
+      extra_2 <= scale_io_regs_cfg_write__extra_2; // @[Reg.scala 29:22]
+    end
+    if (reset) begin // @[Reg.scala 28:20]
+      extra_3 <= 1'h0; // @[Reg.scala 28:20]
+    end else if (_extra_T_3) begin // @[Reg.scala 29:18]
+      extra_3 <= scale_io_regs_cfg_write__extra_3; // @[Reg.scala 29:22]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  scale = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  cmp_0 = _RAND_1[15:0];
+  _RAND_2 = {1{`RANDOM}};
+  cmp_1 = _RAND_2[15:0];
+  _RAND_3 = {1{`RANDOM}};
+  cmp_2 = _RAND_3[15:0];
+  _RAND_4 = {1{`RANDOM}};
+  cmp_3 = _RAND_4[15:0];
+  _RAND_5 = {1{`RANDOM}};
+  small_ = _RAND_5[4:0];
+  _RAND_6 = {1{`RANDOM}};
+  countAlways = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  oneShot = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  large_ = _RAND_8[25:0];
+  _RAND_9 = {1{`RANDOM}};
+  center_0 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  center_1 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  center_2 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  center_3 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  zerocmp = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  ip_doSticky_x1_deglitch_r = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  ip_doSticky_x1_sticky_r = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  ip_doSticky = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  ip_0 = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  ip_1 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  ip_2 = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  ip_3 = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  gang_0 = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  gang_1 = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  gang_2 = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  gang_3 = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  extra_0 = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  extra_1 = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  extra_2 = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  extra_3 = _RAND_28[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLPWM(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_int_xing_out_sync_1,
+  output        auto_int_xing_out_sync_2,
+  output        auto_int_xing_out_sync_3,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_gpio_0,
+  output        auto_io_out_gpio_1,
+  output        auto_io_out_gpio_2,
+  output        auto_io_out_gpio_3
+);
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_2; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_3; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_2; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_3; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  pwm_clock; // @[PWM.scala 95:21]
+  wire  pwm_reset; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__sticky; // @[PWM.scala 95:21]
+  wire [3:0] pwm_scale_io_regs_cfg_write__scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_sticky; // @[PWM.scala 95:21]
+  wire [3:0] pwm_scale_io_regs_cfg_read_scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_sticky; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_countLo_write_valid; // @[PWM.scala 95:21]
+  wire [30:0] pwm_scale_io_regs_countLo_write_bits; // @[PWM.scala 95:21]
+  wire [30:0] pwm_scale_io_regs_countLo_read; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_s_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_0_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_0_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_0_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_1_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_1_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_1_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_2_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_2_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_2_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_3_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_3_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_3_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_3; // @[PWM.scala 95:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3f0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [3:0] out_oindex = {in_bits_index[3],in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [15:0] _out_frontSel_T = 16'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [3:0] _out_T_29 = pwm_scale_io_regs_cfg_read_scale; // @[RegisterRouter.scala 83:24]
+  wire [4:0] out_prepend = {1'h0,_out_T_29}; // @[Cat.scala 31:58]
+  wire [7:0] _out_T_38 = {{3'd0}, out_prepend}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_2 = &out_frontMask[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_3 = &out_frontMask[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_6 = &out_frontMask[12]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_7 = &out_frontMask[13]; // @[RegisterRouter.scala 83:24]
+  wire [14:0] out_prepend_7 = {1'h0,pwm_scale_io_regs_cfg_read_running,pwm_scale_io_regs_cfg_read_countAlways,1'h0,
+    pwm_scale_io_regs_cfg_read_deglitch,pwm_scale_io_regs_cfg_read_zerocmp,pwm_scale_io_regs_cfg_read_sticky,_out_T_38}; // @[Cat.scala 31:58]
+  wire [15:0] _out_T_111 = {{1'd0}, out_prepend_7}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_9 = &out_frontMask[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[17]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_11 = &out_frontMask[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_12 = &out_frontMask[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_13 = &out_frontMask[20]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_14 = &out_frontMask[21]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_15 = &out_frontMask[22]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_16 = &out_frontMask[23]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_17 = &out_frontMask[24]; // @[RegisterRouter.scala 83:24]
+  wire [24:0] out_prepend_16 = {pwm_scale_io_regs_cfg_read_gang_0,pwm_scale_io_regs_cfg_read_extra_3,
+    pwm_scale_io_regs_cfg_read_extra_2,pwm_scale_io_regs_cfg_read_extra_1,pwm_scale_io_regs_cfg_read_extra_0,
+    pwm_scale_io_regs_cfg_read_center_3,pwm_scale_io_regs_cfg_read_center_2,pwm_scale_io_regs_cfg_read_center_1,
+    pwm_scale_io_regs_cfg_read_center_0,_out_T_111}; // @[Cat.scala 31:58]
+  wire  out_wimask_18 = &out_frontMask[25]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_19 = &out_frontMask[26]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_20 = &out_frontMask[27]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_21 = &out_frontMask[28]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_22 = &out_frontMask[29]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_23 = &out_frontMask[30]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_24 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_23 = {pwm_scale_io_regs_cfg_read_ip_3,pwm_scale_io_regs_cfg_read_ip_2,
+    pwm_scale_io_regs_cfg_read_ip_1,pwm_scale_io_regs_cfg_read_ip_0,pwm_scale_io_regs_cfg_read_gang_3,
+    pwm_scale_io_regs_cfg_read_gang_2,pwm_scale_io_regs_cfg_read_gang_1,out_prepend_16}; // @[Cat.scala 31:58]
+  wire  out_wimask_25 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_25 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_298 = pwm_scale_io_regs_cmp_2_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_9 = _out_frontSel_T[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_27 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_9 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_318 = pwm_scale_io_regs_cmp_1_read; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_28 = &out_frontMask[30:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_28 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [30:0] _out_T_329 = pwm_scale_io_regs_countLo_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_11 = _out_frontSel_T[11]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_31 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_11 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_358 = pwm_scale_io_regs_cmp_3_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_8 = _out_frontSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_32 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_8 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_369 = pwm_scale_io_regs_cmp_0_read; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_378 = pwm_scale_io_regs_s_read; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_66 = 4'h2 == out_oindex ? _out_T : 4'h1 == out_oindex | _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_67 = 4'h3 == out_oindex ? _out_T : _GEN_66; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_68 = 4'h4 == out_oindex ? _out_T : _GEN_67; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_70 = 4'h6 == out_oindex ? _out_T : 4'h5 == out_oindex | _GEN_68; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_71 = 4'h7 == out_oindex ? _out_T : _GEN_70; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_72 = 4'h8 == out_oindex ? _out_T : _GEN_71; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_73 = 4'h9 == out_oindex ? _out_T : _GEN_72; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_74 = 4'ha == out_oindex ? _out_T : _GEN_73; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_75 = 4'hb == out_oindex ? _out_T : _GEN_74; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_79 = 4'hf == out_oindex | (4'he == out_oindex | (4'hd == out_oindex | (4'hc == out_oindex | _GEN_75))); // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_81 = 4'h1 == out_oindex ? 32'h0 : out_prepend_23; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_2 = {{1'd0}, _out_T_329}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_82 = 4'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_81; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_83 = 4'h3 == out_oindex ? 32'h0 : _GEN_82; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{16'd0}, _out_T_378}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_84 = 4'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_83; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_85 = 4'h5 == out_oindex ? 32'h0 : _GEN_84; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_86 = 4'h6 == out_oindex ? 32'h0 : _GEN_85; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_87 = 4'h7 == out_oindex ? 32'h1 : _GEN_86; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_8 = {{16'd0}, _out_T_369}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_88 = 4'h8 == out_oindex ? _out_out_bits_data_WIRE_1_8 : _GEN_87; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_9 = {{16'd0}, _out_T_318}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_89 = 4'h9 == out_oindex ? _out_out_bits_data_WIRE_1_9 : _GEN_88; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_10 = {{16'd0}, _out_T_298}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_90 = 4'ha == out_oindex ? _out_out_bits_data_WIRE_1_10 : _GEN_89; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_11 = {{16'd0}, _out_T_358}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_91 = 4'hb == out_oindex ? _out_out_bits_data_WIRE_1_11 : _GEN_90; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_92 = 4'hc == out_oindex ? 32'h0 : _GEN_91; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_93 = 4'hd == out_oindex ? 32'h0 : _GEN_92; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_94 = 4'he == out_oindex ? 32'h0 : _GEN_93; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_95 = 4'hf == out_oindex ? 32'h0 : _GEN_94; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_18 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_in_1(intsource_auto_in_1),
+    .auto_in_2(intsource_auto_in_2),
+    .auto_in_3(intsource_auto_in_3),
+    .auto_out_sync_0(intsource_auto_out_sync_0),
+    .auto_out_sync_1(intsource_auto_out_sync_1),
+    .auto_out_sync_2(intsource_auto_out_sync_2),
+    .auto_out_sync_3(intsource_auto_out_sync_3)
+  );
+  TLMonitor_67 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  PWMTimer pwm ( // @[PWM.scala 95:21]
+    .clock(pwm_clock),
+    .reset(pwm_reset),
+    .scale_io_regs_cfg_write__ip_0(pwm_scale_io_regs_cfg_write__ip_0),
+    .scale_io_regs_cfg_write__ip_1(pwm_scale_io_regs_cfg_write__ip_1),
+    .scale_io_regs_cfg_write__ip_2(pwm_scale_io_regs_cfg_write__ip_2),
+    .scale_io_regs_cfg_write__ip_3(pwm_scale_io_regs_cfg_write__ip_3),
+    .scale_io_regs_cfg_write__gang_0(pwm_scale_io_regs_cfg_write__gang_0),
+    .scale_io_regs_cfg_write__gang_1(pwm_scale_io_regs_cfg_write__gang_1),
+    .scale_io_regs_cfg_write__gang_2(pwm_scale_io_regs_cfg_write__gang_2),
+    .scale_io_regs_cfg_write__gang_3(pwm_scale_io_regs_cfg_write__gang_3),
+    .scale_io_regs_cfg_write__extra_0(pwm_scale_io_regs_cfg_write__extra_0),
+    .scale_io_regs_cfg_write__extra_1(pwm_scale_io_regs_cfg_write__extra_1),
+    .scale_io_regs_cfg_write__extra_2(pwm_scale_io_regs_cfg_write__extra_2),
+    .scale_io_regs_cfg_write__extra_3(pwm_scale_io_regs_cfg_write__extra_3),
+    .scale_io_regs_cfg_write__center_0(pwm_scale_io_regs_cfg_write__center_0),
+    .scale_io_regs_cfg_write__center_1(pwm_scale_io_regs_cfg_write__center_1),
+    .scale_io_regs_cfg_write__center_2(pwm_scale_io_regs_cfg_write__center_2),
+    .scale_io_regs_cfg_write__center_3(pwm_scale_io_regs_cfg_write__center_3),
+    .scale_io_regs_cfg_write__running(pwm_scale_io_regs_cfg_write__running),
+    .scale_io_regs_cfg_write__countAlways(pwm_scale_io_regs_cfg_write__countAlways),
+    .scale_io_regs_cfg_write__deglitch(pwm_scale_io_regs_cfg_write__deglitch),
+    .scale_io_regs_cfg_write__zerocmp(pwm_scale_io_regs_cfg_write__zerocmp),
+    .scale_io_regs_cfg_write__sticky(pwm_scale_io_regs_cfg_write__sticky),
+    .scale_io_regs_cfg_write__scale(pwm_scale_io_regs_cfg_write__scale),
+    .scale_io_regs_cfg_read_ip_0(pwm_scale_io_regs_cfg_read_ip_0),
+    .scale_io_regs_cfg_read_ip_1(pwm_scale_io_regs_cfg_read_ip_1),
+    .scale_io_regs_cfg_read_ip_2(pwm_scale_io_regs_cfg_read_ip_2),
+    .scale_io_regs_cfg_read_ip_3(pwm_scale_io_regs_cfg_read_ip_3),
+    .scale_io_regs_cfg_read_gang_0(pwm_scale_io_regs_cfg_read_gang_0),
+    .scale_io_regs_cfg_read_gang_1(pwm_scale_io_regs_cfg_read_gang_1),
+    .scale_io_regs_cfg_read_gang_2(pwm_scale_io_regs_cfg_read_gang_2),
+    .scale_io_regs_cfg_read_gang_3(pwm_scale_io_regs_cfg_read_gang_3),
+    .scale_io_regs_cfg_read_extra_0(pwm_scale_io_regs_cfg_read_extra_0),
+    .scale_io_regs_cfg_read_extra_1(pwm_scale_io_regs_cfg_read_extra_1),
+    .scale_io_regs_cfg_read_extra_2(pwm_scale_io_regs_cfg_read_extra_2),
+    .scale_io_regs_cfg_read_extra_3(pwm_scale_io_regs_cfg_read_extra_3),
+    .scale_io_regs_cfg_read_center_0(pwm_scale_io_regs_cfg_read_center_0),
+    .scale_io_regs_cfg_read_center_1(pwm_scale_io_regs_cfg_read_center_1),
+    .scale_io_regs_cfg_read_center_2(pwm_scale_io_regs_cfg_read_center_2),
+    .scale_io_regs_cfg_read_center_3(pwm_scale_io_regs_cfg_read_center_3),
+    .scale_io_regs_cfg_read_running(pwm_scale_io_regs_cfg_read_running),
+    .scale_io_regs_cfg_read_countAlways(pwm_scale_io_regs_cfg_read_countAlways),
+    .scale_io_regs_cfg_read_deglitch(pwm_scale_io_regs_cfg_read_deglitch),
+    .scale_io_regs_cfg_read_zerocmp(pwm_scale_io_regs_cfg_read_zerocmp),
+    .scale_io_regs_cfg_read_sticky(pwm_scale_io_regs_cfg_read_sticky),
+    .scale_io_regs_cfg_read_scale(pwm_scale_io_regs_cfg_read_scale),
+    .scale_io_regs_cfg_write_ip_0(pwm_scale_io_regs_cfg_write_ip_0),
+    .scale_io_regs_cfg_write_ip_1(pwm_scale_io_regs_cfg_write_ip_1),
+    .scale_io_regs_cfg_write_ip_2(pwm_scale_io_regs_cfg_write_ip_2),
+    .scale_io_regs_cfg_write_ip_3(pwm_scale_io_regs_cfg_write_ip_3),
+    .scale_io_regs_cfg_write_gang_0(pwm_scale_io_regs_cfg_write_gang_0),
+    .scale_io_regs_cfg_write_gang_1(pwm_scale_io_regs_cfg_write_gang_1),
+    .scale_io_regs_cfg_write_gang_2(pwm_scale_io_regs_cfg_write_gang_2),
+    .scale_io_regs_cfg_write_gang_3(pwm_scale_io_regs_cfg_write_gang_3),
+    .scale_io_regs_cfg_write_extra_0(pwm_scale_io_regs_cfg_write_extra_0),
+    .scale_io_regs_cfg_write_extra_1(pwm_scale_io_regs_cfg_write_extra_1),
+    .scale_io_regs_cfg_write_extra_2(pwm_scale_io_regs_cfg_write_extra_2),
+    .scale_io_regs_cfg_write_extra_3(pwm_scale_io_regs_cfg_write_extra_3),
+    .scale_io_regs_cfg_write_center_0(pwm_scale_io_regs_cfg_write_center_0),
+    .scale_io_regs_cfg_write_center_1(pwm_scale_io_regs_cfg_write_center_1),
+    .scale_io_regs_cfg_write_center_2(pwm_scale_io_regs_cfg_write_center_2),
+    .scale_io_regs_cfg_write_center_3(pwm_scale_io_regs_cfg_write_center_3),
+    .scale_io_regs_cfg_write_running(pwm_scale_io_regs_cfg_write_running),
+    .scale_io_regs_cfg_write_countAlways(pwm_scale_io_regs_cfg_write_countAlways),
+    .scale_io_regs_cfg_write_deglitch(pwm_scale_io_regs_cfg_write_deglitch),
+    .scale_io_regs_cfg_write_zerocmp(pwm_scale_io_regs_cfg_write_zerocmp),
+    .scale_io_regs_cfg_write_sticky(pwm_scale_io_regs_cfg_write_sticky),
+    .scale_io_regs_cfg_write_scale(pwm_scale_io_regs_cfg_write_scale),
+    .scale_io_regs_countLo_write_valid(pwm_scale_io_regs_countLo_write_valid),
+    .scale_io_regs_countLo_write_bits(pwm_scale_io_regs_countLo_write_bits),
+    .scale_io_regs_countLo_read(pwm_scale_io_regs_countLo_read),
+    .scale_io_regs_s_read(pwm_scale_io_regs_s_read),
+    .scale_io_regs_cmp_0_write_valid(pwm_scale_io_regs_cmp_0_write_valid),
+    .scale_io_regs_cmp_0_write_bits(pwm_scale_io_regs_cmp_0_write_bits),
+    .scale_io_regs_cmp_0_read(pwm_scale_io_regs_cmp_0_read),
+    .scale_io_regs_cmp_1_write_valid(pwm_scale_io_regs_cmp_1_write_valid),
+    .scale_io_regs_cmp_1_write_bits(pwm_scale_io_regs_cmp_1_write_bits),
+    .scale_io_regs_cmp_1_read(pwm_scale_io_regs_cmp_1_read),
+    .scale_io_regs_cmp_2_write_valid(pwm_scale_io_regs_cmp_2_write_valid),
+    .scale_io_regs_cmp_2_write_bits(pwm_scale_io_regs_cmp_2_write_bits),
+    .scale_io_regs_cmp_2_read(pwm_scale_io_regs_cmp_2_read),
+    .scale_io_regs_cmp_3_write_valid(pwm_scale_io_regs_cmp_3_write_valid),
+    .scale_io_regs_cmp_3_write_bits(pwm_scale_io_regs_cmp_3_write_bits),
+    .scale_io_regs_cmp_3_read(pwm_scale_io_regs_cmp_3_read),
+    .scale_io_ip_0(pwm_scale_io_ip_0),
+    .scale_io_ip_1(pwm_scale_io_ip_1),
+    .scale_io_ip_2(pwm_scale_io_ip_2),
+    .scale_io_ip_3(pwm_scale_io_ip_3),
+    .scale_io_gpio_0(pwm_scale_io_gpio_0),
+    .scale_io_gpio_1(pwm_scale_io_gpio_1),
+    .scale_io_gpio_2(pwm_scale_io_gpio_2),
+    .scale_io_gpio_3(pwm_scale_io_gpio_3)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_1 = intsource_auto_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_2 = intsource_auto_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_3 = intsource_auto_out_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_gpio_0 = pwm_scale_io_gpio_0; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_1 = pwm_scale_io_gpio_1; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_2 = pwm_scale_io_gpio_2; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_3 = pwm_scale_io_gpio_3; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_79 ? _GEN_95 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = pwm_scale_io_ip_0; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_1 = pwm_scale_io_ip_1; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_2 = pwm_scale_io_ip_2; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_3 = pwm_scale_io_ip_3; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_clock = clock;
+  assign pwm_reset = reset;
+  assign pwm_scale_io_regs_cfg_write__ip_0 = bundleIn_0_a_bits_data[28]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_1 = bundleIn_0_a_bits_data[29]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_2 = bundleIn_0_a_bits_data[30]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_3 = bundleIn_0_a_bits_data[31]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_0 = bundleIn_0_a_bits_data[24]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_1 = bundleIn_0_a_bits_data[25]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_2 = bundleIn_0_a_bits_data[26]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_3 = bundleIn_0_a_bits_data[27]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_0 = bundleIn_0_a_bits_data[20]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_1 = bundleIn_0_a_bits_data[21]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_2 = bundleIn_0_a_bits_data[22]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_3 = bundleIn_0_a_bits_data[23]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_0 = bundleIn_0_a_bits_data[16]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_1 = bundleIn_0_a_bits_data[17]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_2 = bundleIn_0_a_bits_data[18]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_3 = bundleIn_0_a_bits_data[19]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__running = bundleIn_0_a_bits_data[13]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__countAlways = bundleIn_0_a_bits_data[12]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__deglitch = bundleIn_0_a_bits_data[10]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__zerocmp = bundleIn_0_a_bits_data[9]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__sticky = bundleIn_0_a_bits_data[8]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__scale = bundleIn_0_a_bits_data[3:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_0 = out_wivalid_0 & out_wimask_21; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_1 = out_wivalid_0 & out_wimask_22; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_2 = out_wivalid_0 & out_wimask_23; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_3 = out_wivalid_0 & out_wimask_24; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_0 = out_wivalid_0 & out_wimask_17; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_1 = out_wivalid_0 & out_wimask_18; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_2 = out_wivalid_0 & out_wimask_19; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_3 = out_wivalid_0 & out_wimask_20; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_0 = out_wivalid_0 & out_wimask_13; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_1 = out_wivalid_0 & out_wimask_14; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_2 = out_wivalid_0 & out_wimask_15; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_3 = out_wivalid_0 & out_wimask_16; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_0 = out_wivalid_0 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_1 = out_wivalid_0 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_2 = out_wivalid_0 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_3 = out_wivalid_0 & out_wimask_12; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_running = out_wivalid_0 & out_wimask_7; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_countAlways = out_wivalid_0 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_deglitch = out_wivalid_0 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_zerocmp = out_wivalid_0 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_sticky = out_wivalid_0 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_scale = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_countLo_write_valid = out_wivalid_28 & out_wimask_28; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_countLo_write_bits = bundleIn_0_a_bits_data[30:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_0_write_valid = out_wivalid_32 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_0_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_1_write_valid = out_wivalid_27 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_1_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_2_write_valid = out_wivalid_25 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_2_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_3_write_valid = out_wivalid_31 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_3_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+endmodule
+module ClockSinkDomain_10(
+  output        auto_pwm_0_int_xing_out_sync_0,
+  output        auto_pwm_0_int_xing_out_sync_1,
+  output        auto_pwm_0_int_xing_out_sync_2,
+  output        auto_pwm_0_int_xing_out_sync_3,
+  output        auto_pwm_0_control_xing_in_a_ready,
+  input         auto_pwm_0_control_xing_in_a_valid,
+  input  [2:0]  auto_pwm_0_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_pwm_0_control_xing_in_a_bits_param,
+  input  [1:0]  auto_pwm_0_control_xing_in_a_bits_size,
+  input  [6:0]  auto_pwm_0_control_xing_in_a_bits_source,
+  input  [28:0] auto_pwm_0_control_xing_in_a_bits_address,
+  input  [3:0]  auto_pwm_0_control_xing_in_a_bits_mask,
+  input  [31:0] auto_pwm_0_control_xing_in_a_bits_data,
+  input         auto_pwm_0_control_xing_in_a_bits_corrupt,
+  input         auto_pwm_0_control_xing_in_d_ready,
+  output        auto_pwm_0_control_xing_in_d_valid,
+  output [2:0]  auto_pwm_0_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_pwm_0_control_xing_in_d_bits_size,
+  output [6:0]  auto_pwm_0_control_xing_in_d_bits_source,
+  output [31:0] auto_pwm_0_control_xing_in_d_bits_data,
+  output        auto_pwm_0_io_out_gpio_0,
+  output        auto_pwm_0_io_out_gpio_1,
+  output        auto_pwm_0_io_out_gpio_2,
+  output        auto_pwm_0_io_out_gpio_3,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  pwm_0_clock; // @[PWM.scala 135:49]
+  wire  pwm_0_reset; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_int_xing_out_sync_0; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_int_xing_out_sync_1; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_int_xing_out_sync_2; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_int_xing_out_sync_3; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_control_xing_in_a_ready; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_control_xing_in_a_valid; // @[PWM.scala 135:49]
+  wire [2:0] pwm_0_auto_control_xing_in_a_bits_opcode; // @[PWM.scala 135:49]
+  wire [2:0] pwm_0_auto_control_xing_in_a_bits_param; // @[PWM.scala 135:49]
+  wire [1:0] pwm_0_auto_control_xing_in_a_bits_size; // @[PWM.scala 135:49]
+  wire [6:0] pwm_0_auto_control_xing_in_a_bits_source; // @[PWM.scala 135:49]
+  wire [28:0] pwm_0_auto_control_xing_in_a_bits_address; // @[PWM.scala 135:49]
+  wire [3:0] pwm_0_auto_control_xing_in_a_bits_mask; // @[PWM.scala 135:49]
+  wire [31:0] pwm_0_auto_control_xing_in_a_bits_data; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_control_xing_in_a_bits_corrupt; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_control_xing_in_d_ready; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_control_xing_in_d_valid; // @[PWM.scala 135:49]
+  wire [2:0] pwm_0_auto_control_xing_in_d_bits_opcode; // @[PWM.scala 135:49]
+  wire [1:0] pwm_0_auto_control_xing_in_d_bits_size; // @[PWM.scala 135:49]
+  wire [6:0] pwm_0_auto_control_xing_in_d_bits_source; // @[PWM.scala 135:49]
+  wire [31:0] pwm_0_auto_control_xing_in_d_bits_data; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_io_out_gpio_0; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_io_out_gpio_1; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_io_out_gpio_2; // @[PWM.scala 135:49]
+  wire  pwm_0_auto_io_out_gpio_3; // @[PWM.scala 135:49]
+  TLPWM pwm_0 ( // @[PWM.scala 135:49]
+    .clock(pwm_0_clock),
+    .reset(pwm_0_reset),
+    .auto_int_xing_out_sync_0(pwm_0_auto_int_xing_out_sync_0),
+    .auto_int_xing_out_sync_1(pwm_0_auto_int_xing_out_sync_1),
+    .auto_int_xing_out_sync_2(pwm_0_auto_int_xing_out_sync_2),
+    .auto_int_xing_out_sync_3(pwm_0_auto_int_xing_out_sync_3),
+    .auto_control_xing_in_a_ready(pwm_0_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(pwm_0_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(pwm_0_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(pwm_0_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(pwm_0_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(pwm_0_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(pwm_0_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(pwm_0_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(pwm_0_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(pwm_0_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(pwm_0_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(pwm_0_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(pwm_0_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(pwm_0_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(pwm_0_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(pwm_0_auto_control_xing_in_d_bits_data),
+    .auto_io_out_gpio_0(pwm_0_auto_io_out_gpio_0),
+    .auto_io_out_gpio_1(pwm_0_auto_io_out_gpio_1),
+    .auto_io_out_gpio_2(pwm_0_auto_io_out_gpio_2),
+    .auto_io_out_gpio_3(pwm_0_auto_io_out_gpio_3)
+  );
+  assign auto_pwm_0_int_xing_out_sync_0 = pwm_0_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_pwm_0_int_xing_out_sync_1 = pwm_0_auto_int_xing_out_sync_1; // @[LazyModule.scala 311:12]
+  assign auto_pwm_0_int_xing_out_sync_2 = pwm_0_auto_int_xing_out_sync_2; // @[LazyModule.scala 311:12]
+  assign auto_pwm_0_int_xing_out_sync_3 = pwm_0_auto_int_xing_out_sync_3; // @[LazyModule.scala 311:12]
+  assign auto_pwm_0_control_xing_in_a_ready = pwm_0_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_pwm_0_control_xing_in_d_valid = pwm_0_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_pwm_0_control_xing_in_d_bits_opcode = pwm_0_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_pwm_0_control_xing_in_d_bits_size = pwm_0_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_pwm_0_control_xing_in_d_bits_source = pwm_0_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_pwm_0_control_xing_in_d_bits_data = pwm_0_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_pwm_0_io_out_gpio_0 = pwm_0_auto_io_out_gpio_0; // @[LazyModule.scala 311:12]
+  assign auto_pwm_0_io_out_gpio_1 = pwm_0_auto_io_out_gpio_1; // @[LazyModule.scala 311:12]
+  assign auto_pwm_0_io_out_gpio_2 = pwm_0_auto_io_out_gpio_2; // @[LazyModule.scala 311:12]
+  assign auto_pwm_0_io_out_gpio_3 = pwm_0_auto_io_out_gpio_3; // @[LazyModule.scala 311:12]
+  assign pwm_0_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign pwm_0_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_valid = auto_pwm_0_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_bits_opcode = auto_pwm_0_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_bits_param = auto_pwm_0_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_bits_size = auto_pwm_0_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_bits_source = auto_pwm_0_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_bits_address = auto_pwm_0_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_bits_mask = auto_pwm_0_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_bits_data = auto_pwm_0_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_a_bits_corrupt = auto_pwm_0_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign pwm_0_auto_control_xing_in_d_ready = auto_pwm_0_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+endmodule
+module IntSyncSyncCrossingSink_16(
+  input   auto_in_sync_0,
+  input   auto_in_sync_1,
+  input   auto_in_sync_2,
+  input   auto_in_sync_3,
+  output  auto_out_0,
+  output  auto_out_1,
+  output  auto_out_2,
+  output  auto_out_3
+);
+  assign auto_out_0 = auto_in_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1 = auto_in_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2 = auto_in_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3 = auto_in_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLMonitor_68(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10025000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLPWM_1(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_int_xing_out_sync_1,
+  output        auto_int_xing_out_sync_2,
+  output        auto_int_xing_out_sync_3,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_gpio_0,
+  output        auto_io_out_gpio_1,
+  output        auto_io_out_gpio_2,
+  output        auto_io_out_gpio_3
+);
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_2; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_3; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_2; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_3; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  pwm_clock; // @[PWM.scala 95:21]
+  wire  pwm_reset; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__sticky; // @[PWM.scala 95:21]
+  wire [3:0] pwm_scale_io_regs_cfg_write__scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_sticky; // @[PWM.scala 95:21]
+  wire [3:0] pwm_scale_io_regs_cfg_read_scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_sticky; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_countLo_write_valid; // @[PWM.scala 95:21]
+  wire [30:0] pwm_scale_io_regs_countLo_write_bits; // @[PWM.scala 95:21]
+  wire [30:0] pwm_scale_io_regs_countLo_read; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_s_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_0_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_0_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_0_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_1_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_1_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_1_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_2_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_2_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_2_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_3_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_3_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_3_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_3; // @[PWM.scala 95:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3f0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [3:0] out_oindex = {in_bits_index[3],in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [15:0] _out_frontSel_T = 16'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [3:0] _out_T_29 = pwm_scale_io_regs_cfg_read_scale; // @[RegisterRouter.scala 83:24]
+  wire [4:0] out_prepend = {1'h0,_out_T_29}; // @[Cat.scala 31:58]
+  wire [7:0] _out_T_38 = {{3'd0}, out_prepend}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_2 = &out_frontMask[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_3 = &out_frontMask[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_6 = &out_frontMask[12]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_7 = &out_frontMask[13]; // @[RegisterRouter.scala 83:24]
+  wire [14:0] out_prepend_7 = {1'h0,pwm_scale_io_regs_cfg_read_running,pwm_scale_io_regs_cfg_read_countAlways,1'h0,
+    pwm_scale_io_regs_cfg_read_deglitch,pwm_scale_io_regs_cfg_read_zerocmp,pwm_scale_io_regs_cfg_read_sticky,_out_T_38}; // @[Cat.scala 31:58]
+  wire [15:0] _out_T_111 = {{1'd0}, out_prepend_7}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_9 = &out_frontMask[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[17]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_11 = &out_frontMask[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_12 = &out_frontMask[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_13 = &out_frontMask[20]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_14 = &out_frontMask[21]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_15 = &out_frontMask[22]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_16 = &out_frontMask[23]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_17 = &out_frontMask[24]; // @[RegisterRouter.scala 83:24]
+  wire [24:0] out_prepend_16 = {pwm_scale_io_regs_cfg_read_gang_0,pwm_scale_io_regs_cfg_read_extra_3,
+    pwm_scale_io_regs_cfg_read_extra_2,pwm_scale_io_regs_cfg_read_extra_1,pwm_scale_io_regs_cfg_read_extra_0,
+    pwm_scale_io_regs_cfg_read_center_3,pwm_scale_io_regs_cfg_read_center_2,pwm_scale_io_regs_cfg_read_center_1,
+    pwm_scale_io_regs_cfg_read_center_0,_out_T_111}; // @[Cat.scala 31:58]
+  wire  out_wimask_18 = &out_frontMask[25]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_19 = &out_frontMask[26]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_20 = &out_frontMask[27]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_21 = &out_frontMask[28]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_22 = &out_frontMask[29]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_23 = &out_frontMask[30]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_24 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_23 = {pwm_scale_io_regs_cfg_read_ip_3,pwm_scale_io_regs_cfg_read_ip_2,
+    pwm_scale_io_regs_cfg_read_ip_1,pwm_scale_io_regs_cfg_read_ip_0,pwm_scale_io_regs_cfg_read_gang_3,
+    pwm_scale_io_regs_cfg_read_gang_2,pwm_scale_io_regs_cfg_read_gang_1,out_prepend_16}; // @[Cat.scala 31:58]
+  wire  out_wimask_25 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_25 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_298 = pwm_scale_io_regs_cmp_2_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_9 = _out_frontSel_T[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_27 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_9 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_318 = pwm_scale_io_regs_cmp_1_read; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_28 = &out_frontMask[30:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_28 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [30:0] _out_T_329 = pwm_scale_io_regs_countLo_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_11 = _out_frontSel_T[11]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_31 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_11 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_358 = pwm_scale_io_regs_cmp_3_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_8 = _out_frontSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_32 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_8 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_369 = pwm_scale_io_regs_cmp_0_read; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_378 = pwm_scale_io_regs_s_read; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_66 = 4'h2 == out_oindex ? _out_T : 4'h1 == out_oindex | _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_67 = 4'h3 == out_oindex ? _out_T : _GEN_66; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_68 = 4'h4 == out_oindex ? _out_T : _GEN_67; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_70 = 4'h6 == out_oindex ? _out_T : 4'h5 == out_oindex | _GEN_68; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_71 = 4'h7 == out_oindex ? _out_T : _GEN_70; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_72 = 4'h8 == out_oindex ? _out_T : _GEN_71; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_73 = 4'h9 == out_oindex ? _out_T : _GEN_72; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_74 = 4'ha == out_oindex ? _out_T : _GEN_73; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_75 = 4'hb == out_oindex ? _out_T : _GEN_74; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_79 = 4'hf == out_oindex | (4'he == out_oindex | (4'hd == out_oindex | (4'hc == out_oindex | _GEN_75))); // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_81 = 4'h1 == out_oindex ? 32'h0 : out_prepend_23; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_2 = {{1'd0}, _out_T_329}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_82 = 4'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_81; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_83 = 4'h3 == out_oindex ? 32'h0 : _GEN_82; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{16'd0}, _out_T_378}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_84 = 4'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_83; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_85 = 4'h5 == out_oindex ? 32'h0 : _GEN_84; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_86 = 4'h6 == out_oindex ? 32'h0 : _GEN_85; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_87 = 4'h7 == out_oindex ? 32'h1 : _GEN_86; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_8 = {{16'd0}, _out_T_369}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_88 = 4'h8 == out_oindex ? _out_out_bits_data_WIRE_1_8 : _GEN_87; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_9 = {{16'd0}, _out_T_318}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_89 = 4'h9 == out_oindex ? _out_out_bits_data_WIRE_1_9 : _GEN_88; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_10 = {{16'd0}, _out_T_298}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_90 = 4'ha == out_oindex ? _out_out_bits_data_WIRE_1_10 : _GEN_89; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_11 = {{16'd0}, _out_T_358}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_91 = 4'hb == out_oindex ? _out_out_bits_data_WIRE_1_11 : _GEN_90; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_92 = 4'hc == out_oindex ? 32'h0 : _GEN_91; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_93 = 4'hd == out_oindex ? 32'h0 : _GEN_92; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_94 = 4'he == out_oindex ? 32'h0 : _GEN_93; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_95 = 4'hf == out_oindex ? 32'h0 : _GEN_94; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_18 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_in_1(intsource_auto_in_1),
+    .auto_in_2(intsource_auto_in_2),
+    .auto_in_3(intsource_auto_in_3),
+    .auto_out_sync_0(intsource_auto_out_sync_0),
+    .auto_out_sync_1(intsource_auto_out_sync_1),
+    .auto_out_sync_2(intsource_auto_out_sync_2),
+    .auto_out_sync_3(intsource_auto_out_sync_3)
+  );
+  TLMonitor_68 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  PWMTimer pwm ( // @[PWM.scala 95:21]
+    .clock(pwm_clock),
+    .reset(pwm_reset),
+    .scale_io_regs_cfg_write__ip_0(pwm_scale_io_regs_cfg_write__ip_0),
+    .scale_io_regs_cfg_write__ip_1(pwm_scale_io_regs_cfg_write__ip_1),
+    .scale_io_regs_cfg_write__ip_2(pwm_scale_io_regs_cfg_write__ip_2),
+    .scale_io_regs_cfg_write__ip_3(pwm_scale_io_regs_cfg_write__ip_3),
+    .scale_io_regs_cfg_write__gang_0(pwm_scale_io_regs_cfg_write__gang_0),
+    .scale_io_regs_cfg_write__gang_1(pwm_scale_io_regs_cfg_write__gang_1),
+    .scale_io_regs_cfg_write__gang_2(pwm_scale_io_regs_cfg_write__gang_2),
+    .scale_io_regs_cfg_write__gang_3(pwm_scale_io_regs_cfg_write__gang_3),
+    .scale_io_regs_cfg_write__extra_0(pwm_scale_io_regs_cfg_write__extra_0),
+    .scale_io_regs_cfg_write__extra_1(pwm_scale_io_regs_cfg_write__extra_1),
+    .scale_io_regs_cfg_write__extra_2(pwm_scale_io_regs_cfg_write__extra_2),
+    .scale_io_regs_cfg_write__extra_3(pwm_scale_io_regs_cfg_write__extra_3),
+    .scale_io_regs_cfg_write__center_0(pwm_scale_io_regs_cfg_write__center_0),
+    .scale_io_regs_cfg_write__center_1(pwm_scale_io_regs_cfg_write__center_1),
+    .scale_io_regs_cfg_write__center_2(pwm_scale_io_regs_cfg_write__center_2),
+    .scale_io_regs_cfg_write__center_3(pwm_scale_io_regs_cfg_write__center_3),
+    .scale_io_regs_cfg_write__running(pwm_scale_io_regs_cfg_write__running),
+    .scale_io_regs_cfg_write__countAlways(pwm_scale_io_regs_cfg_write__countAlways),
+    .scale_io_regs_cfg_write__deglitch(pwm_scale_io_regs_cfg_write__deglitch),
+    .scale_io_regs_cfg_write__zerocmp(pwm_scale_io_regs_cfg_write__zerocmp),
+    .scale_io_regs_cfg_write__sticky(pwm_scale_io_regs_cfg_write__sticky),
+    .scale_io_regs_cfg_write__scale(pwm_scale_io_regs_cfg_write__scale),
+    .scale_io_regs_cfg_read_ip_0(pwm_scale_io_regs_cfg_read_ip_0),
+    .scale_io_regs_cfg_read_ip_1(pwm_scale_io_regs_cfg_read_ip_1),
+    .scale_io_regs_cfg_read_ip_2(pwm_scale_io_regs_cfg_read_ip_2),
+    .scale_io_regs_cfg_read_ip_3(pwm_scale_io_regs_cfg_read_ip_3),
+    .scale_io_regs_cfg_read_gang_0(pwm_scale_io_regs_cfg_read_gang_0),
+    .scale_io_regs_cfg_read_gang_1(pwm_scale_io_regs_cfg_read_gang_1),
+    .scale_io_regs_cfg_read_gang_2(pwm_scale_io_regs_cfg_read_gang_2),
+    .scale_io_regs_cfg_read_gang_3(pwm_scale_io_regs_cfg_read_gang_3),
+    .scale_io_regs_cfg_read_extra_0(pwm_scale_io_regs_cfg_read_extra_0),
+    .scale_io_regs_cfg_read_extra_1(pwm_scale_io_regs_cfg_read_extra_1),
+    .scale_io_regs_cfg_read_extra_2(pwm_scale_io_regs_cfg_read_extra_2),
+    .scale_io_regs_cfg_read_extra_3(pwm_scale_io_regs_cfg_read_extra_3),
+    .scale_io_regs_cfg_read_center_0(pwm_scale_io_regs_cfg_read_center_0),
+    .scale_io_regs_cfg_read_center_1(pwm_scale_io_regs_cfg_read_center_1),
+    .scale_io_regs_cfg_read_center_2(pwm_scale_io_regs_cfg_read_center_2),
+    .scale_io_regs_cfg_read_center_3(pwm_scale_io_regs_cfg_read_center_3),
+    .scale_io_regs_cfg_read_running(pwm_scale_io_regs_cfg_read_running),
+    .scale_io_regs_cfg_read_countAlways(pwm_scale_io_regs_cfg_read_countAlways),
+    .scale_io_regs_cfg_read_deglitch(pwm_scale_io_regs_cfg_read_deglitch),
+    .scale_io_regs_cfg_read_zerocmp(pwm_scale_io_regs_cfg_read_zerocmp),
+    .scale_io_regs_cfg_read_sticky(pwm_scale_io_regs_cfg_read_sticky),
+    .scale_io_regs_cfg_read_scale(pwm_scale_io_regs_cfg_read_scale),
+    .scale_io_regs_cfg_write_ip_0(pwm_scale_io_regs_cfg_write_ip_0),
+    .scale_io_regs_cfg_write_ip_1(pwm_scale_io_regs_cfg_write_ip_1),
+    .scale_io_regs_cfg_write_ip_2(pwm_scale_io_regs_cfg_write_ip_2),
+    .scale_io_regs_cfg_write_ip_3(pwm_scale_io_regs_cfg_write_ip_3),
+    .scale_io_regs_cfg_write_gang_0(pwm_scale_io_regs_cfg_write_gang_0),
+    .scale_io_regs_cfg_write_gang_1(pwm_scale_io_regs_cfg_write_gang_1),
+    .scale_io_regs_cfg_write_gang_2(pwm_scale_io_regs_cfg_write_gang_2),
+    .scale_io_regs_cfg_write_gang_3(pwm_scale_io_regs_cfg_write_gang_3),
+    .scale_io_regs_cfg_write_extra_0(pwm_scale_io_regs_cfg_write_extra_0),
+    .scale_io_regs_cfg_write_extra_1(pwm_scale_io_regs_cfg_write_extra_1),
+    .scale_io_regs_cfg_write_extra_2(pwm_scale_io_regs_cfg_write_extra_2),
+    .scale_io_regs_cfg_write_extra_3(pwm_scale_io_regs_cfg_write_extra_3),
+    .scale_io_regs_cfg_write_center_0(pwm_scale_io_regs_cfg_write_center_0),
+    .scale_io_regs_cfg_write_center_1(pwm_scale_io_regs_cfg_write_center_1),
+    .scale_io_regs_cfg_write_center_2(pwm_scale_io_regs_cfg_write_center_2),
+    .scale_io_regs_cfg_write_center_3(pwm_scale_io_regs_cfg_write_center_3),
+    .scale_io_regs_cfg_write_running(pwm_scale_io_regs_cfg_write_running),
+    .scale_io_regs_cfg_write_countAlways(pwm_scale_io_regs_cfg_write_countAlways),
+    .scale_io_regs_cfg_write_deglitch(pwm_scale_io_regs_cfg_write_deglitch),
+    .scale_io_regs_cfg_write_zerocmp(pwm_scale_io_regs_cfg_write_zerocmp),
+    .scale_io_regs_cfg_write_sticky(pwm_scale_io_regs_cfg_write_sticky),
+    .scale_io_regs_cfg_write_scale(pwm_scale_io_regs_cfg_write_scale),
+    .scale_io_regs_countLo_write_valid(pwm_scale_io_regs_countLo_write_valid),
+    .scale_io_regs_countLo_write_bits(pwm_scale_io_regs_countLo_write_bits),
+    .scale_io_regs_countLo_read(pwm_scale_io_regs_countLo_read),
+    .scale_io_regs_s_read(pwm_scale_io_regs_s_read),
+    .scale_io_regs_cmp_0_write_valid(pwm_scale_io_regs_cmp_0_write_valid),
+    .scale_io_regs_cmp_0_write_bits(pwm_scale_io_regs_cmp_0_write_bits),
+    .scale_io_regs_cmp_0_read(pwm_scale_io_regs_cmp_0_read),
+    .scale_io_regs_cmp_1_write_valid(pwm_scale_io_regs_cmp_1_write_valid),
+    .scale_io_regs_cmp_1_write_bits(pwm_scale_io_regs_cmp_1_write_bits),
+    .scale_io_regs_cmp_1_read(pwm_scale_io_regs_cmp_1_read),
+    .scale_io_regs_cmp_2_write_valid(pwm_scale_io_regs_cmp_2_write_valid),
+    .scale_io_regs_cmp_2_write_bits(pwm_scale_io_regs_cmp_2_write_bits),
+    .scale_io_regs_cmp_2_read(pwm_scale_io_regs_cmp_2_read),
+    .scale_io_regs_cmp_3_write_valid(pwm_scale_io_regs_cmp_3_write_valid),
+    .scale_io_regs_cmp_3_write_bits(pwm_scale_io_regs_cmp_3_write_bits),
+    .scale_io_regs_cmp_3_read(pwm_scale_io_regs_cmp_3_read),
+    .scale_io_ip_0(pwm_scale_io_ip_0),
+    .scale_io_ip_1(pwm_scale_io_ip_1),
+    .scale_io_ip_2(pwm_scale_io_ip_2),
+    .scale_io_ip_3(pwm_scale_io_ip_3),
+    .scale_io_gpio_0(pwm_scale_io_gpio_0),
+    .scale_io_gpio_1(pwm_scale_io_gpio_1),
+    .scale_io_gpio_2(pwm_scale_io_gpio_2),
+    .scale_io_gpio_3(pwm_scale_io_gpio_3)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_1 = intsource_auto_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_2 = intsource_auto_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_3 = intsource_auto_out_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_gpio_0 = pwm_scale_io_gpio_0; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_1 = pwm_scale_io_gpio_1; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_2 = pwm_scale_io_gpio_2; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_3 = pwm_scale_io_gpio_3; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_79 ? _GEN_95 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = pwm_scale_io_ip_0; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_1 = pwm_scale_io_ip_1; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_2 = pwm_scale_io_ip_2; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_3 = pwm_scale_io_ip_3; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_clock = clock;
+  assign pwm_reset = reset;
+  assign pwm_scale_io_regs_cfg_write__ip_0 = bundleIn_0_a_bits_data[28]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_1 = bundleIn_0_a_bits_data[29]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_2 = bundleIn_0_a_bits_data[30]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_3 = bundleIn_0_a_bits_data[31]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_0 = bundleIn_0_a_bits_data[24]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_1 = bundleIn_0_a_bits_data[25]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_2 = bundleIn_0_a_bits_data[26]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_3 = bundleIn_0_a_bits_data[27]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_0 = bundleIn_0_a_bits_data[20]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_1 = bundleIn_0_a_bits_data[21]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_2 = bundleIn_0_a_bits_data[22]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_3 = bundleIn_0_a_bits_data[23]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_0 = bundleIn_0_a_bits_data[16]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_1 = bundleIn_0_a_bits_data[17]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_2 = bundleIn_0_a_bits_data[18]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_3 = bundleIn_0_a_bits_data[19]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__running = bundleIn_0_a_bits_data[13]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__countAlways = bundleIn_0_a_bits_data[12]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__deglitch = bundleIn_0_a_bits_data[10]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__zerocmp = bundleIn_0_a_bits_data[9]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__sticky = bundleIn_0_a_bits_data[8]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__scale = bundleIn_0_a_bits_data[3:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_0 = out_wivalid_0 & out_wimask_21; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_1 = out_wivalid_0 & out_wimask_22; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_2 = out_wivalid_0 & out_wimask_23; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_3 = out_wivalid_0 & out_wimask_24; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_0 = out_wivalid_0 & out_wimask_17; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_1 = out_wivalid_0 & out_wimask_18; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_2 = out_wivalid_0 & out_wimask_19; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_3 = out_wivalid_0 & out_wimask_20; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_0 = out_wivalid_0 & out_wimask_13; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_1 = out_wivalid_0 & out_wimask_14; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_2 = out_wivalid_0 & out_wimask_15; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_3 = out_wivalid_0 & out_wimask_16; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_0 = out_wivalid_0 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_1 = out_wivalid_0 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_2 = out_wivalid_0 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_3 = out_wivalid_0 & out_wimask_12; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_running = out_wivalid_0 & out_wimask_7; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_countAlways = out_wivalid_0 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_deglitch = out_wivalid_0 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_zerocmp = out_wivalid_0 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_sticky = out_wivalid_0 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_scale = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_countLo_write_valid = out_wivalid_28 & out_wimask_28; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_countLo_write_bits = bundleIn_0_a_bits_data[30:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_0_write_valid = out_wivalid_32 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_0_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_1_write_valid = out_wivalid_27 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_1_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_2_write_valid = out_wivalid_25 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_2_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_3_write_valid = out_wivalid_31 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_3_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+endmodule
+module ClockSinkDomain_11(
+  output        auto_pwm_1_int_xing_out_sync_0,
+  output        auto_pwm_1_int_xing_out_sync_1,
+  output        auto_pwm_1_int_xing_out_sync_2,
+  output        auto_pwm_1_int_xing_out_sync_3,
+  output        auto_pwm_1_control_xing_in_a_ready,
+  input         auto_pwm_1_control_xing_in_a_valid,
+  input  [2:0]  auto_pwm_1_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_pwm_1_control_xing_in_a_bits_param,
+  input  [1:0]  auto_pwm_1_control_xing_in_a_bits_size,
+  input  [6:0]  auto_pwm_1_control_xing_in_a_bits_source,
+  input  [28:0] auto_pwm_1_control_xing_in_a_bits_address,
+  input  [3:0]  auto_pwm_1_control_xing_in_a_bits_mask,
+  input  [31:0] auto_pwm_1_control_xing_in_a_bits_data,
+  input         auto_pwm_1_control_xing_in_a_bits_corrupt,
+  input         auto_pwm_1_control_xing_in_d_ready,
+  output        auto_pwm_1_control_xing_in_d_valid,
+  output [2:0]  auto_pwm_1_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_pwm_1_control_xing_in_d_bits_size,
+  output [6:0]  auto_pwm_1_control_xing_in_d_bits_source,
+  output [31:0] auto_pwm_1_control_xing_in_d_bits_data,
+  output        auto_pwm_1_io_out_gpio_0,
+  output        auto_pwm_1_io_out_gpio_1,
+  output        auto_pwm_1_io_out_gpio_2,
+  output        auto_pwm_1_io_out_gpio_3,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  pwm_1_clock; // @[PWM.scala 135:49]
+  wire  pwm_1_reset; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_int_xing_out_sync_0; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_int_xing_out_sync_1; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_int_xing_out_sync_2; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_int_xing_out_sync_3; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_control_xing_in_a_ready; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_control_xing_in_a_valid; // @[PWM.scala 135:49]
+  wire [2:0] pwm_1_auto_control_xing_in_a_bits_opcode; // @[PWM.scala 135:49]
+  wire [2:0] pwm_1_auto_control_xing_in_a_bits_param; // @[PWM.scala 135:49]
+  wire [1:0] pwm_1_auto_control_xing_in_a_bits_size; // @[PWM.scala 135:49]
+  wire [6:0] pwm_1_auto_control_xing_in_a_bits_source; // @[PWM.scala 135:49]
+  wire [28:0] pwm_1_auto_control_xing_in_a_bits_address; // @[PWM.scala 135:49]
+  wire [3:0] pwm_1_auto_control_xing_in_a_bits_mask; // @[PWM.scala 135:49]
+  wire [31:0] pwm_1_auto_control_xing_in_a_bits_data; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_control_xing_in_a_bits_corrupt; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_control_xing_in_d_ready; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_control_xing_in_d_valid; // @[PWM.scala 135:49]
+  wire [2:0] pwm_1_auto_control_xing_in_d_bits_opcode; // @[PWM.scala 135:49]
+  wire [1:0] pwm_1_auto_control_xing_in_d_bits_size; // @[PWM.scala 135:49]
+  wire [6:0] pwm_1_auto_control_xing_in_d_bits_source; // @[PWM.scala 135:49]
+  wire [31:0] pwm_1_auto_control_xing_in_d_bits_data; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_io_out_gpio_0; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_io_out_gpio_1; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_io_out_gpio_2; // @[PWM.scala 135:49]
+  wire  pwm_1_auto_io_out_gpio_3; // @[PWM.scala 135:49]
+  TLPWM_1 pwm_1 ( // @[PWM.scala 135:49]
+    .clock(pwm_1_clock),
+    .reset(pwm_1_reset),
+    .auto_int_xing_out_sync_0(pwm_1_auto_int_xing_out_sync_0),
+    .auto_int_xing_out_sync_1(pwm_1_auto_int_xing_out_sync_1),
+    .auto_int_xing_out_sync_2(pwm_1_auto_int_xing_out_sync_2),
+    .auto_int_xing_out_sync_3(pwm_1_auto_int_xing_out_sync_3),
+    .auto_control_xing_in_a_ready(pwm_1_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(pwm_1_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(pwm_1_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(pwm_1_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(pwm_1_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(pwm_1_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(pwm_1_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(pwm_1_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(pwm_1_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(pwm_1_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(pwm_1_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(pwm_1_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(pwm_1_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(pwm_1_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(pwm_1_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(pwm_1_auto_control_xing_in_d_bits_data),
+    .auto_io_out_gpio_0(pwm_1_auto_io_out_gpio_0),
+    .auto_io_out_gpio_1(pwm_1_auto_io_out_gpio_1),
+    .auto_io_out_gpio_2(pwm_1_auto_io_out_gpio_2),
+    .auto_io_out_gpio_3(pwm_1_auto_io_out_gpio_3)
+  );
+  assign auto_pwm_1_int_xing_out_sync_0 = pwm_1_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_pwm_1_int_xing_out_sync_1 = pwm_1_auto_int_xing_out_sync_1; // @[LazyModule.scala 311:12]
+  assign auto_pwm_1_int_xing_out_sync_2 = pwm_1_auto_int_xing_out_sync_2; // @[LazyModule.scala 311:12]
+  assign auto_pwm_1_int_xing_out_sync_3 = pwm_1_auto_int_xing_out_sync_3; // @[LazyModule.scala 311:12]
+  assign auto_pwm_1_control_xing_in_a_ready = pwm_1_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_pwm_1_control_xing_in_d_valid = pwm_1_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_pwm_1_control_xing_in_d_bits_opcode = pwm_1_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_pwm_1_control_xing_in_d_bits_size = pwm_1_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_pwm_1_control_xing_in_d_bits_source = pwm_1_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_pwm_1_control_xing_in_d_bits_data = pwm_1_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_pwm_1_io_out_gpio_0 = pwm_1_auto_io_out_gpio_0; // @[LazyModule.scala 311:12]
+  assign auto_pwm_1_io_out_gpio_1 = pwm_1_auto_io_out_gpio_1; // @[LazyModule.scala 311:12]
+  assign auto_pwm_1_io_out_gpio_2 = pwm_1_auto_io_out_gpio_2; // @[LazyModule.scala 311:12]
+  assign auto_pwm_1_io_out_gpio_3 = pwm_1_auto_io_out_gpio_3; // @[LazyModule.scala 311:12]
+  assign pwm_1_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign pwm_1_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_valid = auto_pwm_1_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_bits_opcode = auto_pwm_1_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_bits_param = auto_pwm_1_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_bits_size = auto_pwm_1_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_bits_source = auto_pwm_1_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_bits_address = auto_pwm_1_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_bits_mask = auto_pwm_1_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_bits_data = auto_pwm_1_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_a_bits_corrupt = auto_pwm_1_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign pwm_1_auto_control_xing_in_d_ready = auto_pwm_1_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+endmodule
+module TLMonitor_69(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10035000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLPWM_2(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_int_xing_out_sync_1,
+  output        auto_int_xing_out_sync_2,
+  output        auto_int_xing_out_sync_3,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  output        auto_io_out_gpio_0,
+  output        auto_io_out_gpio_1,
+  output        auto_io_out_gpio_2,
+  output        auto_io_out_gpio_3
+);
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_2; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_3; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_2; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_3; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  pwm_clock; // @[PWM.scala 95:21]
+  wire  pwm_reset; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write__sticky; // @[PWM.scala 95:21]
+  wire [3:0] pwm_scale_io_regs_cfg_write__scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_read_sticky; // @[PWM.scala 95:21]
+  wire [3:0] pwm_scale_io_regs_cfg_read_scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_gang_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_extra_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_center_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_running; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_countAlways; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_deglitch; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_zerocmp; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_sticky; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cfg_write_scale; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_countLo_write_valid; // @[PWM.scala 95:21]
+  wire [30:0] pwm_scale_io_regs_countLo_write_bits; // @[PWM.scala 95:21]
+  wire [30:0] pwm_scale_io_regs_countLo_read; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_s_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_0_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_0_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_0_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_1_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_1_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_1_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_2_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_2_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_2_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_regs_cmp_3_write_valid; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_3_write_bits; // @[PWM.scala 95:21]
+  wire [15:0] pwm_scale_io_regs_cmp_3_read; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_ip_3; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_0; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_1; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_2; // @[PWM.scala 95:21]
+  wire  pwm_scale_io_gpio_3; // @[PWM.scala 95:21]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [9:0] out_findex = in_bits_index & 10'h3f0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_frontMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_frontMask = {_out_frontMask_T_11,_out_frontMask_T_9,_out_frontMask_T_7,_out_frontMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [3:0] out_oindex = {in_bits_index[3],in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [15:0] _out_frontSel_T = 16'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [3:0] _out_T_29 = pwm_scale_io_regs_cfg_read_scale; // @[RegisterRouter.scala 83:24]
+  wire [4:0] out_prepend = {1'h0,_out_T_29}; // @[Cat.scala 31:58]
+  wire [7:0] _out_T_38 = {{3'd0}, out_prepend}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_2 = &out_frontMask[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_3 = &out_frontMask[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_frontMask[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_6 = &out_frontMask[12]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_7 = &out_frontMask[13]; // @[RegisterRouter.scala 83:24]
+  wire [14:0] out_prepend_7 = {1'h0,pwm_scale_io_regs_cfg_read_running,pwm_scale_io_regs_cfg_read_countAlways,1'h0,
+    pwm_scale_io_regs_cfg_read_deglitch,pwm_scale_io_regs_cfg_read_zerocmp,pwm_scale_io_regs_cfg_read_sticky,_out_T_38}; // @[Cat.scala 31:58]
+  wire [15:0] _out_T_111 = {{1'd0}, out_prepend_7}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_9 = &out_frontMask[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[17]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_11 = &out_frontMask[18]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_12 = &out_frontMask[19]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_13 = &out_frontMask[20]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_14 = &out_frontMask[21]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_15 = &out_frontMask[22]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_16 = &out_frontMask[23]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_17 = &out_frontMask[24]; // @[RegisterRouter.scala 83:24]
+  wire [24:0] out_prepend_16 = {pwm_scale_io_regs_cfg_read_gang_0,pwm_scale_io_regs_cfg_read_extra_3,
+    pwm_scale_io_regs_cfg_read_extra_2,pwm_scale_io_regs_cfg_read_extra_1,pwm_scale_io_regs_cfg_read_extra_0,
+    pwm_scale_io_regs_cfg_read_center_3,pwm_scale_io_regs_cfg_read_center_2,pwm_scale_io_regs_cfg_read_center_1,
+    pwm_scale_io_regs_cfg_read_center_0,_out_T_111}; // @[Cat.scala 31:58]
+  wire  out_wimask_18 = &out_frontMask[25]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_19 = &out_frontMask[26]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_20 = &out_frontMask[27]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_21 = &out_frontMask[28]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_22 = &out_frontMask[29]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_23 = &out_frontMask[30]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_24 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_23 = {pwm_scale_io_regs_cfg_read_ip_3,pwm_scale_io_regs_cfg_read_ip_2,
+    pwm_scale_io_regs_cfg_read_ip_1,pwm_scale_io_regs_cfg_read_ip_0,pwm_scale_io_regs_cfg_read_gang_3,
+    pwm_scale_io_regs_cfg_read_gang_2,pwm_scale_io_regs_cfg_read_gang_1,out_prepend_16}; // @[Cat.scala 31:58]
+  wire  out_wimask_25 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_25 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_298 = pwm_scale_io_regs_cmp_2_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_9 = _out_frontSel_T[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_27 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_9 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_318 = pwm_scale_io_regs_cmp_1_read; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_28 = &out_frontMask[30:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_28 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [30:0] _out_T_329 = pwm_scale_io_regs_countLo_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_11 = _out_frontSel_T[11]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_31 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_11 & out_findex == 10'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_358 = pwm_scale_io_regs_cmp_3_read; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_8 = _out_frontSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_32 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_8 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_369 = pwm_scale_io_regs_cmp_0_read; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_T_378 = pwm_scale_io_regs_s_read; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_66 = 4'h2 == out_oindex ? _out_T : 4'h1 == out_oindex | _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_67 = 4'h3 == out_oindex ? _out_T : _GEN_66; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_68 = 4'h4 == out_oindex ? _out_T : _GEN_67; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_70 = 4'h6 == out_oindex ? _out_T : 4'h5 == out_oindex | _GEN_68; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_71 = 4'h7 == out_oindex ? _out_T : _GEN_70; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_72 = 4'h8 == out_oindex ? _out_T : _GEN_71; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_73 = 4'h9 == out_oindex ? _out_T : _GEN_72; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_74 = 4'ha == out_oindex ? _out_T : _GEN_73; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_75 = 4'hb == out_oindex ? _out_T : _GEN_74; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_79 = 4'hf == out_oindex | (4'he == out_oindex | (4'hd == out_oindex | (4'hc == out_oindex | _GEN_75))); // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_81 = 4'h1 == out_oindex ? 32'h0 : out_prepend_23; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_2 = {{1'd0}, _out_T_329}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_82 = 4'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_81; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_83 = 4'h3 == out_oindex ? 32'h0 : _GEN_82; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_4 = {{16'd0}, _out_T_378}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_84 = 4'h4 == out_oindex ? _out_out_bits_data_WIRE_1_4 : _GEN_83; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_85 = 4'h5 == out_oindex ? 32'h0 : _GEN_84; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_86 = 4'h6 == out_oindex ? 32'h0 : _GEN_85; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_87 = 4'h7 == out_oindex ? 32'h1 : _GEN_86; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_8 = {{16'd0}, _out_T_369}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_88 = 4'h8 == out_oindex ? _out_out_bits_data_WIRE_1_8 : _GEN_87; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_9 = {{16'd0}, _out_T_318}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_89 = 4'h9 == out_oindex ? _out_out_bits_data_WIRE_1_9 : _GEN_88; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_10 = {{16'd0}, _out_T_298}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_90 = 4'ha == out_oindex ? _out_out_bits_data_WIRE_1_10 : _GEN_89; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_11 = {{16'd0}, _out_T_358}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_91 = 4'hb == out_oindex ? _out_out_bits_data_WIRE_1_11 : _GEN_90; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_92 = 4'hc == out_oindex ? 32'h0 : _GEN_91; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_93 = 4'hd == out_oindex ? 32'h0 : _GEN_92; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_94 = 4'he == out_oindex ? 32'h0 : _GEN_93; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_95 = 4'hf == out_oindex ? 32'h0 : _GEN_94; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_18 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_in_1(intsource_auto_in_1),
+    .auto_in_2(intsource_auto_in_2),
+    .auto_in_3(intsource_auto_in_3),
+    .auto_out_sync_0(intsource_auto_out_sync_0),
+    .auto_out_sync_1(intsource_auto_out_sync_1),
+    .auto_out_sync_2(intsource_auto_out_sync_2),
+    .auto_out_sync_3(intsource_auto_out_sync_3)
+  );
+  TLMonitor_69 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  PWMTimer pwm ( // @[PWM.scala 95:21]
+    .clock(pwm_clock),
+    .reset(pwm_reset),
+    .scale_io_regs_cfg_write__ip_0(pwm_scale_io_regs_cfg_write__ip_0),
+    .scale_io_regs_cfg_write__ip_1(pwm_scale_io_regs_cfg_write__ip_1),
+    .scale_io_regs_cfg_write__ip_2(pwm_scale_io_regs_cfg_write__ip_2),
+    .scale_io_regs_cfg_write__ip_3(pwm_scale_io_regs_cfg_write__ip_3),
+    .scale_io_regs_cfg_write__gang_0(pwm_scale_io_regs_cfg_write__gang_0),
+    .scale_io_regs_cfg_write__gang_1(pwm_scale_io_regs_cfg_write__gang_1),
+    .scale_io_regs_cfg_write__gang_2(pwm_scale_io_regs_cfg_write__gang_2),
+    .scale_io_regs_cfg_write__gang_3(pwm_scale_io_regs_cfg_write__gang_3),
+    .scale_io_regs_cfg_write__extra_0(pwm_scale_io_regs_cfg_write__extra_0),
+    .scale_io_regs_cfg_write__extra_1(pwm_scale_io_regs_cfg_write__extra_1),
+    .scale_io_regs_cfg_write__extra_2(pwm_scale_io_regs_cfg_write__extra_2),
+    .scale_io_regs_cfg_write__extra_3(pwm_scale_io_regs_cfg_write__extra_3),
+    .scale_io_regs_cfg_write__center_0(pwm_scale_io_regs_cfg_write__center_0),
+    .scale_io_regs_cfg_write__center_1(pwm_scale_io_regs_cfg_write__center_1),
+    .scale_io_regs_cfg_write__center_2(pwm_scale_io_regs_cfg_write__center_2),
+    .scale_io_regs_cfg_write__center_3(pwm_scale_io_regs_cfg_write__center_3),
+    .scale_io_regs_cfg_write__running(pwm_scale_io_regs_cfg_write__running),
+    .scale_io_regs_cfg_write__countAlways(pwm_scale_io_regs_cfg_write__countAlways),
+    .scale_io_regs_cfg_write__deglitch(pwm_scale_io_regs_cfg_write__deglitch),
+    .scale_io_regs_cfg_write__zerocmp(pwm_scale_io_regs_cfg_write__zerocmp),
+    .scale_io_regs_cfg_write__sticky(pwm_scale_io_regs_cfg_write__sticky),
+    .scale_io_regs_cfg_write__scale(pwm_scale_io_regs_cfg_write__scale),
+    .scale_io_regs_cfg_read_ip_0(pwm_scale_io_regs_cfg_read_ip_0),
+    .scale_io_regs_cfg_read_ip_1(pwm_scale_io_regs_cfg_read_ip_1),
+    .scale_io_regs_cfg_read_ip_2(pwm_scale_io_regs_cfg_read_ip_2),
+    .scale_io_regs_cfg_read_ip_3(pwm_scale_io_regs_cfg_read_ip_3),
+    .scale_io_regs_cfg_read_gang_0(pwm_scale_io_regs_cfg_read_gang_0),
+    .scale_io_regs_cfg_read_gang_1(pwm_scale_io_regs_cfg_read_gang_1),
+    .scale_io_regs_cfg_read_gang_2(pwm_scale_io_regs_cfg_read_gang_2),
+    .scale_io_regs_cfg_read_gang_3(pwm_scale_io_regs_cfg_read_gang_3),
+    .scale_io_regs_cfg_read_extra_0(pwm_scale_io_regs_cfg_read_extra_0),
+    .scale_io_regs_cfg_read_extra_1(pwm_scale_io_regs_cfg_read_extra_1),
+    .scale_io_regs_cfg_read_extra_2(pwm_scale_io_regs_cfg_read_extra_2),
+    .scale_io_regs_cfg_read_extra_3(pwm_scale_io_regs_cfg_read_extra_3),
+    .scale_io_regs_cfg_read_center_0(pwm_scale_io_regs_cfg_read_center_0),
+    .scale_io_regs_cfg_read_center_1(pwm_scale_io_regs_cfg_read_center_1),
+    .scale_io_regs_cfg_read_center_2(pwm_scale_io_regs_cfg_read_center_2),
+    .scale_io_regs_cfg_read_center_3(pwm_scale_io_regs_cfg_read_center_3),
+    .scale_io_regs_cfg_read_running(pwm_scale_io_regs_cfg_read_running),
+    .scale_io_regs_cfg_read_countAlways(pwm_scale_io_regs_cfg_read_countAlways),
+    .scale_io_regs_cfg_read_deglitch(pwm_scale_io_regs_cfg_read_deglitch),
+    .scale_io_regs_cfg_read_zerocmp(pwm_scale_io_regs_cfg_read_zerocmp),
+    .scale_io_regs_cfg_read_sticky(pwm_scale_io_regs_cfg_read_sticky),
+    .scale_io_regs_cfg_read_scale(pwm_scale_io_regs_cfg_read_scale),
+    .scale_io_regs_cfg_write_ip_0(pwm_scale_io_regs_cfg_write_ip_0),
+    .scale_io_regs_cfg_write_ip_1(pwm_scale_io_regs_cfg_write_ip_1),
+    .scale_io_regs_cfg_write_ip_2(pwm_scale_io_regs_cfg_write_ip_2),
+    .scale_io_regs_cfg_write_ip_3(pwm_scale_io_regs_cfg_write_ip_3),
+    .scale_io_regs_cfg_write_gang_0(pwm_scale_io_regs_cfg_write_gang_0),
+    .scale_io_regs_cfg_write_gang_1(pwm_scale_io_regs_cfg_write_gang_1),
+    .scale_io_regs_cfg_write_gang_2(pwm_scale_io_regs_cfg_write_gang_2),
+    .scale_io_regs_cfg_write_gang_3(pwm_scale_io_regs_cfg_write_gang_3),
+    .scale_io_regs_cfg_write_extra_0(pwm_scale_io_regs_cfg_write_extra_0),
+    .scale_io_regs_cfg_write_extra_1(pwm_scale_io_regs_cfg_write_extra_1),
+    .scale_io_regs_cfg_write_extra_2(pwm_scale_io_regs_cfg_write_extra_2),
+    .scale_io_regs_cfg_write_extra_3(pwm_scale_io_regs_cfg_write_extra_3),
+    .scale_io_regs_cfg_write_center_0(pwm_scale_io_regs_cfg_write_center_0),
+    .scale_io_regs_cfg_write_center_1(pwm_scale_io_regs_cfg_write_center_1),
+    .scale_io_regs_cfg_write_center_2(pwm_scale_io_regs_cfg_write_center_2),
+    .scale_io_regs_cfg_write_center_3(pwm_scale_io_regs_cfg_write_center_3),
+    .scale_io_regs_cfg_write_running(pwm_scale_io_regs_cfg_write_running),
+    .scale_io_regs_cfg_write_countAlways(pwm_scale_io_regs_cfg_write_countAlways),
+    .scale_io_regs_cfg_write_deglitch(pwm_scale_io_regs_cfg_write_deglitch),
+    .scale_io_regs_cfg_write_zerocmp(pwm_scale_io_regs_cfg_write_zerocmp),
+    .scale_io_regs_cfg_write_sticky(pwm_scale_io_regs_cfg_write_sticky),
+    .scale_io_regs_cfg_write_scale(pwm_scale_io_regs_cfg_write_scale),
+    .scale_io_regs_countLo_write_valid(pwm_scale_io_regs_countLo_write_valid),
+    .scale_io_regs_countLo_write_bits(pwm_scale_io_regs_countLo_write_bits),
+    .scale_io_regs_countLo_read(pwm_scale_io_regs_countLo_read),
+    .scale_io_regs_s_read(pwm_scale_io_regs_s_read),
+    .scale_io_regs_cmp_0_write_valid(pwm_scale_io_regs_cmp_0_write_valid),
+    .scale_io_regs_cmp_0_write_bits(pwm_scale_io_regs_cmp_0_write_bits),
+    .scale_io_regs_cmp_0_read(pwm_scale_io_regs_cmp_0_read),
+    .scale_io_regs_cmp_1_write_valid(pwm_scale_io_regs_cmp_1_write_valid),
+    .scale_io_regs_cmp_1_write_bits(pwm_scale_io_regs_cmp_1_write_bits),
+    .scale_io_regs_cmp_1_read(pwm_scale_io_regs_cmp_1_read),
+    .scale_io_regs_cmp_2_write_valid(pwm_scale_io_regs_cmp_2_write_valid),
+    .scale_io_regs_cmp_2_write_bits(pwm_scale_io_regs_cmp_2_write_bits),
+    .scale_io_regs_cmp_2_read(pwm_scale_io_regs_cmp_2_read),
+    .scale_io_regs_cmp_3_write_valid(pwm_scale_io_regs_cmp_3_write_valid),
+    .scale_io_regs_cmp_3_write_bits(pwm_scale_io_regs_cmp_3_write_bits),
+    .scale_io_regs_cmp_3_read(pwm_scale_io_regs_cmp_3_read),
+    .scale_io_ip_0(pwm_scale_io_ip_0),
+    .scale_io_ip_1(pwm_scale_io_ip_1),
+    .scale_io_ip_2(pwm_scale_io_ip_2),
+    .scale_io_ip_3(pwm_scale_io_ip_3),
+    .scale_io_gpio_0(pwm_scale_io_gpio_0),
+    .scale_io_gpio_1(pwm_scale_io_gpio_1),
+    .scale_io_gpio_2(pwm_scale_io_gpio_2),
+    .scale_io_gpio_3(pwm_scale_io_gpio_3)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_1 = intsource_auto_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_2 = intsource_auto_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_int_xing_out_sync_3 = intsource_auto_out_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_gpio_0 = pwm_scale_io_gpio_0; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_1 = pwm_scale_io_gpio_1; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_2 = pwm_scale_io_gpio_2; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign auto_io_out_gpio_3 = pwm_scale_io_gpio_3; // @[Nodes.scala 1207:84 PWM.scala 97:15]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = _GEN_79 ? _GEN_95 : 32'h0; // @[RegisterRouter.scala 83:24]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = pwm_scale_io_ip_0; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_1 = pwm_scale_io_ip_1; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_2 = pwm_scale_io_ip_2; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign intsource_auto_in_3 = pwm_scale_io_ip_3; // @[Nodes.scala 1207:84 PWM.scala 96:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_clock = clock;
+  assign pwm_reset = reset;
+  assign pwm_scale_io_regs_cfg_write__ip_0 = bundleIn_0_a_bits_data[28]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_1 = bundleIn_0_a_bits_data[29]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_2 = bundleIn_0_a_bits_data[30]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__ip_3 = bundleIn_0_a_bits_data[31]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_0 = bundleIn_0_a_bits_data[24]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_1 = bundleIn_0_a_bits_data[25]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_2 = bundleIn_0_a_bits_data[26]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__gang_3 = bundleIn_0_a_bits_data[27]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_0 = bundleIn_0_a_bits_data[20]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_1 = bundleIn_0_a_bits_data[21]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_2 = bundleIn_0_a_bits_data[22]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__extra_3 = bundleIn_0_a_bits_data[23]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_0 = bundleIn_0_a_bits_data[16]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_1 = bundleIn_0_a_bits_data[17]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_2 = bundleIn_0_a_bits_data[18]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__center_3 = bundleIn_0_a_bits_data[19]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__running = bundleIn_0_a_bits_data[13]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__countAlways = bundleIn_0_a_bits_data[12]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__deglitch = bundleIn_0_a_bits_data[10]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__zerocmp = bundleIn_0_a_bits_data[9]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__sticky = bundleIn_0_a_bits_data[8]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write__scale = bundleIn_0_a_bits_data[3:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_0 = out_wivalid_0 & out_wimask_21; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_1 = out_wivalid_0 & out_wimask_22; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_2 = out_wivalid_0 & out_wimask_23; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_ip_3 = out_wivalid_0 & out_wimask_24; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_0 = out_wivalid_0 & out_wimask_17; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_1 = out_wivalid_0 & out_wimask_18; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_2 = out_wivalid_0 & out_wimask_19; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_gang_3 = out_wivalid_0 & out_wimask_20; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_0 = out_wivalid_0 & out_wimask_13; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_1 = out_wivalid_0 & out_wimask_14; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_2 = out_wivalid_0 & out_wimask_15; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_extra_3 = out_wivalid_0 & out_wimask_16; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_0 = out_wivalid_0 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_1 = out_wivalid_0 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_2 = out_wivalid_0 & out_wimask_11; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_center_3 = out_wivalid_0 & out_wimask_12; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_running = out_wivalid_0 & out_wimask_7; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_countAlways = out_wivalid_0 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_deglitch = out_wivalid_0 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_zerocmp = out_wivalid_0 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_sticky = out_wivalid_0 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cfg_write_scale = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_countLo_write_valid = out_wivalid_28 & out_wimask_28; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_countLo_write_bits = bundleIn_0_a_bits_data[30:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_0_write_valid = out_wivalid_32 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_0_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_1_write_valid = out_wivalid_27 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_1_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_2_write_valid = out_wivalid_25 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_2_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_3_write_valid = out_wivalid_31 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  assign pwm_scale_io_regs_cmp_3_write_bits = bundleIn_0_a_bits_data[15:0]; // @[RegisterRouter.scala 83:24]
+endmodule
+module ClockSinkDomain_12(
+  output        auto_pwm_2_int_xing_out_sync_0,
+  output        auto_pwm_2_int_xing_out_sync_1,
+  output        auto_pwm_2_int_xing_out_sync_2,
+  output        auto_pwm_2_int_xing_out_sync_3,
+  output        auto_pwm_2_control_xing_in_a_ready,
+  input         auto_pwm_2_control_xing_in_a_valid,
+  input  [2:0]  auto_pwm_2_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_pwm_2_control_xing_in_a_bits_param,
+  input  [1:0]  auto_pwm_2_control_xing_in_a_bits_size,
+  input  [6:0]  auto_pwm_2_control_xing_in_a_bits_source,
+  input  [28:0] auto_pwm_2_control_xing_in_a_bits_address,
+  input  [3:0]  auto_pwm_2_control_xing_in_a_bits_mask,
+  input  [31:0] auto_pwm_2_control_xing_in_a_bits_data,
+  input         auto_pwm_2_control_xing_in_a_bits_corrupt,
+  input         auto_pwm_2_control_xing_in_d_ready,
+  output        auto_pwm_2_control_xing_in_d_valid,
+  output [2:0]  auto_pwm_2_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_pwm_2_control_xing_in_d_bits_size,
+  output [6:0]  auto_pwm_2_control_xing_in_d_bits_source,
+  output [31:0] auto_pwm_2_control_xing_in_d_bits_data,
+  output        auto_pwm_2_io_out_gpio_0,
+  output        auto_pwm_2_io_out_gpio_1,
+  output        auto_pwm_2_io_out_gpio_2,
+  output        auto_pwm_2_io_out_gpio_3,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  pwm_2_clock; // @[PWM.scala 135:49]
+  wire  pwm_2_reset; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_int_xing_out_sync_0; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_int_xing_out_sync_1; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_int_xing_out_sync_2; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_int_xing_out_sync_3; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_control_xing_in_a_ready; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_control_xing_in_a_valid; // @[PWM.scala 135:49]
+  wire [2:0] pwm_2_auto_control_xing_in_a_bits_opcode; // @[PWM.scala 135:49]
+  wire [2:0] pwm_2_auto_control_xing_in_a_bits_param; // @[PWM.scala 135:49]
+  wire [1:0] pwm_2_auto_control_xing_in_a_bits_size; // @[PWM.scala 135:49]
+  wire [6:0] pwm_2_auto_control_xing_in_a_bits_source; // @[PWM.scala 135:49]
+  wire [28:0] pwm_2_auto_control_xing_in_a_bits_address; // @[PWM.scala 135:49]
+  wire [3:0] pwm_2_auto_control_xing_in_a_bits_mask; // @[PWM.scala 135:49]
+  wire [31:0] pwm_2_auto_control_xing_in_a_bits_data; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_control_xing_in_a_bits_corrupt; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_control_xing_in_d_ready; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_control_xing_in_d_valid; // @[PWM.scala 135:49]
+  wire [2:0] pwm_2_auto_control_xing_in_d_bits_opcode; // @[PWM.scala 135:49]
+  wire [1:0] pwm_2_auto_control_xing_in_d_bits_size; // @[PWM.scala 135:49]
+  wire [6:0] pwm_2_auto_control_xing_in_d_bits_source; // @[PWM.scala 135:49]
+  wire [31:0] pwm_2_auto_control_xing_in_d_bits_data; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_io_out_gpio_0; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_io_out_gpio_1; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_io_out_gpio_2; // @[PWM.scala 135:49]
+  wire  pwm_2_auto_io_out_gpio_3; // @[PWM.scala 135:49]
+  TLPWM_2 pwm_2 ( // @[PWM.scala 135:49]
+    .clock(pwm_2_clock),
+    .reset(pwm_2_reset),
+    .auto_int_xing_out_sync_0(pwm_2_auto_int_xing_out_sync_0),
+    .auto_int_xing_out_sync_1(pwm_2_auto_int_xing_out_sync_1),
+    .auto_int_xing_out_sync_2(pwm_2_auto_int_xing_out_sync_2),
+    .auto_int_xing_out_sync_3(pwm_2_auto_int_xing_out_sync_3),
+    .auto_control_xing_in_a_ready(pwm_2_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(pwm_2_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(pwm_2_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(pwm_2_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(pwm_2_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(pwm_2_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(pwm_2_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(pwm_2_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(pwm_2_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(pwm_2_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(pwm_2_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(pwm_2_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(pwm_2_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(pwm_2_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(pwm_2_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(pwm_2_auto_control_xing_in_d_bits_data),
+    .auto_io_out_gpio_0(pwm_2_auto_io_out_gpio_0),
+    .auto_io_out_gpio_1(pwm_2_auto_io_out_gpio_1),
+    .auto_io_out_gpio_2(pwm_2_auto_io_out_gpio_2),
+    .auto_io_out_gpio_3(pwm_2_auto_io_out_gpio_3)
+  );
+  assign auto_pwm_2_int_xing_out_sync_0 = pwm_2_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_pwm_2_int_xing_out_sync_1 = pwm_2_auto_int_xing_out_sync_1; // @[LazyModule.scala 311:12]
+  assign auto_pwm_2_int_xing_out_sync_2 = pwm_2_auto_int_xing_out_sync_2; // @[LazyModule.scala 311:12]
+  assign auto_pwm_2_int_xing_out_sync_3 = pwm_2_auto_int_xing_out_sync_3; // @[LazyModule.scala 311:12]
+  assign auto_pwm_2_control_xing_in_a_ready = pwm_2_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_pwm_2_control_xing_in_d_valid = pwm_2_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_pwm_2_control_xing_in_d_bits_opcode = pwm_2_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_pwm_2_control_xing_in_d_bits_size = pwm_2_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_pwm_2_control_xing_in_d_bits_source = pwm_2_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_pwm_2_control_xing_in_d_bits_data = pwm_2_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_pwm_2_io_out_gpio_0 = pwm_2_auto_io_out_gpio_0; // @[LazyModule.scala 311:12]
+  assign auto_pwm_2_io_out_gpio_1 = pwm_2_auto_io_out_gpio_1; // @[LazyModule.scala 311:12]
+  assign auto_pwm_2_io_out_gpio_2 = pwm_2_auto_io_out_gpio_2; // @[LazyModule.scala 311:12]
+  assign auto_pwm_2_io_out_gpio_3 = pwm_2_auto_io_out_gpio_3; // @[LazyModule.scala 311:12]
+  assign pwm_2_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign pwm_2_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_valid = auto_pwm_2_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_bits_opcode = auto_pwm_2_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_bits_param = auto_pwm_2_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_bits_size = auto_pwm_2_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_bits_source = auto_pwm_2_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_bits_address = auto_pwm_2_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_bits_mask = auto_pwm_2_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_bits_data = auto_pwm_2_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_a_bits_corrupt = auto_pwm_2_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign pwm_2_auto_control_xing_in_d_ready = auto_pwm_2_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+endmodule
+module TLMonitor_70(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10016000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLI2C(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  input         auto_io_out_scl_in,
+  output        auto_io_out_scl_oe,
+  input         auto_io_out_sda_in,
+  output        auto_io_out_sda_oe
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  reg [7:0] prescaler_hi; // @[I2C.scala 125:25]
+  reg [7:0] prescaler_lo; // @[I2C.scala 125:25]
+  reg  control_coreEn; // @[I2C.scala 126:25]
+  reg  control_intEn; // @[I2C.scala 126:25]
+  reg [7:0] transmitData; // @[I2C.scala 127:25]
+  reg [7:0] receivedData; // @[I2C.scala 128:25]
+  reg  cmd_start; // @[I2C.scala 129:25]
+  reg  cmd_stop; // @[I2C.scala 129:25]
+  reg  cmd_read; // @[I2C.scala 129:25]
+  reg  cmd_write; // @[I2C.scala 129:25]
+  reg  cmd_ack; // @[I2C.scala 129:25]
+  reg  cmd_irqAck; // @[I2C.scala 129:25]
+  reg  status_receivedAck; // @[I2C.scala 130:25]
+  reg  status_busy; // @[I2C.scala 130:25]
+  reg  status_arbLost; // @[I2C.scala 130:25]
+  reg  status_transferInProgress; // @[I2C.scala 130:25]
+  reg  status_irqFlag; // @[I2C.scala 130:25]
+  reg [13:0] filterCnt; // @[I2C.scala 139:22]
+  wire  _T = ~control_coreEn; // @[I2C.scala 140:10]
+  wire  _T_2 = ~(|filterCnt); // @[I2C.scala 142:16]
+  wire [15:0] _filterCnt_T = {prescaler_hi,prescaler_lo}; // @[Cat.scala 31:58]
+  wire [13:0] _filterCnt_T_3 = filterCnt - 14'h1; // @[I2C.scala 145:28]
+  reg [2:0] fSCL; // @[I2C.scala 148:22]
+  reg [2:0] fSDA; // @[I2C.scala 149:22]
+  wire [3:0] _fSCL_T = {fSCL,auto_io_out_scl_in}; // @[Cat.scala 31:58]
+  wire [3:0] _fSDA_T = {fSDA,auto_io_out_sda_in}; // @[Cat.scala 31:58]
+  wire [3:0] _GEN_2 = _T_2 ? _fSCL_T : {{1'd0}, fSCL}; // @[I2C.scala 150:27 151:10 148:22]
+  wire [3:0] _GEN_3 = _T_2 ? _fSDA_T : {{1'd0}, fSDA}; // @[I2C.scala 150:27 152:10 149:22]
+  wire  _sSCL_x29_T_3 = fSCL[0] & fSCL[1]; // @[Misc.scala 166:48]
+  wire  _sSCL_x29_T_4 = fSCL[0] & fSCL[2]; // @[Misc.scala 166:48]
+  wire  _sSCL_x29_T_6 = fSCL[1] & fSCL[2]; // @[Misc.scala 166:48]
+  wire  sSCL_x29 = _sSCL_x29_T_3 | _sSCL_x29_T_4 | _sSCL_x29_T_6; // @[Misc.scala 167:22]
+  reg  sSCL; // @[I2C.scala 155:22]
+  wire  _sSDA_x32_T_3 = fSDA[0] & fSDA[1]; // @[Misc.scala 166:48]
+  wire  _sSDA_x32_T_4 = fSDA[0] & fSDA[2]; // @[Misc.scala 166:48]
+  wire  _sSDA_x32_T_6 = fSDA[1] & fSDA[2]; // @[Misc.scala 166:48]
+  wire  sSDA_x32 = _sSDA_x32_T_3 | _sSDA_x32_T_4 | _sSDA_x32_T_6; // @[Misc.scala 167:22]
+  reg  sSDA; // @[I2C.scala 156:22]
+  reg  dSCL; // @[I2C.scala 158:22]
+  reg  dSDA; // @[I2C.scala 159:22]
+  reg  dSCLOen; // @[I2C.scala 161:22]
+  wire  _startCond_x44_T = ~sSDA; // @[I2C.scala 165:46]
+  wire  startCond_x44 = ~sSDA & dSDA & sSCL; // @[I2C.scala 165:61]
+  reg  startCond; // @[I2C.scala 165:22]
+  wire  stopCond_x47 = sSDA & ~dSDA & sSCL; // @[I2C.scala 166:61]
+  reg  stopCond; // @[I2C.scala 166:22]
+  wire  _sclSync_T = ~sSCL; // @[I2C.scala 170:27]
+  reg  sclOen; // @[I2C.scala 193:23]
+  wire  bundleOut_0_scl_oe = ~sclOen; // @[I2C.scala 194:18]
+  wire  sclSync = dSCL & ~sSCL & bundleOut_0_scl_oe; // @[I2C.scala 170:33]
+  reg  slaveWait; // @[I2C.scala 174:22]
+  reg  clkEn; // @[I2C.scala 177:22]
+  reg [15:0] cnt; // @[I2C.scala 178:22]
+  wire  _T_9 = ~(|cnt) | _T | sclSync; // @[I2C.scala 181:39]
+  wire [15:0] _cnt_T_2 = cnt - 16'h1; // @[I2C.scala 189:18]
+  reg  sdaOen; // @[I2C.scala 196:23]
+  reg  sdaChk; // @[I2C.scala 199:23]
+  reg  transmitBit; // @[I2C.scala 201:24]
+  reg  receivedBit; // @[I2C.scala 202:24]
+  reg [3:0] bitCmd; // @[I2C.scala 207:24]
+  reg  bitCmdStop; // @[I2C.scala 208:24]
+  reg  bitCmdAck; // @[I2C.scala 212:24]
+  reg [4:0] bitState; // @[I2C.scala 219:24]
+  wire  arbLost_x83 = sdaChk & _startCond_x44_T & sdaOen | bitState != 5'h0 & stopCond & ~bitCmdStop; // @[I2C.scala 221:76]
+  reg  arbLost; // @[I2C.scala 221:24]
+  wire [4:0] _GEN_10 = 4'h8 == bitCmd ? 5'ha : bitState; // @[I2C.scala 219:24 237:27 241:43]
+  wire [4:0] _GEN_11 = 4'h4 == bitCmd ? 5'he : _GEN_10; // @[I2C.scala 237:27 240:43]
+  wire [4:0] _GEN_12 = 4'h2 == bitCmd ? 5'h6 : _GEN_11; // @[I2C.scala 237:27 239:43]
+  wire [4:0] _GEN_13 = 4'h1 == bitCmd ? 5'h1 : _GEN_12; // @[I2C.scala 237:27 238:43]
+  wire [4:0] _GEN_14 = 5'h11 == bitState ? 5'h0 : bitState; // @[I2C.scala 235:25 349:21 219:24]
+  wire  _GEN_16 = 5'h11 == bitState ? 1'h0 : sclOen; // @[I2C.scala 235:25 351:21 193:23]
+  wire  _GEN_17 = 5'h11 == bitState ? transmitBit : sdaOen; // @[I2C.scala 235:25 352:21 196:23]
+  wire  _GEN_18 = 5'h11 == bitState ? 1'h0 : sdaChk; // @[I2C.scala 235:25 353:21 199:23]
+  wire [4:0] _GEN_19 = 5'h10 == bitState ? 5'h11 : _GEN_14; // @[I2C.scala 235:25 343:21]
+  wire  _GEN_20 = 5'h10 == bitState | _GEN_16; // @[I2C.scala 235:25 344:21]
+  wire  _GEN_21 = 5'h10 == bitState ? transmitBit : _GEN_17; // @[I2C.scala 235:25 345:21]
+  wire  _GEN_22 = 5'h10 == bitState | _GEN_18; // @[I2C.scala 235:25 346:21]
+  wire  _GEN_23 = 5'h10 == bitState ? 1'h0 : 5'h11 == bitState; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_24 = 5'hf == bitState ? 5'h10 : _GEN_19; // @[I2C.scala 235:25 337:21]
+  wire  _GEN_25 = 5'hf == bitState | _GEN_20; // @[I2C.scala 235:25 338:21]
+  wire  _GEN_26 = 5'hf == bitState ? transmitBit : _GEN_21; // @[I2C.scala 235:25 339:21]
+  wire  _GEN_27 = 5'hf == bitState ? 1'h0 : _GEN_22; // @[I2C.scala 235:25 340:21]
+  wire  _GEN_28 = 5'hf == bitState ? 1'h0 : _GEN_23; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_29 = 5'he == bitState ? 5'hf : _GEN_24; // @[I2C.scala 235:25 331:21]
+  wire  _GEN_30 = 5'he == bitState ? 1'h0 : _GEN_25; // @[I2C.scala 235:25 332:21]
+  wire  _GEN_31 = 5'he == bitState ? transmitBit : _GEN_26; // @[I2C.scala 235:25 333:21]
+  wire  _GEN_32 = 5'he == bitState ? 1'h0 : _GEN_27; // @[I2C.scala 235:25 334:21]
+  wire  _GEN_33 = 5'he == bitState ? 1'h0 : _GEN_28; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_34 = 5'hd == bitState ? 5'h0 : _GEN_29; // @[I2C.scala 235:25 323:21]
+  wire  _GEN_35 = 5'hd == bitState | _GEN_33; // @[I2C.scala 235:25 324:21]
+  wire  _GEN_36 = 5'hd == bitState ? 1'h0 : _GEN_30; // @[I2C.scala 235:25 325:21]
+  wire  _GEN_37 = 5'hd == bitState | _GEN_31; // @[I2C.scala 235:25 326:21]
+  wire  _GEN_38 = 5'hd == bitState ? 1'h0 : _GEN_32; // @[I2C.scala 235:25 327:21]
+  wire [4:0] _GEN_39 = 5'hc == bitState ? 5'hd : _GEN_34; // @[I2C.scala 235:25 317:21]
+  wire  _GEN_40 = 5'hc == bitState | _GEN_36; // @[I2C.scala 235:25 318:21]
+  wire  _GEN_41 = 5'hc == bitState | _GEN_37; // @[I2C.scala 235:25 319:21]
+  wire  _GEN_42 = 5'hc == bitState ? 1'h0 : _GEN_38; // @[I2C.scala 235:25 320:21]
+  wire  _GEN_43 = 5'hc == bitState ? 1'h0 : _GEN_35; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_44 = 5'hb == bitState ? 5'hc : _GEN_39; // @[I2C.scala 235:25 311:21]
+  wire  _GEN_45 = 5'hb == bitState | _GEN_40; // @[I2C.scala 235:25 312:21]
+  wire  _GEN_46 = 5'hb == bitState | _GEN_41; // @[I2C.scala 235:25 313:21]
+  wire  _GEN_47 = 5'hb == bitState ? 1'h0 : _GEN_42; // @[I2C.scala 235:25 314:21]
+  wire  _GEN_48 = 5'hb == bitState ? 1'h0 : _GEN_43; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_49 = 5'ha == bitState ? 5'hb : _GEN_44; // @[I2C.scala 235:25 305:21]
+  wire  _GEN_50 = 5'ha == bitState ? 1'h0 : _GEN_45; // @[I2C.scala 235:25 306:21]
+  wire  _GEN_51 = 5'ha == bitState | _GEN_46; // @[I2C.scala 235:25 307:21]
+  wire  _GEN_52 = 5'ha == bitState ? 1'h0 : _GEN_47; // @[I2C.scala 235:25 308:21]
+  wire  _GEN_53 = 5'ha == bitState ? 1'h0 : _GEN_48; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_54 = 5'h9 == bitState ? 5'h0 : _GEN_49; // @[I2C.scala 235:25 297:21]
+  wire  _GEN_55 = 5'h9 == bitState | _GEN_53; // @[I2C.scala 235:25 298:21]
+  wire  _GEN_56 = 5'h9 == bitState | _GEN_50; // @[I2C.scala 235:25 299:21]
+  wire  _GEN_57 = 5'h9 == bitState | _GEN_51; // @[I2C.scala 235:25 300:21]
+  wire  _GEN_58 = 5'h9 == bitState ? 1'h0 : _GEN_52; // @[I2C.scala 235:25 301:21]
+  wire [4:0] _GEN_59 = 5'h8 == bitState ? 5'h9 : _GEN_54; // @[I2C.scala 235:25 291:21]
+  wire  _GEN_60 = 5'h8 == bitState | _GEN_56; // @[I2C.scala 235:25 292:21]
+  wire  _GEN_61 = 5'h8 == bitState ? 1'h0 : _GEN_57; // @[I2C.scala 235:25 293:21]
+  wire  _GEN_62 = 5'h8 == bitState ? 1'h0 : _GEN_58; // @[I2C.scala 235:25 294:21]
+  wire  _GEN_63 = 5'h8 == bitState ? 1'h0 : _GEN_55; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_64 = 5'h7 == bitState ? 5'h8 : _GEN_59; // @[I2C.scala 235:25 285:21]
+  wire  _GEN_65 = 5'h7 == bitState | _GEN_60; // @[I2C.scala 235:25 286:21]
+  wire  _GEN_66 = 5'h7 == bitState ? 1'h0 : _GEN_61; // @[I2C.scala 235:25 287:21]
+  wire  _GEN_67 = 5'h7 == bitState ? 1'h0 : _GEN_62; // @[I2C.scala 235:25 288:21]
+  wire  _GEN_68 = 5'h7 == bitState ? 1'h0 : _GEN_63; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_69 = 5'h6 == bitState ? 5'h7 : _GEN_64; // @[I2C.scala 235:25 279:21]
+  wire  _GEN_70 = 5'h6 == bitState ? 1'h0 : _GEN_65; // @[I2C.scala 235:25 280:21]
+  wire  _GEN_71 = 5'h6 == bitState ? 1'h0 : _GEN_66; // @[I2C.scala 235:25 281:21]
+  wire  _GEN_72 = 5'h6 == bitState ? 1'h0 : _GEN_67; // @[I2C.scala 235:25 282:21]
+  wire  _GEN_73 = 5'h6 == bitState ? 1'h0 : _GEN_68; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_74 = 5'h5 == bitState ? 5'h0 : _GEN_69; // @[I2C.scala 235:25 271:21]
+  wire  _GEN_75 = 5'h5 == bitState | _GEN_73; // @[I2C.scala 235:25 272:21]
+  wire  _GEN_76 = 5'h5 == bitState ? 1'h0 : _GEN_70; // @[I2C.scala 235:25 273:21]
+  wire  _GEN_77 = 5'h5 == bitState ? 1'h0 : _GEN_71; // @[I2C.scala 235:25 274:21]
+  wire  _GEN_78 = 5'h5 == bitState ? 1'h0 : _GEN_72; // @[I2C.scala 235:25 275:21]
+  wire [4:0] _GEN_79 = 5'h4 == bitState ? 5'h5 : _GEN_74; // @[I2C.scala 235:25 265:21]
+  wire  _GEN_80 = 5'h4 == bitState | _GEN_76; // @[I2C.scala 235:25 266:21]
+  wire  _GEN_81 = 5'h4 == bitState ? 1'h0 : _GEN_77; // @[I2C.scala 235:25 267:21]
+  wire  _GEN_82 = 5'h4 == bitState ? 1'h0 : _GEN_78; // @[I2C.scala 235:25 268:21]
+  wire  _GEN_83 = 5'h4 == bitState ? 1'h0 : _GEN_75; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_84 = 5'h3 == bitState ? 5'h4 : _GEN_79; // @[I2C.scala 235:25 259:21]
+  wire  _GEN_85 = 5'h3 == bitState | _GEN_80; // @[I2C.scala 235:25 260:21]
+  wire  _GEN_86 = 5'h3 == bitState ? 1'h0 : _GEN_81; // @[I2C.scala 235:25 261:21]
+  wire  _GEN_87 = 5'h3 == bitState ? 1'h0 : _GEN_82; // @[I2C.scala 235:25 262:21]
+  wire  _GEN_88 = 5'h3 == bitState ? 1'h0 : _GEN_83; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_89 = 5'h2 == bitState ? 5'h3 : _GEN_84; // @[I2C.scala 235:25 253:21]
+  wire  _GEN_90 = 5'h2 == bitState | _GEN_85; // @[I2C.scala 235:25 254:21]
+  wire  _GEN_91 = 5'h2 == bitState | _GEN_86; // @[I2C.scala 235:25 255:21]
+  wire  _GEN_92 = 5'h2 == bitState ? 1'h0 : _GEN_87; // @[I2C.scala 235:25 256:21]
+  wire  _GEN_93 = 5'h2 == bitState ? 1'h0 : _GEN_88; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_94 = 5'h1 == bitState ? 5'h2 : _GEN_89; // @[I2C.scala 235:25 247:21]
+  wire  _GEN_95 = 5'h1 == bitState ? sclOen : _GEN_90; // @[I2C.scala 235:25 248:21]
+  wire  _GEN_96 = 5'h1 == bitState | _GEN_91; // @[I2C.scala 235:25 249:21]
+  wire  _GEN_97 = 5'h1 == bitState ? 1'h0 : _GEN_92; // @[I2C.scala 235:25 250:21]
+  wire  _GEN_98 = 5'h1 == bitState ? 1'h0 : _GEN_93; // @[I2C.scala 232:15 235:25]
+  wire  _GEN_101 = 5'h0 == bitState ? sclOen : _GEN_95; // @[I2C.scala 193:23 235:25]
+  wire  _GEN_102 = 5'h0 == bitState ? sdaOen : _GEN_96; // @[I2C.scala 196:23 235:25]
+  wire  _GEN_103 = 5'h0 == bitState ? 1'h0 : _GEN_98; // @[I2C.scala 232:15 235:25]
+  wire  _GEN_106 = clkEn ? _GEN_101 : sclOen; // @[I2C.scala 234:18 193:23]
+  wire  _GEN_107 = clkEn ? _GEN_102 : sdaOen; // @[I2C.scala 234:18 196:23]
+  wire  _GEN_108 = clkEn & _GEN_103; // @[I2C.scala 232:15 234:18]
+  wire  _GEN_111 = arbLost | _GEN_106; // @[I2C.scala 224:18 227:15]
+  wire  _GEN_112 = arbLost | _GEN_107; // @[I2C.scala 224:18 228:15]
+  reg  load; // @[I2C.scala 361:24]
+  reg  shift; // @[I2C.scala 362:24]
+  reg  cmdAck; // @[I2C.scala 363:24]
+  reg  receivedAck; // @[I2C.scala 364:24]
+  wire  _go_T = cmd_read | cmd_write; // @[I2C.scala 365:31]
+  wire  go = (cmd_read | cmd_write | cmd_stop) & ~cmdAck; // @[I2C.scala 365:55]
+  reg [2:0] bitCnt; // @[I2C.scala 367:24]
+  wire [2:0] _bitCnt_T_1 = bitCnt - 3'h1; // @[I2C.scala 372:22]
+  wire  bitCntDone = ~(|bitCnt); // @[I2C.scala 374:21]
+  wire [8:0] _receivedData_T = {receivedData,receivedBit}; // @[Cat.scala 31:58]
+  wire [8:0] _GEN_116 = shift ? _receivedData_T : {{1'd0}, receivedData}; // @[I2C.scala 380:21 381:18 128:25]
+  wire [8:0] _GEN_117 = load ? {{1'd0}, transmitData} : _GEN_116; // @[I2C.scala 377:15 378:18]
+  reg [2:0] byteState; // @[I2C.scala 385:24]
+  wire [2:0] _GEN_118 = cmd_write ? 3'h3 : 3'h5; // @[I2C.scala 413:33 414:23 418:23]
+  wire [2:0] _GEN_119 = cmd_write ? 3'h4 : 3'h2; // @[I2C.scala 413:33 415:23 419:23]
+  wire [2:0] _GEN_120 = cmd_read ? 3'h2 : _GEN_118; // @[I2C.scala 409:32 410:23]
+  wire [3:0] _GEN_121 = cmd_read ? 4'h8 : {{1'd0}, _GEN_119}; // @[I2C.scala 409:32 411:23]
+  wire [2:0] _GEN_122 = cmd_start ? 3'h1 : _GEN_120; // @[I2C.scala 405:28 406:23]
+  wire [3:0] _GEN_123 = cmd_start ? 4'h1 : _GEN_121; // @[I2C.scala 405:28 407:23]
+  wire [2:0] _GEN_127 = cmd_read ? 3'h2 : 3'h3; // @[I2C.scala 427:27 428:23 432:23]
+  wire [3:0] _GEN_128 = cmd_read ? 4'h8 : 4'h4; // @[I2C.scala 427:27 429:23 433:23]
+  wire [2:0] _GEN_129 = bitCmdAck ? _GEN_127 : byteState; // @[I2C.scala 385:24 426:26]
+  wire [3:0] _GEN_130 = bitCmdAck ? _GEN_128 : bitCmd; // @[I2C.scala 207:24 426:26]
+  wire [2:0] _GEN_132 = bitCntDone ? 3'h4 : 3'h3; // @[I2C.scala 441:29 442:23 446:23]
+  wire [3:0] _GEN_133 = bitCntDone ? 4'h8 : 4'h4; // @[I2C.scala 441:29 443:23 447:23]
+  wire  _GEN_134 = bitCntDone ? 1'h0 : 1'h1; // @[I2C.scala 398:17 441:29 448:23]
+  wire [2:0] _GEN_135 = bitCmdAck ? _GEN_132 : byteState; // @[I2C.scala 385:24 440:26]
+  wire [3:0] _GEN_136 = bitCmdAck ? _GEN_133 : bitCmd; // @[I2C.scala 207:24 440:26]
+  wire  _GEN_137 = bitCmdAck & _GEN_134; // @[I2C.scala 398:17 440:26]
+  wire [2:0] _GEN_138 = bitCntDone ? 3'h4 : 3'h2; // @[I2C.scala 454:29 455:23 459:23]
+  wire [3:0] _GEN_139 = bitCntDone ? 4'h4 : 4'h8; // @[I2C.scala 454:29 456:23 460:23]
+  wire [2:0] _GEN_140 = bitCmdAck ? _GEN_138 : byteState; // @[I2C.scala 385:24 453:26]
+  wire [3:0] _GEN_141 = bitCmdAck ? _GEN_139 : bitCmd; // @[I2C.scala 207:24 453:26]
+  wire  _GEN_142 = bitCmdAck ? cmd_ack : receivedData[7]; // @[I2C.scala 397:17 453:26 464:23]
+  wire [2:0] _GEN_143 = cmd_stop ? 3'h5 : 3'h0; // @[I2C.scala 469:27 470:23 474:23]
+  wire [1:0] _GEN_144 = cmd_stop ? 2'h2 : 2'h0; // @[I2C.scala 469:27 471:23 475:23]
+  wire  _GEN_145 = cmd_stop ? 1'h0 : 1'h1; // @[I2C.scala 400:17 469:27 478:23]
+  wire [2:0] _GEN_146 = bitCmdAck ? _GEN_143 : byteState; // @[I2C.scala 385:24 468:26]
+  wire [3:0] _GEN_147 = bitCmdAck ? {{2'd0}, _GEN_144} : bitCmd; // @[I2C.scala 207:24 468:26]
+  wire  _GEN_148 = bitCmdAck & _GEN_145; // @[I2C.scala 400:17 468:26]
+  wire  _GEN_149 = bitCmdAck ? receivedBit : receivedAck; // @[I2C.scala 468:26 482:23 364:24]
+  wire  _GEN_150 = bitCmdAck | cmd_ack; // @[I2C.scala 468:26 484:23 487:23]
+  wire [2:0] _GEN_151 = bitCmdAck ? 3'h0 : byteState; // @[I2C.scala 491:26 492:21 385:24]
+  wire [3:0] _GEN_152 = bitCmdAck ? 4'h0 : bitCmd; // @[I2C.scala 491:26 493:21 207:24]
+  wire [2:0] _GEN_153 = 3'h5 == byteState ? _GEN_151 : byteState; // @[I2C.scala 385:24 402:24]
+  wire [3:0] _GEN_154 = 3'h5 == byteState ? _GEN_152 : bitCmd; // @[I2C.scala 207:24 402:24]
+  wire  _GEN_155 = 3'h5 == byteState & bitCmdAck; // @[I2C.scala 400:17 402:24]
+  wire [2:0] _GEN_156 = 3'h4 == byteState ? _GEN_146 : _GEN_153; // @[I2C.scala 402:24]
+  wire [3:0] _GEN_157 = 3'h4 == byteState ? _GEN_147 : _GEN_154; // @[I2C.scala 402:24]
+  wire  _GEN_158 = 3'h4 == byteState ? _GEN_148 : _GEN_155; // @[I2C.scala 402:24]
+  wire  _GEN_159 = 3'h4 == byteState ? _GEN_149 : receivedAck; // @[I2C.scala 364:24 402:24]
+  wire  _GEN_160 = 3'h4 == byteState ? _GEN_150 : receivedData[7]; // @[I2C.scala 397:17 402:24]
+  wire [2:0] _GEN_161 = 3'h2 == byteState ? _GEN_140 : _GEN_156; // @[I2C.scala 402:24]
+  wire [3:0] _GEN_162 = 3'h2 == byteState ? _GEN_141 : _GEN_157; // @[I2C.scala 402:24]
+  wire  _GEN_163 = 3'h2 == byteState & bitCmdAck; // @[I2C.scala 398:17 402:24]
+  wire  _GEN_164 = 3'h2 == byteState ? _GEN_142 : _GEN_160; // @[I2C.scala 402:24]
+  wire  _GEN_165 = 3'h2 == byteState ? 1'h0 : _GEN_158; // @[I2C.scala 400:17 402:24]
+  wire  _GEN_166 = 3'h2 == byteState ? receivedAck : _GEN_159; // @[I2C.scala 364:24 402:24]
+  wire [2:0] _GEN_167 = 3'h3 == byteState ? _GEN_135 : _GEN_161; // @[I2C.scala 402:24]
+  wire [3:0] _GEN_168 = 3'h3 == byteState ? _GEN_136 : _GEN_162; // @[I2C.scala 402:24]
+  wire  _GEN_169 = 3'h3 == byteState ? _GEN_137 : _GEN_163; // @[I2C.scala 402:24]
+  wire  _GEN_170 = 3'h3 == byteState ? receivedData[7] : _GEN_164; // @[I2C.scala 397:17 402:24]
+  wire  _GEN_171 = 3'h3 == byteState ? 1'h0 : _GEN_165; // @[I2C.scala 400:17 402:24]
+  wire  _GEN_172 = 3'h3 == byteState ? receivedAck : _GEN_166; // @[I2C.scala 364:24 402:24]
+  wire  _GEN_175 = 3'h1 == byteState & bitCmdAck; // @[I2C.scala 399:17 402:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [2:0] out_iindex = {in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [9:0] out_findex = in_bits_index & 10'h3f8; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_8 = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_backSel_T = 8'h1 << out_iindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_4 = _out_backSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_6 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_backSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_backMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_backMask = {_out_backMask_T_11,_out_backMask_T_9,_out_backMask_T_7,_out_backMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_womask_6 = &out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_6 = out_woready_6 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _nextCmd_T = {cmd_start,cmd_stop,cmd_read,cmd_write,cmd_ack,2'h0,cmd_irqAck}; // @[I2C.scala 508:18]
+  wire [7:0] _nextCmd_T_1 = _nextCmd_T & 8'hfe; // @[I2C.scala 508:25]
+  wire [7:0] nextCmd = out_f_woready_6 ? bundleIn_0_a_bits_data[7:0] : _nextCmd_T_1; // @[I2C.scala 508:11 564:77 566:74]
+  wire  _T_40 = cmdAck | arbLost; // @[I2C.scala 511:16]
+  wire  _GEN_198 = startCond | status_busy; // @[I2C.scala 130:25 522:25 523:29]
+  wire  _GEN_200 = cmd_start ? 1'h0 : status_arbLost; // @[I2C.scala 130:25 529:25 530:29]
+  wire  _GEN_201 = arbLost | _GEN_200; // @[I2C.scala 526:18 527:29]
+  reg  statusReadReady; // @[I2C.scala 536:28]
+  wire  _GEN_202 = ~statusReadReady | statusReadReady; // @[I2C.scala 540:32 541:21 536:28]
+  wire  _GEN_203 = _T_40 ? 1'h0 : _GEN_202; // @[I2C.scala 537:28 538:21]
+  wire  out_rimask = |out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_rofireMux_out_4 = statusReadReady | ~out_rimask; // @[RegisterRouter.scala 83:24]
+  wire  _out_rofireMux_T_21 = out_rofireMux_out_4 | ~(out_findex == 10'h0); // @[RegisterRouter.scala 83:24]
+  wire  _GEN_232 = 3'h4 == out_iindex ? _out_rofireMux_T_21 : 1'h1; // @[MuxLiteral.scala 48:{10,10}]
+  wire  out_rofireMux = 3'h7 == out_iindex | (3'h6 == out_iindex | (3'h5 == out_iindex | _GEN_232)); // @[MuxLiteral.scala 48:{10,10}]
+  wire  out_oready = in_bits_read ? out_rofireMux : 1'h1; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_0 = _out_backSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready = out_woready_0 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_1 = _out_backSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_1 = out_woready_1 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_backSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_2 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_3 = &out_backMask[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_3 = out_woready_2 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_backMask[7]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_4 = out_woready_2 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [7:0] out_prepend_1 = {control_coreEn,control_intEn,6'h0}; // @[Cat.scala 31:58]
+  wire  out_frontSel_3 = _out_backSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_5 = out_woready_5 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire [7:0] out_f_data = {status_receivedAck,status_busy,status_arbLost,3'h0,status_transferInProgress,status_irqFlag}; // @[I2C.scala 561:89]
+  wire  _GEN_210 = out_f_woready_6 ? 1'h0 : _GEN_203; // @[I2C.scala 564:77 565:82]
+  wire  _GEN_245 = 3'h1 == out_iindex ? _out_T_8 : _out_T_8; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_246 = 3'h2 == out_iindex ? _out_T_8 : _GEN_245; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_247 = 3'h3 == out_iindex ? _out_T_8 : _GEN_246; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_248 = 3'h4 == out_iindex ? _out_T_8 : _GEN_247; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_251 = 3'h7 == out_iindex | (3'h6 == out_iindex | (3'h5 == out_iindex | _GEN_248)); // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_253 = 3'h1 == out_iindex ? prescaler_hi : prescaler_lo; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_254 = 3'h2 == out_iindex ? out_prepend_1 : _GEN_253; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_255 = 3'h3 == out_iindex ? receivedData : _GEN_254; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_256 = 3'h4 == out_iindex ? out_f_data : _GEN_255; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_257 = 3'h5 == out_iindex ? 8'h0 : _GEN_256; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_258 = 3'h6 == out_iindex ? 8'h0 : _GEN_257; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_259 = 3'h7 == out_iindex ? 8'h0 : _GEN_258; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _out_out_bits_data_T_4 = _GEN_251 ? _GEN_259 : 8'h0; // @[RegisterRouter.scala 83:24]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_70 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_scl_oe = ~sclOen; // @[I2C.scala 194:18]
+  assign auto_io_out_sda_oe = ~sdaOen; // @[I2C.scala 197:18]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = bundleIn_0_d_ready & out_oready; // @[RegisterRouter.scala 83:24]
+  assign buffer_auto_out_d_valid = bundleIn_0_a_valid & out_oready; // @[RegisterRouter.scala 83:24]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = {{24'd0}, _out_out_bits_data_T_4}; // @[RegisterRouter.scala 83:{24,24}]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = status_irqFlag & control_intEn; // @[I2C.scala 578:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleIn_0_d_ready & out_oready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = bundleIn_0_a_valid & out_oready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  always @(posedge clock) begin
+    if (reset) begin // @[I2C.scala 125:25]
+      prescaler_hi <= 8'hff; // @[I2C.scala 125:25]
+    end else if (out_f_woready_1) begin // @[RegField.scala 74:88]
+      prescaler_hi <= bundleIn_0_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 125:25]
+      prescaler_lo <= 8'hff; // @[I2C.scala 125:25]
+    end else if (out_f_woready) begin // @[RegField.scala 74:88]
+      prescaler_lo <= bundleIn_0_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 126:25]
+      control_coreEn <= 1'h0; // @[I2C.scala 126:25]
+    end else if (out_f_woready_4) begin // @[RegField.scala 74:88]
+      control_coreEn <= bundleIn_0_a_bits_data[7]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 126:25]
+      control_intEn <= 1'h0; // @[I2C.scala 126:25]
+    end else if (out_f_woready_3) begin // @[RegField.scala 74:88]
+      control_intEn <= bundleIn_0_a_bits_data[6]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 127:25]
+      transmitData <= 8'h0; // @[I2C.scala 127:25]
+    end else if (out_f_woready_5) begin // @[RegField.scala 74:88]
+      transmitData <= bundleIn_0_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 128:25]
+      receivedData <= 8'h0; // @[I2C.scala 128:25]
+    end else begin
+      receivedData <= _GEN_117[7:0];
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_start <= 1'h0; // @[I2C.scala 129:25]
+    end else if (cmdAck | arbLost) begin // @[I2C.scala 511:28]
+      cmd_start <= 1'h0; // @[I2C.scala 512:15]
+    end else begin
+      cmd_start <= nextCmd[7]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_stop <= 1'h0; // @[I2C.scala 129:25]
+    end else if (cmdAck | arbLost) begin // @[I2C.scala 511:28]
+      cmd_stop <= 1'h0; // @[I2C.scala 513:15]
+    end else begin
+      cmd_stop <= nextCmd[6]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_read <= 1'h0; // @[I2C.scala 129:25]
+    end else if (cmdAck | arbLost) begin // @[I2C.scala 511:28]
+      cmd_read <= 1'h0; // @[I2C.scala 514:15]
+    end else begin
+      cmd_read <= nextCmd[5]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_write <= 1'h0; // @[I2C.scala 129:25]
+    end else if (cmdAck | arbLost) begin // @[I2C.scala 511:28]
+      cmd_write <= 1'h0; // @[I2C.scala 515:15]
+    end else begin
+      cmd_write <= nextCmd[4]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_ack <= 1'h0; // @[I2C.scala 129:25]
+    end else begin
+      cmd_ack <= nextCmd[3]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_irqAck <= 1'h0; // @[I2C.scala 129:25]
+    end else begin
+      cmd_irqAck <= nextCmd[0]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_receivedAck <= 1'h0; // @[I2C.scala 130:25]
+    end else begin
+      status_receivedAck <= receivedAck; // @[I2C.scala 518:22]
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_busy <= 1'h0; // @[I2C.scala 130:25]
+    end else if (stopCond) begin // @[I2C.scala 519:19]
+      status_busy <= 1'h0; // @[I2C.scala 520:29]
+    end else begin
+      status_busy <= _GEN_198;
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_arbLost <= 1'h0; // @[I2C.scala 130:25]
+    end else begin
+      status_arbLost <= _GEN_201;
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_transferInProgress <= 1'h0; // @[I2C.scala 130:25]
+    end else begin
+      status_transferInProgress <= _go_T; // @[I2C.scala 532:29]
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_irqFlag <= 1'h0; // @[I2C.scala 130:25]
+    end else begin
+      status_irqFlag <= (_T_40 | status_irqFlag) & ~cmd_irqAck; // @[I2C.scala 533:29]
+    end
+    if (reset) begin // @[I2C.scala 139:22]
+      filterCnt <= 14'h0; // @[I2C.scala 139:22]
+    end else if (~control_coreEn) begin // @[I2C.scala 140:28]
+      filterCnt <= 14'h0; // @[I2C.scala 141:15]
+    end else if (~(|filterCnt)) begin // @[I2C.scala 142:34]
+      filterCnt <= _filterCnt_T[15:2]; // @[I2C.scala 143:15]
+    end else begin
+      filterCnt <= _filterCnt_T_3; // @[I2C.scala 145:15]
+    end
+    if (reset) begin // @[I2C.scala 148:22]
+      fSCL <= 3'h7; // @[I2C.scala 148:22]
+    end else begin
+      fSCL <= _GEN_2[2:0];
+    end
+    if (reset) begin // @[I2C.scala 149:22]
+      fSDA <= 3'h7; // @[I2C.scala 149:22]
+    end else begin
+      fSDA <= _GEN_3[2:0];
+    end
+    sSCL <= reset | sSCL_x29; // @[I2C.scala 155:{22,22,22}]
+    sSDA <= reset | sSDA_x32; // @[I2C.scala 156:{22,22,22}]
+    dSCL <= reset | sSCL; // @[I2C.scala 158:{22,22,22}]
+    dSDA <= reset | sSDA; // @[I2C.scala 159:{22,22,22}]
+    dSCLOen <= ~sclOen; // @[I2C.scala 194:18]
+    if (reset) begin // @[I2C.scala 165:22]
+      startCond <= 1'h0; // @[I2C.scala 165:22]
+    end else begin
+      startCond <= startCond_x44; // @[I2C.scala 165:22]
+    end
+    if (reset) begin // @[I2C.scala 166:22]
+      stopCond <= 1'h0; // @[I2C.scala 166:22]
+    end else begin
+      stopCond <= stopCond_x47; // @[I2C.scala 166:22]
+    end
+    sclOen <= reset | _GEN_111; // @[I2C.scala 193:{23,23}]
+    if (reset) begin // @[I2C.scala 174:22]
+      slaveWait <= 1'h0; // @[I2C.scala 174:22]
+    end else begin
+      slaveWait <= bundleOut_0_scl_oe & ~dSCLOen & _sclSync_T | slaveWait & _sclSync_T; // @[I2C.scala 175:13]
+    end
+    clkEn <= reset | _T_9; // @[I2C.scala 177:{22,22}]
+    if (reset) begin // @[I2C.scala 178:22]
+      cnt <= 16'h0; // @[I2C.scala 178:22]
+    end else if (~(|cnt) | _T | sclSync) begin // @[I2C.scala 181:52]
+      cnt <= _filterCnt_T; // @[I2C.scala 182:11]
+    end else if (!(slaveWait)) begin // @[I2C.scala 185:25]
+      cnt <= _cnt_T_2; // @[I2C.scala 189:11]
+    end
+    sdaOen <= reset | _GEN_112; // @[I2C.scala 196:{23,23}]
+    if (reset) begin // @[I2C.scala 199:23]
+      sdaChk <= 1'h0; // @[I2C.scala 199:23]
+    end else if (arbLost) begin // @[I2C.scala 224:18]
+      sdaChk <= 1'h0; // @[I2C.scala 229:15]
+    end else if (clkEn) begin // @[I2C.scala 234:18]
+      if (5'h0 == bitState) begin // @[I2C.scala 235:25]
+        sdaChk <= 1'h0; // @[I2C.scala 243:18]
+      end else begin
+        sdaChk <= _GEN_97;
+      end
+    end
+    if (reset) begin // @[I2C.scala 201:24]
+      transmitBit <= 1'h0; // @[I2C.scala 201:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      transmitBit <= 1'h0; // @[I2C.scala 389:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      transmitBit <= receivedData[7]; // @[I2C.scala 397:17]
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      transmitBit <= receivedData[7]; // @[I2C.scala 397:17]
+    end else begin
+      transmitBit <= _GEN_170;
+    end
+    if (sSCL & ~dSCL) begin // @[I2C.scala 203:24]
+      receivedBit <= sSDA; // @[I2C.scala 204:17]
+    end
+    if (reset) begin // @[I2C.scala 207:24]
+      bitCmd <= 4'h0; // @[I2C.scala 207:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      bitCmd <= 4'h0; // @[I2C.scala 388:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      if (go) begin // @[I2C.scala 404:19]
+        bitCmd <= _GEN_123;
+      end
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      bitCmd <= _GEN_130;
+    end else begin
+      bitCmd <= _GEN_168;
+    end
+    if (reset) begin // @[I2C.scala 208:24]
+      bitCmdStop <= 1'h0; // @[I2C.scala 208:24]
+    end else if (clkEn) begin // @[I2C.scala 209:16]
+      bitCmdStop <= bitCmd == 4'h2; // @[I2C.scala 210:16]
+    end
+    if (reset) begin // @[I2C.scala 212:24]
+      bitCmdAck <= 1'h0; // @[I2C.scala 212:24]
+    end else if (arbLost) begin // @[I2C.scala 224:18]
+      bitCmdAck <= 1'h0; // @[I2C.scala 226:15]
+    end else begin
+      bitCmdAck <= _GEN_108;
+    end
+    if (reset) begin // @[I2C.scala 219:24]
+      bitState <= 5'h0; // @[I2C.scala 219:24]
+    end else if (arbLost) begin // @[I2C.scala 224:18]
+      bitState <= 5'h0; // @[I2C.scala 225:15]
+    end else if (clkEn) begin // @[I2C.scala 234:18]
+      if (5'h0 == bitState) begin // @[I2C.scala 235:25]
+        bitState <= _GEN_13;
+      end else begin
+        bitState <= _GEN_94;
+      end
+    end
+    if (reset) begin // @[I2C.scala 221:24]
+      arbLost <= 1'h0; // @[I2C.scala 221:24]
+    end else begin
+      arbLost <= arbLost_x83; // @[I2C.scala 221:24]
+    end
+    if (reset) begin // @[I2C.scala 361:24]
+      load <= 1'h0; // @[I2C.scala 361:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      load <= 1'h0; // @[I2C.scala 391:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      load <= go;
+    end else begin
+      load <= _GEN_175;
+    end
+    if (reset) begin // @[I2C.scala 362:24]
+      shift <= 1'h0; // @[I2C.scala 362:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      shift <= 1'h0; // @[I2C.scala 390:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      shift <= 1'h0; // @[I2C.scala 398:17]
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      shift <= 1'h0; // @[I2C.scala 398:17]
+    end else begin
+      shift <= _GEN_169;
+    end
+    if (reset) begin // @[I2C.scala 363:24]
+      cmdAck <= 1'h0; // @[I2C.scala 363:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      cmdAck <= 1'h0; // @[I2C.scala 392:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      cmdAck <= 1'h0; // @[I2C.scala 400:17]
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      cmdAck <= 1'h0; // @[I2C.scala 400:17]
+    end else begin
+      cmdAck <= _GEN_171;
+    end
+    if (reset) begin // @[I2C.scala 364:24]
+      receivedAck <= 1'h0; // @[I2C.scala 364:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      receivedAck <= 1'h0; // @[I2C.scala 394:17]
+    end else if (!(3'h0 == byteState)) begin // @[I2C.scala 402:24]
+      if (!(3'h1 == byteState)) begin // @[I2C.scala 402:24]
+        receivedAck <= _GEN_172;
+      end
+    end
+    if (reset) begin // @[I2C.scala 367:24]
+      bitCnt <= 3'h0; // @[I2C.scala 367:24]
+    end else if (load) begin // @[I2C.scala 368:15]
+      bitCnt <= 3'h7; // @[I2C.scala 369:12]
+    end else if (shift) begin // @[I2C.scala 371:21]
+      bitCnt <= _bitCnt_T_1; // @[I2C.scala 372:12]
+    end
+    if (reset) begin // @[I2C.scala 385:24]
+      byteState <= 3'h0; // @[I2C.scala 385:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      byteState <= 3'h0; // @[I2C.scala 393:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      if (go) begin // @[I2C.scala 404:19]
+        byteState <= _GEN_122;
+      end
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      byteState <= _GEN_129;
+    end else begin
+      byteState <= _GEN_167;
+    end
+    statusReadReady <= reset | _GEN_210; // @[I2C.scala 536:{28,28}]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  prescaler_hi = _RAND_0[7:0];
+  _RAND_1 = {1{`RANDOM}};
+  prescaler_lo = _RAND_1[7:0];
+  _RAND_2 = {1{`RANDOM}};
+  control_coreEn = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  control_intEn = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  transmitData = _RAND_4[7:0];
+  _RAND_5 = {1{`RANDOM}};
+  receivedData = _RAND_5[7:0];
+  _RAND_6 = {1{`RANDOM}};
+  cmd_start = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  cmd_stop = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  cmd_read = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  cmd_write = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  cmd_ack = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  cmd_irqAck = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  status_receivedAck = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  status_busy = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  status_arbLost = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  status_transferInProgress = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  status_irqFlag = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  filterCnt = _RAND_17[13:0];
+  _RAND_18 = {1{`RANDOM}};
+  fSCL = _RAND_18[2:0];
+  _RAND_19 = {1{`RANDOM}};
+  fSDA = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  sSCL = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  sSDA = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  dSCL = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  dSDA = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  dSCLOen = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  startCond = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  stopCond = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  sclOen = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  slaveWait = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  clkEn = _RAND_29[0:0];
+  _RAND_30 = {1{`RANDOM}};
+  cnt = _RAND_30[15:0];
+  _RAND_31 = {1{`RANDOM}};
+  sdaOen = _RAND_31[0:0];
+  _RAND_32 = {1{`RANDOM}};
+  sdaChk = _RAND_32[0:0];
+  _RAND_33 = {1{`RANDOM}};
+  transmitBit = _RAND_33[0:0];
+  _RAND_34 = {1{`RANDOM}};
+  receivedBit = _RAND_34[0:0];
+  _RAND_35 = {1{`RANDOM}};
+  bitCmd = _RAND_35[3:0];
+  _RAND_36 = {1{`RANDOM}};
+  bitCmdStop = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  bitCmdAck = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  bitState = _RAND_38[4:0];
+  _RAND_39 = {1{`RANDOM}};
+  arbLost = _RAND_39[0:0];
+  _RAND_40 = {1{`RANDOM}};
+  load = _RAND_40[0:0];
+  _RAND_41 = {1{`RANDOM}};
+  shift = _RAND_41[0:0];
+  _RAND_42 = {1{`RANDOM}};
+  cmdAck = _RAND_42[0:0];
+  _RAND_43 = {1{`RANDOM}};
+  receivedAck = _RAND_43[0:0];
+  _RAND_44 = {1{`RANDOM}};
+  bitCnt = _RAND_44[2:0];
+  _RAND_45 = {1{`RANDOM}};
+  byteState = _RAND_45[2:0];
+  _RAND_46 = {1{`RANDOM}};
+  statusReadReady = _RAND_46[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_13(
+  output        auto_i2c_0_int_xing_out_sync_0,
+  output        auto_i2c_0_control_xing_in_a_ready,
+  input         auto_i2c_0_control_xing_in_a_valid,
+  input  [2:0]  auto_i2c_0_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_i2c_0_control_xing_in_a_bits_param,
+  input  [1:0]  auto_i2c_0_control_xing_in_a_bits_size,
+  input  [6:0]  auto_i2c_0_control_xing_in_a_bits_source,
+  input  [28:0] auto_i2c_0_control_xing_in_a_bits_address,
+  input  [3:0]  auto_i2c_0_control_xing_in_a_bits_mask,
+  input  [31:0] auto_i2c_0_control_xing_in_a_bits_data,
+  input         auto_i2c_0_control_xing_in_a_bits_corrupt,
+  input         auto_i2c_0_control_xing_in_d_ready,
+  output        auto_i2c_0_control_xing_in_d_valid,
+  output [2:0]  auto_i2c_0_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_i2c_0_control_xing_in_d_bits_size,
+  output [6:0]  auto_i2c_0_control_xing_in_d_bits_source,
+  output [31:0] auto_i2c_0_control_xing_in_d_bits_data,
+  input         auto_i2c_0_io_out_scl_in,
+  output        auto_i2c_0_io_out_scl_oe,
+  input         auto_i2c_0_io_out_sda_in,
+  output        auto_i2c_0_io_out_sda_oe,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  i2c_0_clock; // @[I2C.scala 597:49]
+  wire  i2c_0_reset; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_int_xing_out_sync_0; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_control_xing_in_a_ready; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_control_xing_in_a_valid; // @[I2C.scala 597:49]
+  wire [2:0] i2c_0_auto_control_xing_in_a_bits_opcode; // @[I2C.scala 597:49]
+  wire [2:0] i2c_0_auto_control_xing_in_a_bits_param; // @[I2C.scala 597:49]
+  wire [1:0] i2c_0_auto_control_xing_in_a_bits_size; // @[I2C.scala 597:49]
+  wire [6:0] i2c_0_auto_control_xing_in_a_bits_source; // @[I2C.scala 597:49]
+  wire [28:0] i2c_0_auto_control_xing_in_a_bits_address; // @[I2C.scala 597:49]
+  wire [3:0] i2c_0_auto_control_xing_in_a_bits_mask; // @[I2C.scala 597:49]
+  wire [31:0] i2c_0_auto_control_xing_in_a_bits_data; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_control_xing_in_a_bits_corrupt; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_control_xing_in_d_ready; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_control_xing_in_d_valid; // @[I2C.scala 597:49]
+  wire [2:0] i2c_0_auto_control_xing_in_d_bits_opcode; // @[I2C.scala 597:49]
+  wire [1:0] i2c_0_auto_control_xing_in_d_bits_size; // @[I2C.scala 597:49]
+  wire [6:0] i2c_0_auto_control_xing_in_d_bits_source; // @[I2C.scala 597:49]
+  wire [31:0] i2c_0_auto_control_xing_in_d_bits_data; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_io_out_scl_in; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_io_out_scl_oe; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_io_out_sda_in; // @[I2C.scala 597:49]
+  wire  i2c_0_auto_io_out_sda_oe; // @[I2C.scala 597:49]
+  TLI2C i2c_0 ( // @[I2C.scala 597:49]
+    .clock(i2c_0_clock),
+    .reset(i2c_0_reset),
+    .auto_int_xing_out_sync_0(i2c_0_auto_int_xing_out_sync_0),
+    .auto_control_xing_in_a_ready(i2c_0_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(i2c_0_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(i2c_0_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(i2c_0_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(i2c_0_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(i2c_0_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(i2c_0_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(i2c_0_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(i2c_0_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(i2c_0_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(i2c_0_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(i2c_0_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(i2c_0_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(i2c_0_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(i2c_0_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(i2c_0_auto_control_xing_in_d_bits_data),
+    .auto_io_out_scl_in(i2c_0_auto_io_out_scl_in),
+    .auto_io_out_scl_oe(i2c_0_auto_io_out_scl_oe),
+    .auto_io_out_sda_in(i2c_0_auto_io_out_sda_in),
+    .auto_io_out_sda_oe(i2c_0_auto_io_out_sda_oe)
+  );
+  assign auto_i2c_0_int_xing_out_sync_0 = i2c_0_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_i2c_0_control_xing_in_a_ready = i2c_0_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_i2c_0_control_xing_in_d_valid = i2c_0_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_i2c_0_control_xing_in_d_bits_opcode = i2c_0_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_i2c_0_control_xing_in_d_bits_size = i2c_0_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_i2c_0_control_xing_in_d_bits_source = i2c_0_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_i2c_0_control_xing_in_d_bits_data = i2c_0_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_i2c_0_io_out_scl_oe = i2c_0_auto_io_out_scl_oe; // @[LazyModule.scala 311:12]
+  assign auto_i2c_0_io_out_sda_oe = i2c_0_auto_io_out_sda_oe; // @[LazyModule.scala 311:12]
+  assign i2c_0_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign i2c_0_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_valid = auto_i2c_0_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_bits_opcode = auto_i2c_0_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_bits_param = auto_i2c_0_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_bits_size = auto_i2c_0_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_bits_source = auto_i2c_0_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_bits_address = auto_i2c_0_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_bits_mask = auto_i2c_0_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_bits_data = auto_i2c_0_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_a_bits_corrupt = auto_i2c_0_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_control_xing_in_d_ready = auto_i2c_0_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign i2c_0_auto_io_out_scl_in = auto_i2c_0_io_out_scl_in; // @[LazyModule.scala 311:12]
+  assign i2c_0_auto_io_out_sda_in = auto_i2c_0_io_out_sda_in; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_71(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [2:0]  io_in_d_bits_opcode,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [95:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [383:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [383:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{27'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [28:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 29'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_33 = io_in_a_bits_address ^ 29'h10026000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_36 = $signed(_T_34) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_218 = _source_ok_T_4 & _T_172; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_279 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_309 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_317 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_347 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_355 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_385 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_397 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  _T_401 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_405 = io_in_d_bits_size >= 2'h2; // @[Monitor.scala 312:27]
+  wire  _T_421 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_449 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_478 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_513 = io_in_d_bits_opcode == 3'h2; // @[Monitor.scala 354:25]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_543 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_544 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_548 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_552 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_556 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_560 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_567 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_568 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_576 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_580 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_594 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_597 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_599 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_601 = ~_T_599[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_605 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_607 = ~_T_401; // @[Monitor.scala 671:74]
+  wire  _T_608 = io_in_d_valid & d_first_1 & ~_T_401; // @[Monitor.scala 671:71]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 & _T_607 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 & _T_607 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_594 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_618 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_620 = _T_618[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_625 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_626 = io_in_d_bits_opcode == _GEN_32 | _T_625; // @[Monitor.scala 685:77]
+  wire  _T_630 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_637 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_638 = io_in_d_bits_opcode == _GEN_48 | _T_637; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_642 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_652 = _T_605 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_607; // @[Monitor.scala 694:116]
+  wire  _T_654 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_663 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  reg [95:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [383:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg  d_first_counter_2; // @[Edges.scala 228:27]
+  wire  d_first_counter1_2 = d_first_counter_2 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = ~d_first_counter_2; // @[Edges.scala 230:25]
+  wire [383:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [383:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [383:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[383:1]}; // @[Monitor.scala 747:146]
+  wire  _T_689 = io_in_d_valid & d_first_2 & _T_401; // @[Monitor.scala 779:71]
+  wire [127:0] _GEN_67 = d_first_done & d_first_2 & _T_401 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 783:90 784:21]
+  wire [1038:0] _GEN_68 = d_first_done & d_first_2 & _T_401 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 783:90 785:21]
+  wire [95:0] _T_697 = inflight_1 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [3:0] c_size_lookup = _c_size_lookup_T_7[3:0];
+  wire  _T_707 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [95:0] d_clr_1 = _GEN_67[95:0];
+  wire [95:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [95:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [383:0] d_opcodes_clr_1 = _GEN_68[383:0];
+  wire [383:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [383:0] _inflight_sizes_T_5 = inflight_sizes_1 & _inflight_opcodes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_727 = ~(|inflight_1) | plusarg_reader_1_out == 32'h0 | watchdog_1 < plusarg_reader_1_out; // @[Monitor.scala 816:47]
+  wire [31:0] _watchdog_T_3 = watchdog_1 + 32'h1; // @[Monitor.scala 818:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    if (reset) begin // @[Monitor.scala 723:35]
+      inflight_1 <= 96'h0; // @[Monitor.scala 723:35]
+    end else begin
+      inflight_1 <= _inflight_T_5; // @[Monitor.scala 809:22]
+    end
+    if (reset) begin // @[Monitor.scala 725:35]
+      inflight_sizes_1 <= 384'h0; // @[Monitor.scala 725:35]
+    end else begin
+      inflight_sizes_1 <= _inflight_sizes_T_5; // @[Monitor.scala 811:22]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_2 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_2) begin // @[Edges.scala 235:21]
+        d_first_counter_2 <= 1'h0;
+      end else begin
+        d_first_counter_2 <= d_first_counter1_2;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 813:27]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 813:27]
+    end else if (d_first_done) begin // @[Monitor.scala 819:47]
+      watchdog_1 <= 32'h0; // @[Monitor.scala 819:58]
+    end else begin
+      watchdog_1 <= _watchdog_T_3; // @[Monitor.scala 818:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_218 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_218) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_275 & (io_in_a_valid & _T_236 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_236 & ~reset & ~_T_275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_309 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_309) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_279 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_279 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_347 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_347) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_317 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_317 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_385 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_385) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_355 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_355 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_397 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_T_397) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_401 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_401 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_421 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_421 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_405 & (io_in_d_valid & _T_449 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_449 & _T_2 & ~_T_405) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_478 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_478 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_495 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_495 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_513 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_513 & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_544 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_544) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_548 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_548) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_552 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_552) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_556 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_556) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_560 & (_T_543 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_543 & ~reset & ~_T_560) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_568 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_568) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_576 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_576) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_580 & (_T_567 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & _T_2 & ~_T_580) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (_T_597 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_597 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_608 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_626 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_626) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_630 & (_T_608 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & same_cycle_resp & _T_2 & ~_T_630) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_638 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_638) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_642 & (_T_608 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_608 & ~same_cycle_resp & _T_2 & ~_T_642) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_654 & (_T_652 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_652 & _T_2 & ~_T_654) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_663 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_663) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_697[0] & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_697[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_707 & (_T_689 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_689 & _T_2 & ~_T_707) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_727 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_727) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  opcode_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  source_1 = _RAND_9[6:0];
+  _RAND_10 = {3{`RANDOM}};
+  inflight = _RAND_10[95:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_11[383:0];
+  _RAND_12 = {12{`RANDOM}};
+  inflight_sizes = _RAND_12[383:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {3{`RANDOM}};
+  inflight_1 = _RAND_16[95:0];
+  _RAND_17 = {12{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[383:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  watchdog_1 = _RAND_19[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLI2C_1(
+  input         clock,
+  input         reset,
+  output        auto_int_xing_out_sync_0,
+  output        auto_control_xing_in_a_ready,
+  input         auto_control_xing_in_a_valid,
+  input  [2:0]  auto_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_control_xing_in_a_bits_param,
+  input  [1:0]  auto_control_xing_in_a_bits_size,
+  input  [6:0]  auto_control_xing_in_a_bits_source,
+  input  [28:0] auto_control_xing_in_a_bits_address,
+  input  [3:0]  auto_control_xing_in_a_bits_mask,
+  input  [31:0] auto_control_xing_in_a_bits_data,
+  input         auto_control_xing_in_a_bits_corrupt,
+  input         auto_control_xing_in_d_ready,
+  output        auto_control_xing_in_d_valid,
+  output [2:0]  auto_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_control_xing_in_d_bits_size,
+  output [6:0]  auto_control_xing_in_d_bits_source,
+  output [31:0] auto_control_xing_in_d_bits_data,
+  input         auto_io_out_scl_in,
+  output        auto_io_out_scl_oe,
+  input         auto_io_out_sda_in,
+  output        auto_io_out_sda_oe
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+  reg [31:0] _RAND_41;
+  reg [31:0] _RAND_42;
+  reg [31:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+`endif // RANDOMIZE_REG_INIT
+  wire  buffer_auto_in_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_opcode; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_a_bits_param; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_a_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [28:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [3:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_a_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_ready; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_valid; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_out_d_bits_opcode; // @[Buffer.scala 68:28]
+  wire [1:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [6:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [28:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_d_bits_opcode; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  reg [7:0] prescaler_hi; // @[I2C.scala 125:25]
+  reg [7:0] prescaler_lo; // @[I2C.scala 125:25]
+  reg  control_coreEn; // @[I2C.scala 126:25]
+  reg  control_intEn; // @[I2C.scala 126:25]
+  reg [7:0] transmitData; // @[I2C.scala 127:25]
+  reg [7:0] receivedData; // @[I2C.scala 128:25]
+  reg  cmd_start; // @[I2C.scala 129:25]
+  reg  cmd_stop; // @[I2C.scala 129:25]
+  reg  cmd_read; // @[I2C.scala 129:25]
+  reg  cmd_write; // @[I2C.scala 129:25]
+  reg  cmd_ack; // @[I2C.scala 129:25]
+  reg  cmd_irqAck; // @[I2C.scala 129:25]
+  reg  status_receivedAck; // @[I2C.scala 130:25]
+  reg  status_busy; // @[I2C.scala 130:25]
+  reg  status_arbLost; // @[I2C.scala 130:25]
+  reg  status_transferInProgress; // @[I2C.scala 130:25]
+  reg  status_irqFlag; // @[I2C.scala 130:25]
+  reg [13:0] filterCnt; // @[I2C.scala 139:22]
+  wire  _T = ~control_coreEn; // @[I2C.scala 140:10]
+  wire  _T_2 = ~(|filterCnt); // @[I2C.scala 142:16]
+  wire [15:0] _filterCnt_T = {prescaler_hi,prescaler_lo}; // @[Cat.scala 31:58]
+  wire [13:0] _filterCnt_T_3 = filterCnt - 14'h1; // @[I2C.scala 145:28]
+  reg [2:0] fSCL; // @[I2C.scala 148:22]
+  reg [2:0] fSDA; // @[I2C.scala 149:22]
+  wire [3:0] _fSCL_T = {fSCL,auto_io_out_scl_in}; // @[Cat.scala 31:58]
+  wire [3:0] _fSDA_T = {fSDA,auto_io_out_sda_in}; // @[Cat.scala 31:58]
+  wire [3:0] _GEN_2 = _T_2 ? _fSCL_T : {{1'd0}, fSCL}; // @[I2C.scala 150:27 151:10 148:22]
+  wire [3:0] _GEN_3 = _T_2 ? _fSDA_T : {{1'd0}, fSDA}; // @[I2C.scala 150:27 152:10 149:22]
+  wire  _sSCL_x29_T_3 = fSCL[0] & fSCL[1]; // @[Misc.scala 166:48]
+  wire  _sSCL_x29_T_4 = fSCL[0] & fSCL[2]; // @[Misc.scala 166:48]
+  wire  _sSCL_x29_T_6 = fSCL[1] & fSCL[2]; // @[Misc.scala 166:48]
+  wire  sSCL_x29 = _sSCL_x29_T_3 | _sSCL_x29_T_4 | _sSCL_x29_T_6; // @[Misc.scala 167:22]
+  reg  sSCL; // @[I2C.scala 155:22]
+  wire  _sSDA_x32_T_3 = fSDA[0] & fSDA[1]; // @[Misc.scala 166:48]
+  wire  _sSDA_x32_T_4 = fSDA[0] & fSDA[2]; // @[Misc.scala 166:48]
+  wire  _sSDA_x32_T_6 = fSDA[1] & fSDA[2]; // @[Misc.scala 166:48]
+  wire  sSDA_x32 = _sSDA_x32_T_3 | _sSDA_x32_T_4 | _sSDA_x32_T_6; // @[Misc.scala 167:22]
+  reg  sSDA; // @[I2C.scala 156:22]
+  reg  dSCL; // @[I2C.scala 158:22]
+  reg  dSDA; // @[I2C.scala 159:22]
+  reg  dSCLOen; // @[I2C.scala 161:22]
+  wire  _startCond_x44_T = ~sSDA; // @[I2C.scala 165:46]
+  wire  startCond_x44 = ~sSDA & dSDA & sSCL; // @[I2C.scala 165:61]
+  reg  startCond; // @[I2C.scala 165:22]
+  wire  stopCond_x47 = sSDA & ~dSDA & sSCL; // @[I2C.scala 166:61]
+  reg  stopCond; // @[I2C.scala 166:22]
+  wire  _sclSync_T = ~sSCL; // @[I2C.scala 170:27]
+  reg  sclOen; // @[I2C.scala 193:23]
+  wire  bundleOut_0_scl_oe = ~sclOen; // @[I2C.scala 194:18]
+  wire  sclSync = dSCL & ~sSCL & bundleOut_0_scl_oe; // @[I2C.scala 170:33]
+  reg  slaveWait; // @[I2C.scala 174:22]
+  reg  clkEn; // @[I2C.scala 177:22]
+  reg [15:0] cnt; // @[I2C.scala 178:22]
+  wire  _T_9 = ~(|cnt) | _T | sclSync; // @[I2C.scala 181:39]
+  wire [15:0] _cnt_T_2 = cnt - 16'h1; // @[I2C.scala 189:18]
+  reg  sdaOen; // @[I2C.scala 196:23]
+  reg  sdaChk; // @[I2C.scala 199:23]
+  reg  transmitBit; // @[I2C.scala 201:24]
+  reg  receivedBit; // @[I2C.scala 202:24]
+  reg [3:0] bitCmd; // @[I2C.scala 207:24]
+  reg  bitCmdStop; // @[I2C.scala 208:24]
+  reg  bitCmdAck; // @[I2C.scala 212:24]
+  reg [4:0] bitState; // @[I2C.scala 219:24]
+  wire  arbLost_x83 = sdaChk & _startCond_x44_T & sdaOen | bitState != 5'h0 & stopCond & ~bitCmdStop; // @[I2C.scala 221:76]
+  reg  arbLost; // @[I2C.scala 221:24]
+  wire [4:0] _GEN_10 = 4'h8 == bitCmd ? 5'ha : bitState; // @[I2C.scala 219:24 237:27 241:43]
+  wire [4:0] _GEN_11 = 4'h4 == bitCmd ? 5'he : _GEN_10; // @[I2C.scala 237:27 240:43]
+  wire [4:0] _GEN_12 = 4'h2 == bitCmd ? 5'h6 : _GEN_11; // @[I2C.scala 237:27 239:43]
+  wire [4:0] _GEN_13 = 4'h1 == bitCmd ? 5'h1 : _GEN_12; // @[I2C.scala 237:27 238:43]
+  wire [4:0] _GEN_14 = 5'h11 == bitState ? 5'h0 : bitState; // @[I2C.scala 235:25 349:21 219:24]
+  wire  _GEN_16 = 5'h11 == bitState ? 1'h0 : sclOen; // @[I2C.scala 235:25 351:21 193:23]
+  wire  _GEN_17 = 5'h11 == bitState ? transmitBit : sdaOen; // @[I2C.scala 235:25 352:21 196:23]
+  wire  _GEN_18 = 5'h11 == bitState ? 1'h0 : sdaChk; // @[I2C.scala 235:25 353:21 199:23]
+  wire [4:0] _GEN_19 = 5'h10 == bitState ? 5'h11 : _GEN_14; // @[I2C.scala 235:25 343:21]
+  wire  _GEN_20 = 5'h10 == bitState | _GEN_16; // @[I2C.scala 235:25 344:21]
+  wire  _GEN_21 = 5'h10 == bitState ? transmitBit : _GEN_17; // @[I2C.scala 235:25 345:21]
+  wire  _GEN_22 = 5'h10 == bitState | _GEN_18; // @[I2C.scala 235:25 346:21]
+  wire  _GEN_23 = 5'h10 == bitState ? 1'h0 : 5'h11 == bitState; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_24 = 5'hf == bitState ? 5'h10 : _GEN_19; // @[I2C.scala 235:25 337:21]
+  wire  _GEN_25 = 5'hf == bitState | _GEN_20; // @[I2C.scala 235:25 338:21]
+  wire  _GEN_26 = 5'hf == bitState ? transmitBit : _GEN_21; // @[I2C.scala 235:25 339:21]
+  wire  _GEN_27 = 5'hf == bitState ? 1'h0 : _GEN_22; // @[I2C.scala 235:25 340:21]
+  wire  _GEN_28 = 5'hf == bitState ? 1'h0 : _GEN_23; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_29 = 5'he == bitState ? 5'hf : _GEN_24; // @[I2C.scala 235:25 331:21]
+  wire  _GEN_30 = 5'he == bitState ? 1'h0 : _GEN_25; // @[I2C.scala 235:25 332:21]
+  wire  _GEN_31 = 5'he == bitState ? transmitBit : _GEN_26; // @[I2C.scala 235:25 333:21]
+  wire  _GEN_32 = 5'he == bitState ? 1'h0 : _GEN_27; // @[I2C.scala 235:25 334:21]
+  wire  _GEN_33 = 5'he == bitState ? 1'h0 : _GEN_28; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_34 = 5'hd == bitState ? 5'h0 : _GEN_29; // @[I2C.scala 235:25 323:21]
+  wire  _GEN_35 = 5'hd == bitState | _GEN_33; // @[I2C.scala 235:25 324:21]
+  wire  _GEN_36 = 5'hd == bitState ? 1'h0 : _GEN_30; // @[I2C.scala 235:25 325:21]
+  wire  _GEN_37 = 5'hd == bitState | _GEN_31; // @[I2C.scala 235:25 326:21]
+  wire  _GEN_38 = 5'hd == bitState ? 1'h0 : _GEN_32; // @[I2C.scala 235:25 327:21]
+  wire [4:0] _GEN_39 = 5'hc == bitState ? 5'hd : _GEN_34; // @[I2C.scala 235:25 317:21]
+  wire  _GEN_40 = 5'hc == bitState | _GEN_36; // @[I2C.scala 235:25 318:21]
+  wire  _GEN_41 = 5'hc == bitState | _GEN_37; // @[I2C.scala 235:25 319:21]
+  wire  _GEN_42 = 5'hc == bitState ? 1'h0 : _GEN_38; // @[I2C.scala 235:25 320:21]
+  wire  _GEN_43 = 5'hc == bitState ? 1'h0 : _GEN_35; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_44 = 5'hb == bitState ? 5'hc : _GEN_39; // @[I2C.scala 235:25 311:21]
+  wire  _GEN_45 = 5'hb == bitState | _GEN_40; // @[I2C.scala 235:25 312:21]
+  wire  _GEN_46 = 5'hb == bitState | _GEN_41; // @[I2C.scala 235:25 313:21]
+  wire  _GEN_47 = 5'hb == bitState ? 1'h0 : _GEN_42; // @[I2C.scala 235:25 314:21]
+  wire  _GEN_48 = 5'hb == bitState ? 1'h0 : _GEN_43; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_49 = 5'ha == bitState ? 5'hb : _GEN_44; // @[I2C.scala 235:25 305:21]
+  wire  _GEN_50 = 5'ha == bitState ? 1'h0 : _GEN_45; // @[I2C.scala 235:25 306:21]
+  wire  _GEN_51 = 5'ha == bitState | _GEN_46; // @[I2C.scala 235:25 307:21]
+  wire  _GEN_52 = 5'ha == bitState ? 1'h0 : _GEN_47; // @[I2C.scala 235:25 308:21]
+  wire  _GEN_53 = 5'ha == bitState ? 1'h0 : _GEN_48; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_54 = 5'h9 == bitState ? 5'h0 : _GEN_49; // @[I2C.scala 235:25 297:21]
+  wire  _GEN_55 = 5'h9 == bitState | _GEN_53; // @[I2C.scala 235:25 298:21]
+  wire  _GEN_56 = 5'h9 == bitState | _GEN_50; // @[I2C.scala 235:25 299:21]
+  wire  _GEN_57 = 5'h9 == bitState | _GEN_51; // @[I2C.scala 235:25 300:21]
+  wire  _GEN_58 = 5'h9 == bitState ? 1'h0 : _GEN_52; // @[I2C.scala 235:25 301:21]
+  wire [4:0] _GEN_59 = 5'h8 == bitState ? 5'h9 : _GEN_54; // @[I2C.scala 235:25 291:21]
+  wire  _GEN_60 = 5'h8 == bitState | _GEN_56; // @[I2C.scala 235:25 292:21]
+  wire  _GEN_61 = 5'h8 == bitState ? 1'h0 : _GEN_57; // @[I2C.scala 235:25 293:21]
+  wire  _GEN_62 = 5'h8 == bitState ? 1'h0 : _GEN_58; // @[I2C.scala 235:25 294:21]
+  wire  _GEN_63 = 5'h8 == bitState ? 1'h0 : _GEN_55; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_64 = 5'h7 == bitState ? 5'h8 : _GEN_59; // @[I2C.scala 235:25 285:21]
+  wire  _GEN_65 = 5'h7 == bitState | _GEN_60; // @[I2C.scala 235:25 286:21]
+  wire  _GEN_66 = 5'h7 == bitState ? 1'h0 : _GEN_61; // @[I2C.scala 235:25 287:21]
+  wire  _GEN_67 = 5'h7 == bitState ? 1'h0 : _GEN_62; // @[I2C.scala 235:25 288:21]
+  wire  _GEN_68 = 5'h7 == bitState ? 1'h0 : _GEN_63; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_69 = 5'h6 == bitState ? 5'h7 : _GEN_64; // @[I2C.scala 235:25 279:21]
+  wire  _GEN_70 = 5'h6 == bitState ? 1'h0 : _GEN_65; // @[I2C.scala 235:25 280:21]
+  wire  _GEN_71 = 5'h6 == bitState ? 1'h0 : _GEN_66; // @[I2C.scala 235:25 281:21]
+  wire  _GEN_72 = 5'h6 == bitState ? 1'h0 : _GEN_67; // @[I2C.scala 235:25 282:21]
+  wire  _GEN_73 = 5'h6 == bitState ? 1'h0 : _GEN_68; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_74 = 5'h5 == bitState ? 5'h0 : _GEN_69; // @[I2C.scala 235:25 271:21]
+  wire  _GEN_75 = 5'h5 == bitState | _GEN_73; // @[I2C.scala 235:25 272:21]
+  wire  _GEN_76 = 5'h5 == bitState ? 1'h0 : _GEN_70; // @[I2C.scala 235:25 273:21]
+  wire  _GEN_77 = 5'h5 == bitState ? 1'h0 : _GEN_71; // @[I2C.scala 235:25 274:21]
+  wire  _GEN_78 = 5'h5 == bitState ? 1'h0 : _GEN_72; // @[I2C.scala 235:25 275:21]
+  wire [4:0] _GEN_79 = 5'h4 == bitState ? 5'h5 : _GEN_74; // @[I2C.scala 235:25 265:21]
+  wire  _GEN_80 = 5'h4 == bitState | _GEN_76; // @[I2C.scala 235:25 266:21]
+  wire  _GEN_81 = 5'h4 == bitState ? 1'h0 : _GEN_77; // @[I2C.scala 235:25 267:21]
+  wire  _GEN_82 = 5'h4 == bitState ? 1'h0 : _GEN_78; // @[I2C.scala 235:25 268:21]
+  wire  _GEN_83 = 5'h4 == bitState ? 1'h0 : _GEN_75; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_84 = 5'h3 == bitState ? 5'h4 : _GEN_79; // @[I2C.scala 235:25 259:21]
+  wire  _GEN_85 = 5'h3 == bitState | _GEN_80; // @[I2C.scala 235:25 260:21]
+  wire  _GEN_86 = 5'h3 == bitState ? 1'h0 : _GEN_81; // @[I2C.scala 235:25 261:21]
+  wire  _GEN_87 = 5'h3 == bitState ? 1'h0 : _GEN_82; // @[I2C.scala 235:25 262:21]
+  wire  _GEN_88 = 5'h3 == bitState ? 1'h0 : _GEN_83; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_89 = 5'h2 == bitState ? 5'h3 : _GEN_84; // @[I2C.scala 235:25 253:21]
+  wire  _GEN_90 = 5'h2 == bitState | _GEN_85; // @[I2C.scala 235:25 254:21]
+  wire  _GEN_91 = 5'h2 == bitState | _GEN_86; // @[I2C.scala 235:25 255:21]
+  wire  _GEN_92 = 5'h2 == bitState ? 1'h0 : _GEN_87; // @[I2C.scala 235:25 256:21]
+  wire  _GEN_93 = 5'h2 == bitState ? 1'h0 : _GEN_88; // @[I2C.scala 232:15 235:25]
+  wire [4:0] _GEN_94 = 5'h1 == bitState ? 5'h2 : _GEN_89; // @[I2C.scala 235:25 247:21]
+  wire  _GEN_95 = 5'h1 == bitState ? sclOen : _GEN_90; // @[I2C.scala 235:25 248:21]
+  wire  _GEN_96 = 5'h1 == bitState | _GEN_91; // @[I2C.scala 235:25 249:21]
+  wire  _GEN_97 = 5'h1 == bitState ? 1'h0 : _GEN_92; // @[I2C.scala 235:25 250:21]
+  wire  _GEN_98 = 5'h1 == bitState ? 1'h0 : _GEN_93; // @[I2C.scala 232:15 235:25]
+  wire  _GEN_101 = 5'h0 == bitState ? sclOen : _GEN_95; // @[I2C.scala 193:23 235:25]
+  wire  _GEN_102 = 5'h0 == bitState ? sdaOen : _GEN_96; // @[I2C.scala 196:23 235:25]
+  wire  _GEN_103 = 5'h0 == bitState ? 1'h0 : _GEN_98; // @[I2C.scala 232:15 235:25]
+  wire  _GEN_106 = clkEn ? _GEN_101 : sclOen; // @[I2C.scala 234:18 193:23]
+  wire  _GEN_107 = clkEn ? _GEN_102 : sdaOen; // @[I2C.scala 234:18 196:23]
+  wire  _GEN_108 = clkEn & _GEN_103; // @[I2C.scala 232:15 234:18]
+  wire  _GEN_111 = arbLost | _GEN_106; // @[I2C.scala 224:18 227:15]
+  wire  _GEN_112 = arbLost | _GEN_107; // @[I2C.scala 224:18 228:15]
+  reg  load; // @[I2C.scala 361:24]
+  reg  shift; // @[I2C.scala 362:24]
+  reg  cmdAck; // @[I2C.scala 363:24]
+  reg  receivedAck; // @[I2C.scala 364:24]
+  wire  _go_T = cmd_read | cmd_write; // @[I2C.scala 365:31]
+  wire  go = (cmd_read | cmd_write | cmd_stop) & ~cmdAck; // @[I2C.scala 365:55]
+  reg [2:0] bitCnt; // @[I2C.scala 367:24]
+  wire [2:0] _bitCnt_T_1 = bitCnt - 3'h1; // @[I2C.scala 372:22]
+  wire  bitCntDone = ~(|bitCnt); // @[I2C.scala 374:21]
+  wire [8:0] _receivedData_T = {receivedData,receivedBit}; // @[Cat.scala 31:58]
+  wire [8:0] _GEN_116 = shift ? _receivedData_T : {{1'd0}, receivedData}; // @[I2C.scala 380:21 381:18 128:25]
+  wire [8:0] _GEN_117 = load ? {{1'd0}, transmitData} : _GEN_116; // @[I2C.scala 377:15 378:18]
+  reg [2:0] byteState; // @[I2C.scala 385:24]
+  wire [2:0] _GEN_118 = cmd_write ? 3'h3 : 3'h5; // @[I2C.scala 413:33 414:23 418:23]
+  wire [2:0] _GEN_119 = cmd_write ? 3'h4 : 3'h2; // @[I2C.scala 413:33 415:23 419:23]
+  wire [2:0] _GEN_120 = cmd_read ? 3'h2 : _GEN_118; // @[I2C.scala 409:32 410:23]
+  wire [3:0] _GEN_121 = cmd_read ? 4'h8 : {{1'd0}, _GEN_119}; // @[I2C.scala 409:32 411:23]
+  wire [2:0] _GEN_122 = cmd_start ? 3'h1 : _GEN_120; // @[I2C.scala 405:28 406:23]
+  wire [3:0] _GEN_123 = cmd_start ? 4'h1 : _GEN_121; // @[I2C.scala 405:28 407:23]
+  wire [2:0] _GEN_127 = cmd_read ? 3'h2 : 3'h3; // @[I2C.scala 427:27 428:23 432:23]
+  wire [3:0] _GEN_128 = cmd_read ? 4'h8 : 4'h4; // @[I2C.scala 427:27 429:23 433:23]
+  wire [2:0] _GEN_129 = bitCmdAck ? _GEN_127 : byteState; // @[I2C.scala 385:24 426:26]
+  wire [3:0] _GEN_130 = bitCmdAck ? _GEN_128 : bitCmd; // @[I2C.scala 207:24 426:26]
+  wire [2:0] _GEN_132 = bitCntDone ? 3'h4 : 3'h3; // @[I2C.scala 441:29 442:23 446:23]
+  wire [3:0] _GEN_133 = bitCntDone ? 4'h8 : 4'h4; // @[I2C.scala 441:29 443:23 447:23]
+  wire  _GEN_134 = bitCntDone ? 1'h0 : 1'h1; // @[I2C.scala 398:17 441:29 448:23]
+  wire [2:0] _GEN_135 = bitCmdAck ? _GEN_132 : byteState; // @[I2C.scala 385:24 440:26]
+  wire [3:0] _GEN_136 = bitCmdAck ? _GEN_133 : bitCmd; // @[I2C.scala 207:24 440:26]
+  wire  _GEN_137 = bitCmdAck & _GEN_134; // @[I2C.scala 398:17 440:26]
+  wire [2:0] _GEN_138 = bitCntDone ? 3'h4 : 3'h2; // @[I2C.scala 454:29 455:23 459:23]
+  wire [3:0] _GEN_139 = bitCntDone ? 4'h4 : 4'h8; // @[I2C.scala 454:29 456:23 460:23]
+  wire [2:0] _GEN_140 = bitCmdAck ? _GEN_138 : byteState; // @[I2C.scala 385:24 453:26]
+  wire [3:0] _GEN_141 = bitCmdAck ? _GEN_139 : bitCmd; // @[I2C.scala 207:24 453:26]
+  wire  _GEN_142 = bitCmdAck ? cmd_ack : receivedData[7]; // @[I2C.scala 397:17 453:26 464:23]
+  wire [2:0] _GEN_143 = cmd_stop ? 3'h5 : 3'h0; // @[I2C.scala 469:27 470:23 474:23]
+  wire [1:0] _GEN_144 = cmd_stop ? 2'h2 : 2'h0; // @[I2C.scala 469:27 471:23 475:23]
+  wire  _GEN_145 = cmd_stop ? 1'h0 : 1'h1; // @[I2C.scala 400:17 469:27 478:23]
+  wire [2:0] _GEN_146 = bitCmdAck ? _GEN_143 : byteState; // @[I2C.scala 385:24 468:26]
+  wire [3:0] _GEN_147 = bitCmdAck ? {{2'd0}, _GEN_144} : bitCmd; // @[I2C.scala 207:24 468:26]
+  wire  _GEN_148 = bitCmdAck & _GEN_145; // @[I2C.scala 400:17 468:26]
+  wire  _GEN_149 = bitCmdAck ? receivedBit : receivedAck; // @[I2C.scala 468:26 482:23 364:24]
+  wire  _GEN_150 = bitCmdAck | cmd_ack; // @[I2C.scala 468:26 484:23 487:23]
+  wire [2:0] _GEN_151 = bitCmdAck ? 3'h0 : byteState; // @[I2C.scala 491:26 492:21 385:24]
+  wire [3:0] _GEN_152 = bitCmdAck ? 4'h0 : bitCmd; // @[I2C.scala 491:26 493:21 207:24]
+  wire [2:0] _GEN_153 = 3'h5 == byteState ? _GEN_151 : byteState; // @[I2C.scala 385:24 402:24]
+  wire [3:0] _GEN_154 = 3'h5 == byteState ? _GEN_152 : bitCmd; // @[I2C.scala 207:24 402:24]
+  wire  _GEN_155 = 3'h5 == byteState & bitCmdAck; // @[I2C.scala 400:17 402:24]
+  wire [2:0] _GEN_156 = 3'h4 == byteState ? _GEN_146 : _GEN_153; // @[I2C.scala 402:24]
+  wire [3:0] _GEN_157 = 3'h4 == byteState ? _GEN_147 : _GEN_154; // @[I2C.scala 402:24]
+  wire  _GEN_158 = 3'h4 == byteState ? _GEN_148 : _GEN_155; // @[I2C.scala 402:24]
+  wire  _GEN_159 = 3'h4 == byteState ? _GEN_149 : receivedAck; // @[I2C.scala 364:24 402:24]
+  wire  _GEN_160 = 3'h4 == byteState ? _GEN_150 : receivedData[7]; // @[I2C.scala 397:17 402:24]
+  wire [2:0] _GEN_161 = 3'h2 == byteState ? _GEN_140 : _GEN_156; // @[I2C.scala 402:24]
+  wire [3:0] _GEN_162 = 3'h2 == byteState ? _GEN_141 : _GEN_157; // @[I2C.scala 402:24]
+  wire  _GEN_163 = 3'h2 == byteState & bitCmdAck; // @[I2C.scala 398:17 402:24]
+  wire  _GEN_164 = 3'h2 == byteState ? _GEN_142 : _GEN_160; // @[I2C.scala 402:24]
+  wire  _GEN_165 = 3'h2 == byteState ? 1'h0 : _GEN_158; // @[I2C.scala 400:17 402:24]
+  wire  _GEN_166 = 3'h2 == byteState ? receivedAck : _GEN_159; // @[I2C.scala 364:24 402:24]
+  wire [2:0] _GEN_167 = 3'h3 == byteState ? _GEN_135 : _GEN_161; // @[I2C.scala 402:24]
+  wire [3:0] _GEN_168 = 3'h3 == byteState ? _GEN_136 : _GEN_162; // @[I2C.scala 402:24]
+  wire  _GEN_169 = 3'h3 == byteState ? _GEN_137 : _GEN_163; // @[I2C.scala 402:24]
+  wire  _GEN_170 = 3'h3 == byteState ? receivedData[7] : _GEN_164; // @[I2C.scala 397:17 402:24]
+  wire  _GEN_171 = 3'h3 == byteState ? 1'h0 : _GEN_165; // @[I2C.scala 400:17 402:24]
+  wire  _GEN_172 = 3'h3 == byteState ? receivedAck : _GEN_166; // @[I2C.scala 364:24 402:24]
+  wire  _GEN_175 = 3'h1 == byteState & bitCmdAck; // @[I2C.scala 399:17 402:24]
+  wire  bundleIn_0_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [2:0] bundleIn_0_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [28:0] bundleIn_0_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [9:0] in_bits_index = bundleIn_0_a_bits_address[11:2]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [2:0] out_iindex = {in_bits_index[2],in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [9:0] out_findex = in_bits_index & 10'h3f8; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_8 = out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  bundleIn_0_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_backSel_T = 8'h1 << out_iindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_4 = _out_backSel_T[4]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_6 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_backSel_4 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] bundleIn_0_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_backMask_T_11 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_7 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_5 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] out_backMask = {_out_backMask_T_11,_out_backMask_T_9,_out_backMask_T_7,_out_backMask_T_5}; // @[Cat.scala 31:58]
+  wire  out_womask_6 = &out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_6 = out_woready_6 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire [31:0] bundleIn_0_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _nextCmd_T = {cmd_start,cmd_stop,cmd_read,cmd_write,cmd_ack,2'h0,cmd_irqAck}; // @[I2C.scala 508:18]
+  wire [7:0] _nextCmd_T_1 = _nextCmd_T & 8'hfe; // @[I2C.scala 508:25]
+  wire [7:0] nextCmd = out_f_woready_6 ? bundleIn_0_a_bits_data[7:0] : _nextCmd_T_1; // @[I2C.scala 508:11 564:77 566:74]
+  wire  _T_40 = cmdAck | arbLost; // @[I2C.scala 511:16]
+  wire  _GEN_198 = startCond | status_busy; // @[I2C.scala 130:25 522:25 523:29]
+  wire  _GEN_200 = cmd_start ? 1'h0 : status_arbLost; // @[I2C.scala 130:25 529:25 530:29]
+  wire  _GEN_201 = arbLost | _GEN_200; // @[I2C.scala 526:18 527:29]
+  reg  statusReadReady; // @[I2C.scala 536:28]
+  wire  _GEN_202 = ~statusReadReady | statusReadReady; // @[I2C.scala 540:32 541:21 536:28]
+  wire  _GEN_203 = _T_40 ? 1'h0 : _GEN_202; // @[I2C.scala 537:28 538:21]
+  wire  out_rimask = |out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_rofireMux_out_4 = statusReadReady | ~out_rimask; // @[RegisterRouter.scala 83:24]
+  wire  _out_rofireMux_T_21 = out_rofireMux_out_4 | ~(out_findex == 10'h0); // @[RegisterRouter.scala 83:24]
+  wire  _GEN_232 = 3'h4 == out_iindex ? _out_rofireMux_T_21 : 1'h1; // @[MuxLiteral.scala 48:{10,10}]
+  wire  out_rofireMux = 3'h7 == out_iindex | (3'h6 == out_iindex | (3'h5 == out_iindex | _GEN_232)); // @[MuxLiteral.scala 48:{10,10}]
+  wire  out_oready = in_bits_read ? out_rofireMux : 1'h1; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_0 = _out_backSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready = out_woready_0 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_1 = _out_backSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_1 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_1 = out_woready_1 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_backSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_2 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_3 = &out_backMask[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_3 = out_woready_2 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_4 = &out_backMask[7]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_4 = out_woready_2 & out_wimask_4; // @[RegisterRouter.scala 83:24]
+  wire [7:0] out_prepend_1 = {control_coreEn,control_intEn,6'h0}; // @[Cat.scala 31:58]
+  wire  out_frontSel_3 = _out_backSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_5 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 10'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_5 = out_woready_5 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire [7:0] out_f_data = {status_receivedAck,status_busy,status_arbLost,3'h0,status_transferInProgress,status_irqFlag}; // @[I2C.scala 561:89]
+  wire  _GEN_210 = out_f_woready_6 ? 1'h0 : _GEN_203; // @[I2C.scala 564:77 565:82]
+  wire  _GEN_245 = 3'h1 == out_iindex ? _out_T_8 : _out_T_8; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_246 = 3'h2 == out_iindex ? _out_T_8 : _GEN_245; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_247 = 3'h3 == out_iindex ? _out_T_8 : _GEN_246; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_248 = 3'h4 == out_iindex ? _out_T_8 : _GEN_247; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_251 = 3'h7 == out_iindex | (3'h6 == out_iindex | (3'h5 == out_iindex | _GEN_248)); // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_253 = 3'h1 == out_iindex ? prescaler_hi : prescaler_lo; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_254 = 3'h2 == out_iindex ? out_prepend_1 : _GEN_253; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_255 = 3'h3 == out_iindex ? receivedData : _GEN_254; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_256 = 3'h4 == out_iindex ? out_f_data : _GEN_255; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_257 = 3'h5 == out_iindex ? 8'h0 : _GEN_256; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_258 = 3'h6 == out_iindex ? 8'h0 : _GEN_257; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _GEN_259 = 3'h7 == out_iindex ? 8'h0 : _GEN_258; // @[MuxLiteral.scala 48:{10,10}]
+  wire [7:0] _out_out_bits_data_T_4 = _GEN_251 ? _GEN_259 : 8'h0; // @[RegisterRouter.scala 83:24]
+  TLBuffer_13 buffer ( // @[Buffer.scala 68:28]
+    .auto_in_a_ready(buffer_auto_in_a_ready),
+    .auto_in_a_valid(buffer_auto_in_a_valid),
+    .auto_in_a_bits_opcode(buffer_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(buffer_auto_in_a_bits_param),
+    .auto_in_a_bits_size(buffer_auto_in_a_bits_size),
+    .auto_in_a_bits_source(buffer_auto_in_a_bits_source),
+    .auto_in_a_bits_address(buffer_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(buffer_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(buffer_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(buffer_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(buffer_auto_in_d_ready),
+    .auto_in_d_valid(buffer_auto_in_d_valid),
+    .auto_in_d_bits_opcode(buffer_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(buffer_auto_in_d_bits_size),
+    .auto_in_d_bits_source(buffer_auto_in_d_bits_source),
+    .auto_in_d_bits_data(buffer_auto_in_d_bits_data),
+    .auto_out_a_ready(buffer_auto_out_a_ready),
+    .auto_out_a_valid(buffer_auto_out_a_valid),
+    .auto_out_a_bits_opcode(buffer_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(buffer_auto_out_a_bits_param),
+    .auto_out_a_bits_size(buffer_auto_out_a_bits_size),
+    .auto_out_a_bits_source(buffer_auto_out_a_bits_source),
+    .auto_out_a_bits_address(buffer_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(buffer_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(buffer_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(buffer_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(buffer_auto_out_d_ready),
+    .auto_out_d_valid(buffer_auto_out_d_valid),
+    .auto_out_d_bits_opcode(buffer_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(buffer_auto_out_d_bits_size),
+    .auto_out_d_bits_source(buffer_auto_out_d_bits_source),
+    .auto_out_d_bits_data(buffer_auto_out_d_bits_data)
+  );
+  IntSyncCrossingSource_1 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_out_sync_0(intsource_auto_out_sync_0)
+  );
+  TLMonitor_71 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_opcode(monitor_io_in_d_bits_opcode),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_int_xing_out_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_control_xing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_control_xing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_io_out_scl_oe = ~sclOen; // @[I2C.scala 194:18]
+  assign auto_io_out_sda_oe = ~sdaOen; // @[I2C.scala 197:18]
+  assign buffer_auto_in_a_valid = auto_control_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_control_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_control_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_control_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_control_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_control_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_control_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_control_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_control_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_control_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = bundleIn_0_d_ready & out_oready; // @[RegisterRouter.scala 83:24]
+  assign buffer_auto_out_d_valid = bundleIn_0_a_valid & out_oready; // @[RegisterRouter.scala 83:24]
+  assign buffer_auto_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign buffer_auto_out_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = {{24'd0}, _out_out_bits_data_T_4}; // @[RegisterRouter.scala 83:{24,24}]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = status_irqFlag & control_intEn; // @[I2C.scala 578:35]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = bundleIn_0_d_ready & out_oready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = bundleIn_0_a_valid & out_oready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign monitor_io_in_d_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  always @(posedge clock) begin
+    if (reset) begin // @[I2C.scala 125:25]
+      prescaler_hi <= 8'hff; // @[I2C.scala 125:25]
+    end else if (out_f_woready_1) begin // @[RegField.scala 74:88]
+      prescaler_hi <= bundleIn_0_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 125:25]
+      prescaler_lo <= 8'hff; // @[I2C.scala 125:25]
+    end else if (out_f_woready) begin // @[RegField.scala 74:88]
+      prescaler_lo <= bundleIn_0_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 126:25]
+      control_coreEn <= 1'h0; // @[I2C.scala 126:25]
+    end else if (out_f_woready_4) begin // @[RegField.scala 74:88]
+      control_coreEn <= bundleIn_0_a_bits_data[7]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 126:25]
+      control_intEn <= 1'h0; // @[I2C.scala 126:25]
+    end else if (out_f_woready_3) begin // @[RegField.scala 74:88]
+      control_intEn <= bundleIn_0_a_bits_data[6]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 127:25]
+      transmitData <= 8'h0; // @[I2C.scala 127:25]
+    end else if (out_f_woready_5) begin // @[RegField.scala 74:88]
+      transmitData <= bundleIn_0_a_bits_data[7:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[I2C.scala 128:25]
+      receivedData <= 8'h0; // @[I2C.scala 128:25]
+    end else begin
+      receivedData <= _GEN_117[7:0];
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_start <= 1'h0; // @[I2C.scala 129:25]
+    end else if (cmdAck | arbLost) begin // @[I2C.scala 511:28]
+      cmd_start <= 1'h0; // @[I2C.scala 512:15]
+    end else begin
+      cmd_start <= nextCmd[7]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_stop <= 1'h0; // @[I2C.scala 129:25]
+    end else if (cmdAck | arbLost) begin // @[I2C.scala 511:28]
+      cmd_stop <= 1'h0; // @[I2C.scala 513:15]
+    end else begin
+      cmd_stop <= nextCmd[6]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_read <= 1'h0; // @[I2C.scala 129:25]
+    end else if (cmdAck | arbLost) begin // @[I2C.scala 511:28]
+      cmd_read <= 1'h0; // @[I2C.scala 514:15]
+    end else begin
+      cmd_read <= nextCmd[5]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_write <= 1'h0; // @[I2C.scala 129:25]
+    end else if (cmdAck | arbLost) begin // @[I2C.scala 511:28]
+      cmd_write <= 1'h0; // @[I2C.scala 515:15]
+    end else begin
+      cmd_write <= nextCmd[4]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_ack <= 1'h0; // @[I2C.scala 129:25]
+    end else begin
+      cmd_ack <= nextCmd[3]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 129:25]
+      cmd_irqAck <= 1'h0; // @[I2C.scala 129:25]
+    end else begin
+      cmd_irqAck <= nextCmd[0]; // @[I2C.scala 507:7]
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_receivedAck <= 1'h0; // @[I2C.scala 130:25]
+    end else begin
+      status_receivedAck <= receivedAck; // @[I2C.scala 518:22]
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_busy <= 1'h0; // @[I2C.scala 130:25]
+    end else if (stopCond) begin // @[I2C.scala 519:19]
+      status_busy <= 1'h0; // @[I2C.scala 520:29]
+    end else begin
+      status_busy <= _GEN_198;
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_arbLost <= 1'h0; // @[I2C.scala 130:25]
+    end else begin
+      status_arbLost <= _GEN_201;
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_transferInProgress <= 1'h0; // @[I2C.scala 130:25]
+    end else begin
+      status_transferInProgress <= _go_T; // @[I2C.scala 532:29]
+    end
+    if (reset) begin // @[I2C.scala 130:25]
+      status_irqFlag <= 1'h0; // @[I2C.scala 130:25]
+    end else begin
+      status_irqFlag <= (_T_40 | status_irqFlag) & ~cmd_irqAck; // @[I2C.scala 533:29]
+    end
+    if (reset) begin // @[I2C.scala 139:22]
+      filterCnt <= 14'h0; // @[I2C.scala 139:22]
+    end else if (~control_coreEn) begin // @[I2C.scala 140:28]
+      filterCnt <= 14'h0; // @[I2C.scala 141:15]
+    end else if (~(|filterCnt)) begin // @[I2C.scala 142:34]
+      filterCnt <= _filterCnt_T[15:2]; // @[I2C.scala 143:15]
+    end else begin
+      filterCnt <= _filterCnt_T_3; // @[I2C.scala 145:15]
+    end
+    if (reset) begin // @[I2C.scala 148:22]
+      fSCL <= 3'h7; // @[I2C.scala 148:22]
+    end else begin
+      fSCL <= _GEN_2[2:0];
+    end
+    if (reset) begin // @[I2C.scala 149:22]
+      fSDA <= 3'h7; // @[I2C.scala 149:22]
+    end else begin
+      fSDA <= _GEN_3[2:0];
+    end
+    sSCL <= reset | sSCL_x29; // @[I2C.scala 155:{22,22,22}]
+    sSDA <= reset | sSDA_x32; // @[I2C.scala 156:{22,22,22}]
+    dSCL <= reset | sSCL; // @[I2C.scala 158:{22,22,22}]
+    dSDA <= reset | sSDA; // @[I2C.scala 159:{22,22,22}]
+    dSCLOen <= ~sclOen; // @[I2C.scala 194:18]
+    if (reset) begin // @[I2C.scala 165:22]
+      startCond <= 1'h0; // @[I2C.scala 165:22]
+    end else begin
+      startCond <= startCond_x44; // @[I2C.scala 165:22]
+    end
+    if (reset) begin // @[I2C.scala 166:22]
+      stopCond <= 1'h0; // @[I2C.scala 166:22]
+    end else begin
+      stopCond <= stopCond_x47; // @[I2C.scala 166:22]
+    end
+    sclOen <= reset | _GEN_111; // @[I2C.scala 193:{23,23}]
+    if (reset) begin // @[I2C.scala 174:22]
+      slaveWait <= 1'h0; // @[I2C.scala 174:22]
+    end else begin
+      slaveWait <= bundleOut_0_scl_oe & ~dSCLOen & _sclSync_T | slaveWait & _sclSync_T; // @[I2C.scala 175:13]
+    end
+    clkEn <= reset | _T_9; // @[I2C.scala 177:{22,22}]
+    if (reset) begin // @[I2C.scala 178:22]
+      cnt <= 16'h0; // @[I2C.scala 178:22]
+    end else if (~(|cnt) | _T | sclSync) begin // @[I2C.scala 181:52]
+      cnt <= _filterCnt_T; // @[I2C.scala 182:11]
+    end else if (!(slaveWait)) begin // @[I2C.scala 185:25]
+      cnt <= _cnt_T_2; // @[I2C.scala 189:11]
+    end
+    sdaOen <= reset | _GEN_112; // @[I2C.scala 196:{23,23}]
+    if (reset) begin // @[I2C.scala 199:23]
+      sdaChk <= 1'h0; // @[I2C.scala 199:23]
+    end else if (arbLost) begin // @[I2C.scala 224:18]
+      sdaChk <= 1'h0; // @[I2C.scala 229:15]
+    end else if (clkEn) begin // @[I2C.scala 234:18]
+      if (5'h0 == bitState) begin // @[I2C.scala 235:25]
+        sdaChk <= 1'h0; // @[I2C.scala 243:18]
+      end else begin
+        sdaChk <= _GEN_97;
+      end
+    end
+    if (reset) begin // @[I2C.scala 201:24]
+      transmitBit <= 1'h0; // @[I2C.scala 201:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      transmitBit <= 1'h0; // @[I2C.scala 389:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      transmitBit <= receivedData[7]; // @[I2C.scala 397:17]
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      transmitBit <= receivedData[7]; // @[I2C.scala 397:17]
+    end else begin
+      transmitBit <= _GEN_170;
+    end
+    if (sSCL & ~dSCL) begin // @[I2C.scala 203:24]
+      receivedBit <= sSDA; // @[I2C.scala 204:17]
+    end
+    if (reset) begin // @[I2C.scala 207:24]
+      bitCmd <= 4'h0; // @[I2C.scala 207:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      bitCmd <= 4'h0; // @[I2C.scala 388:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      if (go) begin // @[I2C.scala 404:19]
+        bitCmd <= _GEN_123;
+      end
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      bitCmd <= _GEN_130;
+    end else begin
+      bitCmd <= _GEN_168;
+    end
+    if (reset) begin // @[I2C.scala 208:24]
+      bitCmdStop <= 1'h0; // @[I2C.scala 208:24]
+    end else if (clkEn) begin // @[I2C.scala 209:16]
+      bitCmdStop <= bitCmd == 4'h2; // @[I2C.scala 210:16]
+    end
+    if (reset) begin // @[I2C.scala 212:24]
+      bitCmdAck <= 1'h0; // @[I2C.scala 212:24]
+    end else if (arbLost) begin // @[I2C.scala 224:18]
+      bitCmdAck <= 1'h0; // @[I2C.scala 226:15]
+    end else begin
+      bitCmdAck <= _GEN_108;
+    end
+    if (reset) begin // @[I2C.scala 219:24]
+      bitState <= 5'h0; // @[I2C.scala 219:24]
+    end else if (arbLost) begin // @[I2C.scala 224:18]
+      bitState <= 5'h0; // @[I2C.scala 225:15]
+    end else if (clkEn) begin // @[I2C.scala 234:18]
+      if (5'h0 == bitState) begin // @[I2C.scala 235:25]
+        bitState <= _GEN_13;
+      end else begin
+        bitState <= _GEN_94;
+      end
+    end
+    if (reset) begin // @[I2C.scala 221:24]
+      arbLost <= 1'h0; // @[I2C.scala 221:24]
+    end else begin
+      arbLost <= arbLost_x83; // @[I2C.scala 221:24]
+    end
+    if (reset) begin // @[I2C.scala 361:24]
+      load <= 1'h0; // @[I2C.scala 361:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      load <= 1'h0; // @[I2C.scala 391:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      load <= go;
+    end else begin
+      load <= _GEN_175;
+    end
+    if (reset) begin // @[I2C.scala 362:24]
+      shift <= 1'h0; // @[I2C.scala 362:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      shift <= 1'h0; // @[I2C.scala 390:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      shift <= 1'h0; // @[I2C.scala 398:17]
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      shift <= 1'h0; // @[I2C.scala 398:17]
+    end else begin
+      shift <= _GEN_169;
+    end
+    if (reset) begin // @[I2C.scala 363:24]
+      cmdAck <= 1'h0; // @[I2C.scala 363:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      cmdAck <= 1'h0; // @[I2C.scala 392:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      cmdAck <= 1'h0; // @[I2C.scala 400:17]
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      cmdAck <= 1'h0; // @[I2C.scala 400:17]
+    end else begin
+      cmdAck <= _GEN_171;
+    end
+    if (reset) begin // @[I2C.scala 364:24]
+      receivedAck <= 1'h0; // @[I2C.scala 364:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      receivedAck <= 1'h0; // @[I2C.scala 394:17]
+    end else if (!(3'h0 == byteState)) begin // @[I2C.scala 402:24]
+      if (!(3'h1 == byteState)) begin // @[I2C.scala 402:24]
+        receivedAck <= _GEN_172;
+      end
+    end
+    if (reset) begin // @[I2C.scala 367:24]
+      bitCnt <= 3'h0; // @[I2C.scala 367:24]
+    end else if (load) begin // @[I2C.scala 368:15]
+      bitCnt <= 3'h7; // @[I2C.scala 369:12]
+    end else if (shift) begin // @[I2C.scala 371:21]
+      bitCnt <= _bitCnt_T_1; // @[I2C.scala 372:12]
+    end
+    if (reset) begin // @[I2C.scala 385:24]
+      byteState <= 3'h0; // @[I2C.scala 385:24]
+    end else if (arbLost) begin // @[I2C.scala 387:18]
+      byteState <= 3'h0; // @[I2C.scala 393:17]
+    end else if (3'h0 == byteState) begin // @[I2C.scala 402:24]
+      if (go) begin // @[I2C.scala 404:19]
+        byteState <= _GEN_122;
+      end
+    end else if (3'h1 == byteState) begin // @[I2C.scala 402:24]
+      byteState <= _GEN_129;
+    end else begin
+      byteState <= _GEN_167;
+    end
+    statusReadReady <= reset | _GEN_210; // @[I2C.scala 536:{28,28}]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  prescaler_hi = _RAND_0[7:0];
+  _RAND_1 = {1{`RANDOM}};
+  prescaler_lo = _RAND_1[7:0];
+  _RAND_2 = {1{`RANDOM}};
+  control_coreEn = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  control_intEn = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  transmitData = _RAND_4[7:0];
+  _RAND_5 = {1{`RANDOM}};
+  receivedData = _RAND_5[7:0];
+  _RAND_6 = {1{`RANDOM}};
+  cmd_start = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  cmd_stop = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  cmd_read = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  cmd_write = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  cmd_ack = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  cmd_irqAck = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  status_receivedAck = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  status_busy = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  status_arbLost = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  status_transferInProgress = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  status_irqFlag = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  filterCnt = _RAND_17[13:0];
+  _RAND_18 = {1{`RANDOM}};
+  fSCL = _RAND_18[2:0];
+  _RAND_19 = {1{`RANDOM}};
+  fSDA = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  sSCL = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  sSDA = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  dSCL = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  dSDA = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  dSCLOen = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  startCond = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  stopCond = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  sclOen = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  slaveWait = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  clkEn = _RAND_29[0:0];
+  _RAND_30 = {1{`RANDOM}};
+  cnt = _RAND_30[15:0];
+  _RAND_31 = {1{`RANDOM}};
+  sdaOen = _RAND_31[0:0];
+  _RAND_32 = {1{`RANDOM}};
+  sdaChk = _RAND_32[0:0];
+  _RAND_33 = {1{`RANDOM}};
+  transmitBit = _RAND_33[0:0];
+  _RAND_34 = {1{`RANDOM}};
+  receivedBit = _RAND_34[0:0];
+  _RAND_35 = {1{`RANDOM}};
+  bitCmd = _RAND_35[3:0];
+  _RAND_36 = {1{`RANDOM}};
+  bitCmdStop = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  bitCmdAck = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  bitState = _RAND_38[4:0];
+  _RAND_39 = {1{`RANDOM}};
+  arbLost = _RAND_39[0:0];
+  _RAND_40 = {1{`RANDOM}};
+  load = _RAND_40[0:0];
+  _RAND_41 = {1{`RANDOM}};
+  shift = _RAND_41[0:0];
+  _RAND_42 = {1{`RANDOM}};
+  cmdAck = _RAND_42[0:0];
+  _RAND_43 = {1{`RANDOM}};
+  receivedAck = _RAND_43[0:0];
+  _RAND_44 = {1{`RANDOM}};
+  bitCnt = _RAND_44[2:0];
+  _RAND_45 = {1{`RANDOM}};
+  byteState = _RAND_45[2:0];
+  _RAND_46 = {1{`RANDOM}};
+  statusReadReady = _RAND_46[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockSinkDomain_14(
+  output        auto_i2c_1_int_xing_out_sync_0,
+  output        auto_i2c_1_control_xing_in_a_ready,
+  input         auto_i2c_1_control_xing_in_a_valid,
+  input  [2:0]  auto_i2c_1_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_i2c_1_control_xing_in_a_bits_param,
+  input  [1:0]  auto_i2c_1_control_xing_in_a_bits_size,
+  input  [6:0]  auto_i2c_1_control_xing_in_a_bits_source,
+  input  [28:0] auto_i2c_1_control_xing_in_a_bits_address,
+  input  [3:0]  auto_i2c_1_control_xing_in_a_bits_mask,
+  input  [31:0] auto_i2c_1_control_xing_in_a_bits_data,
+  input         auto_i2c_1_control_xing_in_a_bits_corrupt,
+  input         auto_i2c_1_control_xing_in_d_ready,
+  output        auto_i2c_1_control_xing_in_d_valid,
+  output [2:0]  auto_i2c_1_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_i2c_1_control_xing_in_d_bits_size,
+  output [6:0]  auto_i2c_1_control_xing_in_d_bits_source,
+  output [31:0] auto_i2c_1_control_xing_in_d_bits_data,
+  input         auto_i2c_1_io_out_scl_in,
+  output        auto_i2c_1_io_out_scl_oe,
+  input         auto_i2c_1_io_out_sda_in,
+  output        auto_i2c_1_io_out_sda_oe,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  i2c_1_clock; // @[I2C.scala 597:49]
+  wire  i2c_1_reset; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_int_xing_out_sync_0; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_control_xing_in_a_ready; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_control_xing_in_a_valid; // @[I2C.scala 597:49]
+  wire [2:0] i2c_1_auto_control_xing_in_a_bits_opcode; // @[I2C.scala 597:49]
+  wire [2:0] i2c_1_auto_control_xing_in_a_bits_param; // @[I2C.scala 597:49]
+  wire [1:0] i2c_1_auto_control_xing_in_a_bits_size; // @[I2C.scala 597:49]
+  wire [6:0] i2c_1_auto_control_xing_in_a_bits_source; // @[I2C.scala 597:49]
+  wire [28:0] i2c_1_auto_control_xing_in_a_bits_address; // @[I2C.scala 597:49]
+  wire [3:0] i2c_1_auto_control_xing_in_a_bits_mask; // @[I2C.scala 597:49]
+  wire [31:0] i2c_1_auto_control_xing_in_a_bits_data; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_control_xing_in_a_bits_corrupt; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_control_xing_in_d_ready; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_control_xing_in_d_valid; // @[I2C.scala 597:49]
+  wire [2:0] i2c_1_auto_control_xing_in_d_bits_opcode; // @[I2C.scala 597:49]
+  wire [1:0] i2c_1_auto_control_xing_in_d_bits_size; // @[I2C.scala 597:49]
+  wire [6:0] i2c_1_auto_control_xing_in_d_bits_source; // @[I2C.scala 597:49]
+  wire [31:0] i2c_1_auto_control_xing_in_d_bits_data; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_io_out_scl_in; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_io_out_scl_oe; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_io_out_sda_in; // @[I2C.scala 597:49]
+  wire  i2c_1_auto_io_out_sda_oe; // @[I2C.scala 597:49]
+  TLI2C_1 i2c_1 ( // @[I2C.scala 597:49]
+    .clock(i2c_1_clock),
+    .reset(i2c_1_reset),
+    .auto_int_xing_out_sync_0(i2c_1_auto_int_xing_out_sync_0),
+    .auto_control_xing_in_a_ready(i2c_1_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(i2c_1_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(i2c_1_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(i2c_1_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(i2c_1_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(i2c_1_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(i2c_1_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(i2c_1_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(i2c_1_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(i2c_1_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(i2c_1_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(i2c_1_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(i2c_1_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(i2c_1_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(i2c_1_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(i2c_1_auto_control_xing_in_d_bits_data),
+    .auto_io_out_scl_in(i2c_1_auto_io_out_scl_in),
+    .auto_io_out_scl_oe(i2c_1_auto_io_out_scl_oe),
+    .auto_io_out_sda_in(i2c_1_auto_io_out_sda_in),
+    .auto_io_out_sda_oe(i2c_1_auto_io_out_sda_oe)
+  );
+  assign auto_i2c_1_int_xing_out_sync_0 = i2c_1_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_i2c_1_control_xing_in_a_ready = i2c_1_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_i2c_1_control_xing_in_d_valid = i2c_1_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_i2c_1_control_xing_in_d_bits_opcode = i2c_1_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_i2c_1_control_xing_in_d_bits_size = i2c_1_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_i2c_1_control_xing_in_d_bits_source = i2c_1_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_i2c_1_control_xing_in_d_bits_data = i2c_1_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_i2c_1_io_out_scl_oe = i2c_1_auto_io_out_scl_oe; // @[LazyModule.scala 311:12]
+  assign auto_i2c_1_io_out_sda_oe = i2c_1_auto_io_out_sda_oe; // @[LazyModule.scala 311:12]
+  assign i2c_1_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign i2c_1_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_valid = auto_i2c_1_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_bits_opcode = auto_i2c_1_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_bits_param = auto_i2c_1_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_bits_size = auto_i2c_1_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_bits_source = auto_i2c_1_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_bits_address = auto_i2c_1_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_bits_mask = auto_i2c_1_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_bits_data = auto_i2c_1_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_a_bits_corrupt = auto_i2c_1_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_control_xing_in_d_ready = auto_i2c_1_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign i2c_1_auto_io_out_scl_in = auto_i2c_1_io_out_scl_in; // @[LazyModule.scala 311:12]
+  assign i2c_1_auto_io_out_sda_in = auto_i2c_1_io_out_sda_in; // @[LazyModule.scala 311:12]
+endmodule
+module TLMonitor_72(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [2:0]  io_in_a_bits_opcode,
+  input  [2:0]  io_in_a_bits_param,
+  input  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [16:0] io_in_a_bits_address,
+  input  [3:0]  io_in_a_bits_mask,
+  input         io_in_a_bits_corrupt,
+  input         io_in_d_ready,
+  input         io_in_d_valid,
+  input  [1:0]  io_in_d_bits_size,
+  input  [6:0]  io_in_d_bits_source
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [95:0] _RAND_9;
+  reg [383:0] _RAND_10;
+  reg [383:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+`endif // RANDOMIZE_REG_INIT
+  wire [31:0] plusarg_reader_out; // @[PlusArg.scala 80:11]
+  wire [31:0] plusarg_reader_1_out; // @[PlusArg.scala 80:11]
+  wire  _T_2 = ~reset; // @[Monitor.scala 42:11]
+  wire  _source_ok_T_4 = io_in_a_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire [4:0] _is_aligned_mask_T_1 = 5'h3 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [1:0] is_aligned_mask = ~_is_aligned_mask_T_1[1:0]; // @[package.scala 234:46]
+  wire [16:0] _GEN_71 = {{15'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [16:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 17'h0; // @[Edges.scala 20:24]
+  wire  mask_sizeOH_shiftAmount = io_in_a_bits_size[0]; // @[OneHot.scala 63:49]
+  wire [1:0] _mask_sizeOH_T_1 = 2'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [1:0] mask_sizeOH = _mask_sizeOH_T_1 | 2'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h2; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[1]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[1]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_acc = _mask_T | mask_size & mask_nbit; // @[Misc.scala 214:29]
+  wire  mask_acc_1 = _mask_T | mask_size & mask_bit; // @[Misc.scala 214:29]
+  wire  mask_size_1 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_1 = ~mask_bit_1; // @[Misc.scala 210:20]
+  wire  mask_eq_2 = mask_nbit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_2 = mask_acc | mask_size_1 & mask_eq_2; // @[Misc.scala 214:29]
+  wire  mask_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_3 = mask_acc | mask_size_1 & mask_eq_3; // @[Misc.scala 214:29]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_4 = mask_acc_1 | mask_size_1 & mask_eq_4; // @[Misc.scala 214:29]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_acc_5 = mask_acc_1 | mask_size_1 & mask_eq_5; // @[Misc.scala 214:29]
+  wire [3:0] mask = {mask_acc_5,mask_acc_4,mask_acc_3,mask_acc_2}; // @[Cat.scala 31:58]
+  wire  _T_10 = ~_source_ok_T_4; // @[Monitor.scala 63:7]
+  wire  _T_20 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [16:0] _T_33 = io_in_a_bits_address ^ 17'h10000; // @[Parameters.scala 137:31]
+  wire [17:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [17:0] _T_36 = $signed(_T_34) & -18'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 18'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [3:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 4'h0; // @[Monitor.scala 88:31]
+  wire  _T_78 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_82 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_135 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_148 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_164 = io_in_a_bits_size <= 2'h2; // @[Parameters.scala 92:42]
+  wire  _T_172 = _T_164 & _T_37; // @[Parameters.scala 670:56]
+  wire  _T_183 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_187 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_195 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_233 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [3:0] _T_267 = ~mask; // @[Monitor.scala 127:33]
+  wire [3:0] _T_268 = io_in_a_bits_mask & _T_267; // @[Monitor.scala 127:31]
+  wire  _T_269 = _T_268 == 4'h0; // @[Monitor.scala 127:40]
+  wire  _T_273 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_303 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_311 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_341 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_349 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_379 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_10 = io_in_d_bits_source <= 7'h5f; // @[Parameters.scala 57:20]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg  a_first_counter; // @[Edges.scala 228:27]
+  wire  a_first_counter1 = a_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first = ~a_first_counter; // @[Edges.scala 230:25]
+  reg [2:0] opcode; // @[Monitor.scala 384:22]
+  reg [2:0] param; // @[Monitor.scala 385:22]
+  reg [1:0] size; // @[Monitor.scala 386:22]
+  reg [6:0] source; // @[Monitor.scala 387:22]
+  reg [16:0] address; // @[Monitor.scala 388:22]
+  wire  _T_537 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_538 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_542 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_546 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_550 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_554 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  wire  d_first_done = io_in_d_ready & io_in_d_valid; // @[Decoupled.scala 50:35]
+  reg  d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first_counter1 = d_first_counter - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first = ~d_first_counter; // @[Edges.scala 230:25]
+  reg [1:0] size_1; // @[Monitor.scala 537:22]
+  reg [6:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_561 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_570 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_574 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [95:0] inflight; // @[Monitor.scala 611:27]
+  reg [383:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [383:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg  a_first_counter_1; // @[Edges.scala 228:27]
+  wire  a_first_counter1_1 = a_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = ~a_first_counter_1; // @[Edges.scala 230:25]
+  reg  d_first_counter_1; // @[Edges.scala 228:27]
+  wire  d_first_counter1_1 = d_first_counter_1 - 1'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = ~d_first_counter_1; // @[Edges.scala 230:25]
+  wire [8:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [9:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [383:0] _a_opcode_lookup_T_1 = inflight_opcodes >> _a_opcode_lookup_T; // @[Monitor.scala 634:44]
+  wire [15:0] _a_opcode_lookup_T_5 = 16'h10 - 16'h1; // @[Monitor.scala 609:57]
+  wire [383:0] _GEN_73 = {{368'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [383:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[383:1]}; // @[Monitor.scala 634:152]
+  wire [383:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [383:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [383:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[383:1]}; // @[Monitor.scala 638:144]
+  wire  _T_588 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [127:0] _a_set_wo_ready_T = 128'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_591 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] _a_opcodes_set_interm_T = {io_in_a_bits_opcode, 1'h0}; // @[Monitor.scala 654:53]
+  wire [3:0] _a_opcodes_set_interm_T_1 = _a_opcodes_set_interm_T | 4'h1; // @[Monitor.scala 654:61]
+  wire [2:0] _a_sizes_set_interm_T = {io_in_a_bits_size, 1'h0}; // @[Monitor.scala 655:51]
+  wire [2:0] _a_sizes_set_interm_T_1 = _a_sizes_set_interm_T | 3'h1; // @[Monitor.scala 655:59]
+  wire [8:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [9:0] _a_opcodes_set_T = {{1'd0}, _GEN_78}; // @[Monitor.scala 656:79]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? _a_opcodes_set_interm_T_1 : 4'h0; // @[Monitor.scala 652:72 654:28]
+  wire [1026:0] _GEN_1 = {{1023'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [1026:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [2:0] a_sizes_set_interm = a_first_done & a_first_1 ? _a_sizes_set_interm_T_1 : 3'h0; // @[Monitor.scala 652:72 655:28]
+  wire [1025:0] _GEN_2 = {{1023'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [1025:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [95:0] _T_593 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_595 = ~_T_593[0]; // @[Monitor.scala 658:17]
+  wire [127:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 128'h0; // @[Monitor.scala 652:72 653:28]
+  wire [1026:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 1027'h0; // @[Monitor.scala 652:72 656:28]
+  wire [1025:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 1026'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_599 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [127:0] _d_clr_wo_ready_T = 128'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [1038:0] _GEN_3 = {{1023'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [1038:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [127:0] _GEN_22 = d_first_done & d_first_1 ? _d_clr_wo_ready_T : 128'h0; // @[Monitor.scala 675:91 676:21]
+  wire [1038:0] _GEN_23 = d_first_done & d_first_1 ? _d_opcodes_clr_T_5 : 1039'h0; // @[Monitor.scala 675:91 677:21]
+  wire  _same_cycle_resp_T_2 = io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:113]
+  wire  same_cycle_resp = _T_588 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [95:0] _T_612 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_614 = _T_612[0] | same_cycle_resp; // @[Monitor.scala 682:49]
+  wire [2:0] _GEN_27 = 3'h2 == io_in_a_bits_opcode ? 3'h1 : 3'h0; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_28 = 3'h3 == io_in_a_bits_opcode ? 3'h1 : _GEN_27; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_29 = 3'h4 == io_in_a_bits_opcode ? 3'h1 : _GEN_28; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_30 = 3'h5 == io_in_a_bits_opcode ? 3'h2 : _GEN_29; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_31 = 3'h6 == io_in_a_bits_opcode ? 3'h4 : _GEN_30; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_32 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_31; // @[Monitor.scala 685:{38,38}]
+  wire [2:0] _GEN_39 = 3'h6 == io_in_a_bits_opcode ? 3'h5 : _GEN_30; // @[Monitor.scala 686:{39,39}]
+  wire [2:0] _GEN_40 = 3'h7 == io_in_a_bits_opcode ? 3'h4 : _GEN_39; // @[Monitor.scala 686:{39,39}]
+  wire  _T_619 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_620 = 3'h1 == _GEN_32 | _T_619; // @[Monitor.scala 685:77]
+  wire  _T_624 = io_in_a_bits_size == io_in_d_bits_size; // @[Monitor.scala 687:36]
+  wire [3:0] a_opcode_lookup = _a_opcode_lookup_T_7[3:0];
+  wire [2:0] _GEN_43 = 3'h2 == a_opcode_lookup[2:0] ? 3'h1 : 3'h0; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_44 = 3'h3 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_43; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_45 = 3'h4 == a_opcode_lookup[2:0] ? 3'h1 : _GEN_44; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_46 = 3'h5 == a_opcode_lookup[2:0] ? 3'h2 : _GEN_45; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_47 = 3'h6 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_46; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_48 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_47; // @[Monitor.scala 689:{38,38}]
+  wire [2:0] _GEN_55 = 3'h6 == a_opcode_lookup[2:0] ? 3'h5 : _GEN_46; // @[Monitor.scala 690:{38,38}]
+  wire [2:0] _GEN_56 = 3'h7 == a_opcode_lookup[2:0] ? 3'h4 : _GEN_55; // @[Monitor.scala 690:{38,38}]
+  wire  _T_631 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_632 = 3'h1 == _GEN_48 | _T_631; // @[Monitor.scala 689:72]
+  wire [3:0] a_size_lookup = _a_size_lookup_T_7[3:0];
+  wire [3:0] _GEN_82 = {{2'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_636 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_644 = _T_599 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_648 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [95:0] a_set = _GEN_16[95:0];
+  wire [95:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [95:0] d_clr = _GEN_22[95:0];
+  wire [95:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [95:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [383:0] a_opcodes_set = _GEN_19[383:0];
+  wire [383:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [383:0] d_opcodes_clr = _GEN_23[383:0];
+  wire [383:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [383:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [383:0] a_sizes_set = _GEN_20[383:0];
+  wire [383:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [383:0] _inflight_sizes_T_2 = _inflight_sizes_T & _inflight_opcodes_T_1; // @[Monitor.scala 704:54]
+  reg [31:0] watchdog; // @[Monitor.scala 706:27]
+  wire  _T_657 = ~(|inflight) | plusarg_reader_out == 32'h0 | watchdog < plusarg_reader_out; // @[Monitor.scala 709:47]
+  wire [31:0] _watchdog_T_1 = watchdog + 32'h1; // @[Monitor.scala 711:26]
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_out)
+  );
+  plusarg_reader #(.FORMAT("tilelink_timeout=%d"), .DEFAULT(0), .WIDTH(32)) plusarg_reader_1 ( // @[PlusArg.scala 80:11]
+    .out(plusarg_reader_1_out)
+  );
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first) begin // @[Edges.scala 235:21]
+        a_first_counter <= 1'h0;
+      end else begin
+        a_first_counter <= a_first_counter1;
+      end
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      opcode <= io_in_a_bits_opcode; // @[Monitor.scala 397:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      param <= io_in_a_bits_param; // @[Monitor.scala 398:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      size <= io_in_a_bits_size; // @[Monitor.scala 399:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      source <= io_in_a_bits_source; // @[Monitor.scala 400:15]
+    end
+    if (a_first_done & a_first) begin // @[Monitor.scala 396:32]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first) begin // @[Edges.scala 235:21]
+        d_first_counter <= 1'h0;
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (d_first_done & d_first) begin // @[Monitor.scala 549:32]
+      source_1 <= io_in_d_bits_source; // @[Monitor.scala 553:15]
+    end
+    if (reset) begin // @[Monitor.scala 611:27]
+      inflight <= 96'h0; // @[Monitor.scala 611:27]
+    end else begin
+      inflight <= _inflight_T_2; // @[Monitor.scala 702:14]
+    end
+    if (reset) begin // @[Monitor.scala 613:35]
+      inflight_opcodes <= 384'h0; // @[Monitor.scala 613:35]
+    end else begin
+      inflight_opcodes <= _inflight_opcodes_T_2; // @[Monitor.scala 703:22]
+    end
+    if (reset) begin // @[Monitor.scala 615:33]
+      inflight_sizes <= 384'h0; // @[Monitor.scala 615:33]
+    end else begin
+      inflight_sizes <= _inflight_sizes_T_2; // @[Monitor.scala 704:20]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      a_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (a_first_done) begin // @[Edges.scala 234:17]
+      if (a_first_1) begin // @[Edges.scala 235:21]
+        a_first_counter_1 <= 1'h0;
+      end else begin
+        a_first_counter_1 <= a_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter_1 <= 1'h0; // @[Edges.scala 228:27]
+    end else if (d_first_done) begin // @[Edges.scala 234:17]
+      if (d_first_1) begin // @[Edges.scala 235:21]
+        d_first_counter_1 <= 1'h0;
+      end else begin
+        d_first_counter_1 <= d_first_counter1_1;
+      end
+    end
+    if (reset) begin // @[Monitor.scala 706:27]
+      watchdog <= 32'h0; // @[Monitor.scala 706:27]
+    end else if (a_first_done | d_first_done) begin // @[Monitor.scala 712:47]
+      watchdog <= 32'h0; // @[Monitor.scala 712:58]
+    end else begin
+      watchdog <= _watchdog_T_1; // @[Monitor.scala 711:14]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_20 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_20 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_mask_T & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_69 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_69) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_135 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_74 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_74) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_82 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_82 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_172 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_172) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_148 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_148 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_195 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_195 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_233 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_233 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_233 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_233 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_233 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_233 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_183 & (io_in_a_valid & _T_233 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_233 & ~reset & ~_T_183) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_269 & (io_in_a_valid & _T_233 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_233 & ~reset & ~_T_269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_273 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_273 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_273 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_273 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_273 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_273 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_303 & (io_in_a_valid & _T_273 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_273 & ~reset & ~_T_303) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_273 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_273 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_311 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_311 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_311 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_311 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_341 & (io_in_a_valid & _T_311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_311 & ~reset & ~_T_341) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_311 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_311 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_349 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_349 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_10 & (io_in_a_valid & _T_349 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_349 & ~reset & _T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_349 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_349 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_379 & (io_in_a_valid & _T_349 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_349 & ~reset & ~_T_379) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_187 & (io_in_a_valid & _T_349 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_349 & ~reset & ~_T_187) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_78 & (io_in_a_valid & _T_349 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_349 & ~reset & ~_T_78) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_source_ok_T_10 & (io_in_d_valid & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_2 & ~_source_ok_T_10) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_538 & (_T_537 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_537 & ~reset & ~_T_538) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_542 & (_T_537 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_537 & ~reset & ~_T_542) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_546 & (_T_537 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_537 & ~reset & ~_T_546) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_550 & (_T_537 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_537 & ~reset & ~_T_550) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_554 & (_T_537 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_537 & ~reset & ~_T_554) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_570 & (_T_561 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_561 & _T_2 & ~_T_570) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BootROM.scala:84:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_574 & (_T_561 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_561 & _T_2 & ~_T_574) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at BootROM.scala:84:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_595 & (_T_591 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & ~reset & ~_T_595) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_614 & (_T_599 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & _T_2 & ~_T_614) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BootROM.scala:84:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_620 & (_T_599 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & same_cycle_resp & _T_2 & ~_T_620) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BootROM.scala:84:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_624 & (_T_599 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & same_cycle_resp & _T_2 & ~_T_624) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BootROM.scala:84:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_632 & (_T_599 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & ~same_cycle_resp & _T_2 & ~_T_632) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BootROM.scala:84:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_636 & (_T_599 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_599 & ~same_cycle_resp & _T_2 & ~_T_636) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BootROM.scala:84:18)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_648 & (_T_644 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_644 & _T_2 & ~_T_648) begin
+          $fwrite(32'h80000002,"Assertion failed: ready check\n    at Monitor.scala:49 assert(cond, message)\n"); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_657 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_657) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BootROM.scala:84:18)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  a_first_counter = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  source = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[16:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[1:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[6:0];
+  _RAND_9 = {3{`RANDOM}};
+  inflight = _RAND_9[95:0];
+  _RAND_10 = {12{`RANDOM}};
+  inflight_opcodes = _RAND_10[383:0];
+  _RAND_11 = {12{`RANDOM}};
+  inflight_sizes = _RAND_11[383:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  watchdog = _RAND_14[31:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLROM(
+  input         clock,
+  input         reset,
+  output        auto_in_a_ready,
+  input         auto_in_a_valid,
+  input  [2:0]  auto_in_a_bits_opcode,
+  input  [2:0]  auto_in_a_bits_param,
+  input  [1:0]  auto_in_a_bits_size,
+  input  [6:0]  auto_in_a_bits_source,
+  input  [16:0] auto_in_a_bits_address,
+  input  [3:0]  auto_in_a_bits_mask,
+  input         auto_in_a_bits_corrupt,
+  input         auto_in_d_ready,
+  output        auto_in_d_valid,
+  output [1:0]  auto_in_d_bits_size,
+  output [6:0]  auto_in_d_bits_source,
+  output [31:0] auto_in_d_bits_data
+);
+  wire  monitor_clock; // @[Nodes.scala 24:25]
+  wire  monitor_reset; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_valid; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_opcode; // @[Nodes.scala 24:25]
+  wire [2:0] monitor_io_in_a_bits_param; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [16:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_io_in_a_bits_mask; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_a_bits_corrupt; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_ready; // @[Nodes.scala 24:25]
+  wire  monitor_io_in_d_valid; // @[Nodes.scala 24:25]
+  wire [1:0] monitor_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire [6:0] monitor_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire [10:0] index = auto_in_a_bits_address[12:2]; // @[BootROM.scala 49:34]
+  wire [2:0] high = auto_in_a_bits_address[15:13]; // @[BootROM.scala 50:68]
+  wire [31:0] _GEN_1 = 11'h1 == index ? 32'h0 : 32'h6f; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2 = 11'h2 == index ? 32'h0 : _GEN_1; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_3 = 11'h3 == index ? 32'h0 : _GEN_2; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_4 = 11'h4 == index ? 32'h0 : _GEN_3; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_5 = 11'h5 == index ? 32'h0 : _GEN_4; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_6 = 11'h6 == index ? 32'h0 : _GEN_5; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_7 = 11'h7 == index ? 32'h0 : _GEN_6; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_8 = 11'h8 == index ? 32'h0 : _GEN_7; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_9 = 11'h9 == index ? 32'h0 : _GEN_8; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_10 = 11'ha == index ? 32'h0 : _GEN_9; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_11 = 11'hb == index ? 32'h0 : _GEN_10; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_12 = 11'hc == index ? 32'h0 : _GEN_11; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_13 = 11'hd == index ? 32'h0 : _GEN_12; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_14 = 11'he == index ? 32'h0 : _GEN_13; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_15 = 11'hf == index ? 32'h0 : _GEN_14; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_16 = 11'h10 == index ? 32'h8002137 : _GEN_15; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_17 = 11'h11 == index ? 32'hff010113 : _GEN_16; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_18 = 11'h12 == index ? 32'h1fff0097 : _GEN_17; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_19 = 11'h13 == index ? 32'hfb8080e7 : _GEN_18; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_20 = 11'h14 == index ? 32'h6f : _GEN_19; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_21 = 11'h15 == index ? 32'hedfe0dd0 : _GEN_20; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_22 = 11'h16 == index ? 32'ha5130000 : _GEN_21; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_23 = 11'h17 == index ? 32'h38000000 : _GEN_22; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_24 = 11'h18 == index ? 32'h44110000 : _GEN_23; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_25 = 11'h19 == index ? 32'h28000000 : _GEN_24; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_26 = 11'h1a == index ? 32'h11000000 : _GEN_25; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_27 = 11'h1b == index ? 32'h10000000 : _GEN_26; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_28 = 11'h1c == index ? 32'h0 : _GEN_27; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_29 = 11'h1d == index ? 32'h61020000 : _GEN_28; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_30 = 11'h1e == index ? 32'hc110000 : _GEN_29; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_31 = 11'h1f == index ? 32'h0 : _GEN_30; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_32 = 11'h20 == index ? 32'h0 : _GEN_31; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_33 = 11'h21 == index ? 32'h0 : _GEN_32; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_34 = 11'h22 == index ? 32'h0 : _GEN_33; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_35 = 11'h23 == index ? 32'h1000000 : _GEN_34; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_36 = 11'h24 == index ? 32'h0 : _GEN_35; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_37 = 11'h25 == index ? 32'h3000000 : _GEN_36; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_38 = 11'h26 == index ? 32'h4000000 : _GEN_37; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_39 = 11'h27 == index ? 32'h0 : _GEN_38; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_40 = 11'h28 == index ? 32'h1000000 : _GEN_39; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_41 = 11'h29 == index ? 32'h3000000 : _GEN_40; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_42 = 11'h2a == index ? 32'h4000000 : _GEN_41; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_43 = 11'h2b == index ? 32'hf000000 : _GEN_42; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_44 = 11'h2c == index ? 32'h1000000 : _GEN_43; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_45 = 11'h2d == index ? 32'h3000000 : _GEN_44; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_46 = 11'h2e == index ? 32'h21000000 : _GEN_45; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_47 = 11'h2f == index ? 32'h1b000000 : _GEN_46; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_48 = 11'h30 == index ? 32'h65657266 : _GEN_47; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_49 = 11'h31 == index ? 32'h70696863 : _GEN_48; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_50 = 11'h32 == index ? 32'h6f722c73 : _GEN_49; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_51 = 11'h33 == index ? 32'h74656b63 : _GEN_50; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_52 = 11'h34 == index ? 32'h70696863 : _GEN_51; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_53 = 11'h35 == index ? 32'h6b6e752d : _GEN_52; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_54 = 11'h36 == index ? 32'h6e776f6e : _GEN_53; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_55 = 11'h37 == index ? 32'h7665642d : _GEN_54; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_56 = 11'h38 == index ? 32'h0 : _GEN_55; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_57 = 11'h39 == index ? 32'h3000000 : _GEN_56; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_58 = 11'h3a == index ? 32'h1d000000 : _GEN_57; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_59 = 11'h3b == index ? 32'h26000000 : _GEN_58; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_60 = 11'h3c == index ? 32'h65657266 : _GEN_59; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_61 = 11'h3d == index ? 32'h70696863 : _GEN_60; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_62 = 11'h3e == index ? 32'h6f722c73 : _GEN_61; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_63 = 11'h3f == index ? 32'h74656b63 : _GEN_62; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_64 = 11'h40 == index ? 32'h70696863 : _GEN_63; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_65 = 11'h41 == index ? 32'h6b6e752d : _GEN_64; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_66 = 11'h42 == index ? 32'h6e776f6e : _GEN_65; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_67 = 11'h43 == index ? 32'h0 : _GEN_66; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_68 = 11'h44 == index ? 32'h1000000 : _GEN_67; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_69 = 11'h45 == index ? 32'h61696c61 : _GEN_68; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_70 = 11'h46 == index ? 32'h736573 : _GEN_69; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_71 = 11'h47 == index ? 32'h3000000 : _GEN_70; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_72 = 11'h48 == index ? 32'h15000000 : _GEN_71; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_73 = 11'h49 == index ? 32'h2c000000 : _GEN_72; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_74 = 11'h4a == index ? 32'h636f732f : _GEN_73; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_75 = 11'h4b == index ? 32'h7265732f : _GEN_74; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_76 = 11'h4c == index ? 32'h406c6169 : _GEN_75; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_77 = 11'h4d == index ? 32'h31303031 : _GEN_76; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_78 = 11'h4e == index ? 32'h30303033 : _GEN_77; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_79 = 11'h4f == index ? 32'h0 : _GEN_78; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_80 = 11'h50 == index ? 32'h3000000 : _GEN_79; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_81 = 11'h51 == index ? 32'h15000000 : _GEN_80; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_82 = 11'h52 == index ? 32'h34000000 : _GEN_81; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_83 = 11'h53 == index ? 32'h636f732f : _GEN_82; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_84 = 11'h54 == index ? 32'h7265732f : _GEN_83; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_85 = 11'h55 == index ? 32'h406c6169 : _GEN_84; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_86 = 11'h56 == index ? 32'h32303031 : _GEN_85; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_87 = 11'h57 == index ? 32'h30303033 : _GEN_86; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_88 = 11'h58 == index ? 32'h0 : _GEN_87; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_89 = 11'h59 == index ? 32'h3000000 : _GEN_88; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_90 = 11'h5a == index ? 32'h15000000 : _GEN_89; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_91 = 11'h5b == index ? 32'h3c000000 : _GEN_90; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_92 = 11'h5c == index ? 32'h636f732f : _GEN_91; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_93 = 11'h5d == index ? 32'h7265732f : _GEN_92; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_94 = 11'h5e == index ? 32'h406c6169 : _GEN_93; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_95 = 11'h5f == index ? 32'h33303031 : _GEN_94; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_96 = 11'h60 == index ? 32'h30303033 : _GEN_95; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_97 = 11'h61 == index ? 32'h0 : _GEN_96; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_98 = 11'h62 == index ? 32'h3000000 : _GEN_97; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_99 = 11'h63 == index ? 32'h15000000 : _GEN_98; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_100 = 11'h64 == index ? 32'h44000000 : _GEN_99; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_101 = 11'h65 == index ? 32'h636f732f : _GEN_100; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_102 = 11'h66 == index ? 32'h7265732f : _GEN_101; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_103 = 11'h67 == index ? 32'h406c6169 : _GEN_102; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_104 = 11'h68 == index ? 32'h34303031 : _GEN_103; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_105 = 11'h69 == index ? 32'h30303033 : _GEN_104; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_106 = 11'h6a == index ? 32'h0 : _GEN_105; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_107 = 11'h6b == index ? 32'h3000000 : _GEN_106; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_108 = 11'h6c == index ? 32'h15000000 : _GEN_107; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_109 = 11'h6d == index ? 32'h4c000000 : _GEN_108; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_110 = 11'h6e == index ? 32'h636f732f : _GEN_109; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_111 = 11'h6f == index ? 32'h7265732f : _GEN_110; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_112 = 11'h70 == index ? 32'h406c6169 : _GEN_111; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_113 = 11'h71 == index ? 32'h35303031 : _GEN_112; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_114 = 11'h72 == index ? 32'h30303033 : _GEN_113; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_115 = 11'h73 == index ? 32'h0 : _GEN_114; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_116 = 11'h74 == index ? 32'h2000000 : _GEN_115; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_117 = 11'h75 == index ? 32'h1000000 : _GEN_116; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_118 = 11'h76 == index ? 32'h73757063 : _GEN_117; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_119 = 11'h77 == index ? 32'h0 : _GEN_118; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_120 = 11'h78 == index ? 32'h3000000 : _GEN_119; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_121 = 11'h79 == index ? 32'h4000000 : _GEN_120; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_122 = 11'h7a == index ? 32'h0 : _GEN_121; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_123 = 11'h7b == index ? 32'h1000000 : _GEN_122; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_124 = 11'h7c == index ? 32'h3000000 : _GEN_123; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_125 = 11'h7d == index ? 32'h4000000 : _GEN_124; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_126 = 11'h7e == index ? 32'hf000000 : _GEN_125; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_127 = 11'h7f == index ? 32'h0 : _GEN_126; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_128 = 11'h80 == index ? 32'h3000000 : _GEN_127; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_129 = 11'h81 == index ? 32'h4000000 : _GEN_128; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_130 = 11'h82 == index ? 32'h54000000 : _GEN_129; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_131 = 11'h83 == index ? 32'h800000 : _GEN_130; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_132 = 11'h84 == index ? 32'h1000000 : _GEN_131; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_133 = 11'h85 == index ? 32'h40757063 : _GEN_132; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_134 = 11'h86 == index ? 32'h30 : _GEN_133; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_135 = 11'h87 == index ? 32'h3000000 : _GEN_134; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_136 = 11'h88 == index ? 32'h4000000 : _GEN_135; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_137 = 11'h89 == index ? 32'h67000000 : _GEN_136; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_138 = 11'h8a == index ? 32'h0 : _GEN_137; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_139 = 11'h8b == index ? 32'h3000000 : _GEN_138; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_140 = 11'h8c == index ? 32'h15000000 : _GEN_139; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_141 = 11'h8d == index ? 32'h1b000000 : _GEN_140; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_142 = 11'h8e == index ? 32'h69666973 : _GEN_141; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_143 = 11'h8f == index ? 32'h722c6576 : _GEN_142; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_144 = 11'h90 == index ? 32'h656b636f : _GEN_143; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_145 = 11'h91 == index ? 32'h72003074 : _GEN_144; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_146 = 11'h92 == index ? 32'h76637369 : _GEN_145; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_147 = 11'h93 == index ? 32'h0 : _GEN_146; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_148 = 11'h94 == index ? 32'h3000000 : _GEN_147; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_149 = 11'h95 == index ? 32'h4000000 : _GEN_148; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_150 = 11'h96 == index ? 32'h77000000 : _GEN_149; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_151 = 11'h97 == index ? 32'h40000000 : _GEN_150; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_152 = 11'h98 == index ? 32'h3000000 : _GEN_151; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_153 = 11'h99 == index ? 32'h4000000 : _GEN_152; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_154 = 11'h9a == index ? 32'h8a000000 : _GEN_153; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_155 = 11'h9b == index ? 32'h40000000 : _GEN_154; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_156 = 11'h9c == index ? 32'h3000000 : _GEN_155; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_157 = 11'h9d == index ? 32'h4000000 : _GEN_156; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_158 = 11'h9e == index ? 32'h97000000 : _GEN_157; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_159 = 11'h9f == index ? 32'h100000 : _GEN_158; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_160 = 11'ha0 == index ? 32'h3000000 : _GEN_159; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_161 = 11'ha1 == index ? 32'h4000000 : _GEN_160; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_162 = 11'ha2 == index ? 32'ha4000000 : _GEN_161; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_163 = 11'ha3 == index ? 32'h757063 : _GEN_162; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_164 = 11'ha4 == index ? 32'h3000000 : _GEN_163; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_165 = 11'ha5 == index ? 32'h4000000 : _GEN_164; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_166 = 11'ha6 == index ? 32'hb0000000 : _GEN_165; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_167 = 11'ha7 == index ? 32'h2000000 : _GEN_166; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_168 = 11'ha8 == index ? 32'h3000000 : _GEN_167; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_169 = 11'ha9 == index ? 32'h4000000 : _GEN_168; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_170 = 11'haa == index ? 32'hcf000000 : _GEN_169; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_171 = 11'hab == index ? 32'h40000000 : _GEN_170; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_172 = 11'hac == index ? 32'h3000000 : _GEN_171; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_173 = 11'had == index ? 32'h4000000 : _GEN_172; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_174 = 11'hae == index ? 32'he2000000 : _GEN_173; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_175 = 11'haf == index ? 32'h80000000 : _GEN_174; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_176 = 11'hb0 == index ? 32'h3000000 : _GEN_175; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_177 = 11'hb1 == index ? 32'h4000000 : _GEN_176; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_178 = 11'hb2 == index ? 32'hef000000 : _GEN_177; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_179 = 11'hb3 == index ? 32'h400000 : _GEN_178; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_180 = 11'hb4 == index ? 32'h3000000 : _GEN_179; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_181 = 11'hb5 == index ? 32'h4000000 : _GEN_180; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_182 = 11'hb6 == index ? 32'hfc000000 : _GEN_181; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_183 = 11'hb7 == index ? 32'h1000000 : _GEN_182; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_184 = 11'hb8 == index ? 32'h3000000 : _GEN_183; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_185 = 11'hb9 == index ? 32'h4000000 : _GEN_184; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_186 = 11'hba == index ? 32'hd010000 : _GEN_185; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_187 = 11'hbb == index ? 32'h0 : _GEN_186; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_188 = 11'hbc == index ? 32'h3000000 : _GEN_187; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_189 = 11'hbd == index ? 32'h9000000 : _GEN_188; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_190 = 11'hbe == index ? 32'h11010000 : _GEN_189; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_191 = 11'hbf == index ? 32'h32337672 : _GEN_190; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_192 = 11'hc0 == index ? 32'h63616d69 : _GEN_191; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_193 = 11'hc1 == index ? 32'h0 : _GEN_192; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_194 = 11'hc2 == index ? 32'h3000000 : _GEN_193; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_195 = 11'hc3 == index ? 32'h4000000 : _GEN_194; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_196 = 11'hc4 == index ? 32'h1b010000 : _GEN_195; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_197 = 11'hc5 == index ? 32'h4000000 : _GEN_196; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_198 = 11'hc6 == index ? 32'h3000000 : _GEN_197; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_199 = 11'hc7 == index ? 32'h4000000 : _GEN_198; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_200 = 11'hc8 == index ? 32'h30010000 : _GEN_199; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_201 = 11'hc9 == index ? 32'h8000000 : _GEN_200; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_202 = 11'hca == index ? 32'h3000000 : _GEN_201; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_203 = 11'hcb == index ? 32'h4000000 : _GEN_202; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_204 = 11'hcc == index ? 32'h41010000 : _GEN_203; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_205 = 11'hcd == index ? 32'h2000000 : _GEN_204; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_206 = 11'hce == index ? 32'h3000000 : _GEN_205; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_207 = 11'hcf == index ? 32'h5000000 : _GEN_206; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_208 = 11'hd0 == index ? 32'h4d010000 : _GEN_207; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_209 = 11'hd1 == index ? 32'h79616b6f : _GEN_208; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_210 = 11'hd2 == index ? 32'h0 : _GEN_209; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_211 = 11'hd3 == index ? 32'h3000000 : _GEN_210; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_212 = 11'hd4 == index ? 32'h4000000 : _GEN_211; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_213 = 11'hd5 == index ? 32'h54000000 : _GEN_212; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_214 = 11'hd6 == index ? 32'h800000 : _GEN_213; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_215 = 11'hd7 == index ? 32'h1000000 : _GEN_214; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_216 = 11'hd8 == index ? 32'h65746e69 : _GEN_215; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_217 = 11'hd9 == index ? 32'h70757272 : _GEN_216; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_218 = 11'hda == index ? 32'h6f632d74 : _GEN_217; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_219 = 11'hdb == index ? 32'h6f72746e : _GEN_218; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_220 = 11'hdc == index ? 32'h72656c6c : _GEN_219; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_221 = 11'hdd == index ? 32'h0 : _GEN_220; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_222 = 11'hde == index ? 32'h3000000 : _GEN_221; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_223 = 11'hdf == index ? 32'h4000000 : _GEN_222; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_224 = 11'he0 == index ? 32'h54010000 : _GEN_223; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_225 = 11'he1 == index ? 32'h1000000 : _GEN_224; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_226 = 11'he2 == index ? 32'h3000000 : _GEN_225; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_227 = 11'he3 == index ? 32'hf000000 : _GEN_226; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_228 = 11'he4 == index ? 32'h1b000000 : _GEN_227; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_229 = 11'he5 == index ? 32'h63736972 : _GEN_228; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_230 = 11'he6 == index ? 32'h70632c76 : _GEN_229; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_231 = 11'he7 == index ? 32'h6e692d75 : _GEN_230; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_232 = 11'he8 == index ? 32'h6374 : _GEN_231; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_233 = 11'he9 == index ? 32'h3000000 : _GEN_232; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_234 = 11'hea == index ? 32'h0 : _GEN_233; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_235 = 11'heb == index ? 32'h65010000 : _GEN_234; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_236 = 11'hec == index ? 32'h3000000 : _GEN_235; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_237 = 11'hed == index ? 32'h4000000 : _GEN_236; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_238 = 11'hee == index ? 32'h7a010000 : _GEN_237; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_239 = 11'hef == index ? 32'h4000000 : _GEN_238; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_240 = 11'hf0 == index ? 32'h2000000 : _GEN_239; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_241 = 11'hf1 == index ? 32'h2000000 : _GEN_240; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_242 = 11'hf2 == index ? 32'h2000000 : _GEN_241; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_243 = 11'hf3 == index ? 32'h1000000 : _GEN_242; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_244 = 11'hf4 == index ? 32'h636f73 : _GEN_243; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_245 = 11'hf5 == index ? 32'h3000000 : _GEN_244; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_246 = 11'hf6 == index ? 32'h4000000 : _GEN_245; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_247 = 11'hf7 == index ? 32'h0 : _GEN_246; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_248 = 11'hf8 == index ? 32'h1000000 : _GEN_247; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_249 = 11'hf9 == index ? 32'h3000000 : _GEN_248; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_250 = 11'hfa == index ? 32'h4000000 : _GEN_249; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_251 = 11'hfb == index ? 32'hf000000 : _GEN_250; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_252 = 11'hfc == index ? 32'h1000000 : _GEN_251; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_253 = 11'hfd == index ? 32'h3000000 : _GEN_252; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_254 = 11'hfe == index ? 32'h2c000000 : _GEN_253; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_255 = 11'hff == index ? 32'h1b000000 : _GEN_254; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_256 = 11'h100 == index ? 32'h65657266 : _GEN_255; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_257 = 11'h101 == index ? 32'h70696863 : _GEN_256; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_258 = 11'h102 == index ? 32'h6f722c73 : _GEN_257; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_259 = 11'h103 == index ? 32'h74656b63 : _GEN_258; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_260 = 11'h104 == index ? 32'h70696863 : _GEN_259; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_261 = 11'h105 == index ? 32'h6b6e752d : _GEN_260; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_262 = 11'h106 == index ? 32'h6e776f6e : _GEN_261; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_263 = 11'h107 == index ? 32'h636f732d : _GEN_262; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_264 = 11'h108 == index ? 32'h6d697300 : _GEN_263; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_265 = 11'h109 == index ? 32'h2d656c70 : _GEN_264; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_266 = 11'h10a == index ? 32'h737562 : _GEN_265; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_267 = 11'h10b == index ? 32'h3000000 : _GEN_266; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_268 = 11'h10c == index ? 32'h0 : _GEN_267; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_269 = 11'h10d == index ? 32'h82010000 : _GEN_268; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_270 = 11'h10e == index ? 32'h1000000 : _GEN_269; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_271 = 11'h10f == index ? 32'h406e6f61 : _GEN_270; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_272 = 11'h110 == index ? 32'h30303031 : _GEN_271; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_273 = 11'h111 == index ? 32'h30303030 : _GEN_272; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_274 = 11'h112 == index ? 32'h0 : _GEN_273; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_275 = 11'h113 == index ? 32'h3000000 : _GEN_274; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_276 = 11'h114 == index ? 32'hc000000 : _GEN_275; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_277 = 11'h115 == index ? 32'h1b000000 : _GEN_276; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_278 = 11'h116 == index ? 32'h69666973 : _GEN_277; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_279 = 11'h117 == index ? 32'h612c6576 : _GEN_278; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_280 = 11'h118 == index ? 32'h306e6f : _GEN_279; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_281 = 11'h119 == index ? 32'h3000000 : _GEN_280; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_282 = 11'h11a == index ? 32'h4000000 : _GEN_281; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_283 = 11'h11b == index ? 32'h89010000 : _GEN_282; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_284 = 11'h11c == index ? 32'h3000000 : _GEN_283; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_285 = 11'h11d == index ? 32'h3000000 : _GEN_284; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_286 = 11'h11e == index ? 32'h8000000 : _GEN_285; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_287 = 11'h11f == index ? 32'h9a010000 : _GEN_286; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_288 = 11'h120 == index ? 32'h1000000 : _GEN_287; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_289 = 11'h121 == index ? 32'h2000000 : _GEN_288; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_290 = 11'h122 == index ? 32'h3000000 : _GEN_289; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_291 = 11'h123 == index ? 32'h8000000 : _GEN_290; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_292 = 11'h124 == index ? 32'hd010000 : _GEN_291; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_293 = 11'h125 == index ? 32'h10 : _GEN_292; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_294 = 11'h126 == index ? 32'h100000 : _GEN_293; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_295 = 11'h127 == index ? 32'h3000000 : _GEN_294; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_296 = 11'h128 == index ? 32'h8000000 : _GEN_295; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_297 = 11'h129 == index ? 32'ha5010000 : _GEN_296; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_298 = 11'h12a == index ? 32'h746e6f63 : _GEN_297; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_299 = 11'h12b == index ? 32'h6c6f72 : _GEN_298; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_300 = 11'h12c == index ? 32'h2000000 : _GEN_299; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_301 = 11'h12d == index ? 32'h1000000 : _GEN_300; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_302 = 11'h12e == index ? 32'h6e696c63 : _GEN_301; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_303 = 11'h12f == index ? 32'h30324074 : _GEN_302; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_304 = 11'h130 == index ? 32'h30303030 : _GEN_303; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_305 = 11'h131 == index ? 32'h30 : _GEN_304; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_306 = 11'h132 == index ? 32'h3000000 : _GEN_305; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_307 = 11'h133 == index ? 32'hd000000 : _GEN_306; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_308 = 11'h134 == index ? 32'h1b000000 : _GEN_307; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_309 = 11'h135 == index ? 32'h63736972 : _GEN_308; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_310 = 11'h136 == index ? 32'h6c632c76 : _GEN_309; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_311 = 11'h137 == index ? 32'h30746e69 : _GEN_310; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_312 = 11'h138 == index ? 32'h0 : _GEN_311; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_313 = 11'h139 == index ? 32'h3000000 : _GEN_312; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_314 = 11'h13a == index ? 32'h10000000 : _GEN_313; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_315 = 11'h13b == index ? 32'haf010000 : _GEN_314; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_316 = 11'h13c == index ? 32'h4000000 : _GEN_315; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_317 = 11'h13d == index ? 32'h3000000 : _GEN_316; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_318 = 11'h13e == index ? 32'h4000000 : _GEN_317; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_319 = 11'h13f == index ? 32'h7000000 : _GEN_318; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_320 = 11'h140 == index ? 32'h3000000 : _GEN_319; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_321 = 11'h141 == index ? 32'h8000000 : _GEN_320; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_322 = 11'h142 == index ? 32'hd010000 : _GEN_321; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_323 = 11'h143 == index ? 32'h2 : _GEN_322; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_324 = 11'h144 == index ? 32'h100 : _GEN_323; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_325 = 11'h145 == index ? 32'h3000000 : _GEN_324; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_326 = 11'h146 == index ? 32'h8000000 : _GEN_325; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_327 = 11'h147 == index ? 32'ha5010000 : _GEN_326; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_328 = 11'h148 == index ? 32'h746e6f63 : _GEN_327; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_329 = 11'h149 == index ? 32'h6c6f72 : _GEN_328; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_330 = 11'h14a == index ? 32'h2000000 : _GEN_329; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_331 = 11'h14b == index ? 32'h1000000 : _GEN_330; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_332 = 11'h14c == index ? 32'h75626564 : _GEN_331; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_333 = 11'h14d == index ? 32'h6f632d67 : _GEN_332; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_334 = 11'h14e == index ? 32'h6f72746e : _GEN_333; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_335 = 11'h14f == index ? 32'h72656c6c : _GEN_334; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_336 = 11'h150 == index ? 32'h3040 : _GEN_335; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_337 = 11'h151 == index ? 32'h3000000 : _GEN_336; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_338 = 11'h152 == index ? 32'h21000000 : _GEN_337; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_339 = 11'h153 == index ? 32'h1b000000 : _GEN_338; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_340 = 11'h154 == index ? 32'h69666973 : _GEN_339; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_341 = 11'h155 == index ? 32'h642c6576 : _GEN_340; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_342 = 11'h156 == index ? 32'h67756265 : _GEN_341; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_343 = 11'h157 == index ? 32'h3331302d : _GEN_342; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_344 = 11'h158 == index ? 32'h73697200 : _GEN_343; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_345 = 11'h159 == index ? 32'h642c7663 : _GEN_344; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_346 = 11'h15a == index ? 32'h67756265 : _GEN_345; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_347 = 11'h15b == index ? 32'h3331302d : _GEN_346; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_348 = 11'h15c == index ? 32'h0 : _GEN_347; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_349 = 11'h15d == index ? 32'h3000000 : _GEN_348; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_350 = 11'h15e == index ? 32'h5000000 : _GEN_349; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_351 = 11'h15f == index ? 32'hc3010000 : _GEN_350; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_352 = 11'h160 == index ? 32'h6761746a : _GEN_351; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_353 = 11'h161 == index ? 32'h0 : _GEN_352; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_354 = 11'h162 == index ? 32'h3000000 : _GEN_353; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_355 = 11'h163 == index ? 32'h8000000 : _GEN_354; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_356 = 11'h164 == index ? 32'haf010000 : _GEN_355; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_357 = 11'h165 == index ? 32'h4000000 : _GEN_356; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_358 = 11'h166 == index ? 32'hffff0000 : _GEN_357; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_359 = 11'h167 == index ? 32'h3000000 : _GEN_358; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_360 = 11'h168 == index ? 32'h8000000 : _GEN_359; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_361 = 11'h169 == index ? 32'hd010000 : _GEN_360; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_362 = 11'h16a == index ? 32'h0 : _GEN_361; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_363 = 11'h16b == index ? 32'h100000 : _GEN_362; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_364 = 11'h16c == index ? 32'h3000000 : _GEN_363; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_365 = 11'h16d == index ? 32'h8000000 : _GEN_364; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_366 = 11'h16e == index ? 32'ha5010000 : _GEN_365; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_367 = 11'h16f == index ? 32'h746e6f63 : _GEN_366; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_368 = 11'h170 == index ? 32'h6c6f72 : _GEN_367; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_369 = 11'h171 == index ? 32'h2000000 : _GEN_368; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_370 = 11'h172 == index ? 32'h1000000 : _GEN_369; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_371 = 11'h173 == index ? 32'h6f727265 : _GEN_370; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_372 = 11'h174 == index ? 32'h65642d72 : _GEN_371; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_373 = 11'h175 == index ? 32'h65636976 : _GEN_372; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_374 = 11'h176 == index ? 32'h30303340 : _GEN_373; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_375 = 11'h177 == index ? 32'h30 : _GEN_374; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_376 = 11'h178 == index ? 32'h3000000 : _GEN_375; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_377 = 11'h179 == index ? 32'he000000 : _GEN_376; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_378 = 11'h17a == index ? 32'h1b000000 : _GEN_377; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_379 = 11'h17b == index ? 32'h69666973 : _GEN_378; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_380 = 11'h17c == index ? 32'h652c6576 : _GEN_379; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_381 = 11'h17d == index ? 32'h726f7272 : _GEN_380; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_382 = 11'h17e == index ? 32'h30 : _GEN_381; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_383 = 11'h17f == index ? 32'h3000000 : _GEN_382; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_384 = 11'h180 == index ? 32'h8000000 : _GEN_383; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_385 = 11'h181 == index ? 32'hd010000 : _GEN_384; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_386 = 11'h182 == index ? 32'h300000 : _GEN_385; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_387 = 11'h183 == index ? 32'h100000 : _GEN_386; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_388 = 11'h184 == index ? 32'h2000000 : _GEN_387; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_389 = 11'h185 == index ? 32'h1000000 : _GEN_388; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_390 = 11'h186 == index ? 32'h6f697067 : _GEN_389; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_391 = 11'h187 == index ? 32'h30303140 : _GEN_390; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_392 = 11'h188 == index ? 32'h30303231 : _GEN_391; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_393 = 11'h189 == index ? 32'h30 : _GEN_392; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_394 = 11'h18a == index ? 32'h3000000 : _GEN_393; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_395 = 11'h18b == index ? 32'h4000000 : _GEN_394; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_396 = 11'h18c == index ? 32'hd0010000 : _GEN_395; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_397 = 11'h18d == index ? 32'h2000000 : _GEN_396; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_398 = 11'h18e == index ? 32'h3000000 : _GEN_397; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_399 = 11'h18f == index ? 32'h4000000 : _GEN_398; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_400 = 11'h190 == index ? 32'h54010000 : _GEN_399; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_401 = 11'h191 == index ? 32'h2000000 : _GEN_400; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_402 = 11'h192 == index ? 32'h3000000 : _GEN_401; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_403 = 11'h193 == index ? 32'h4000000 : _GEN_402; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_404 = 11'h194 == index ? 32'hdc010000 : _GEN_403; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_405 = 11'h195 == index ? 32'h5000000 : _GEN_404; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_406 = 11'h196 == index ? 32'h3000000 : _GEN_405; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_407 = 11'h197 == index ? 32'h1a000000 : _GEN_406; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_408 = 11'h198 == index ? 32'h1b000000 : _GEN_407; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_409 = 11'h199 == index ? 32'h69666973 : _GEN_408; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_410 = 11'h19a == index ? 32'h672c6576 : _GEN_409; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_411 = 11'h19b == index ? 32'h306f6970 : _GEN_410; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_412 = 11'h19c == index ? 32'h66697300 : _GEN_411; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_413 = 11'h19d == index ? 32'h2c657669 : _GEN_412; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_414 = 11'h19e == index ? 32'h6f697067 : _GEN_413; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_415 = 11'h19f == index ? 32'h31 : _GEN_414; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_416 = 11'h1a0 == index ? 32'h3000000 : _GEN_415; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_417 = 11'h1a1 == index ? 32'h0 : _GEN_416; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_418 = 11'h1a2 == index ? 32'he3010000 : _GEN_417; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_419 = 11'h1a3 == index ? 32'h3000000 : _GEN_418; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_420 = 11'h1a4 == index ? 32'h0 : _GEN_419; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_421 = 11'h1a5 == index ? 32'h65010000 : _GEN_420; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_422 = 11'h1a6 == index ? 32'h3000000 : _GEN_421; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_423 = 11'h1a7 == index ? 32'h4000000 : _GEN_422; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_424 = 11'h1a8 == index ? 32'h89010000 : _GEN_423; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_425 = 11'h1a9 == index ? 32'h3000000 : _GEN_424; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_426 = 11'h1aa == index ? 32'h3000000 : _GEN_425; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_427 = 11'h1ab == index ? 32'h80000000 : _GEN_426; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_428 = 11'h1ac == index ? 32'h9a010000 : _GEN_427; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_429 = 11'h1ad == index ? 32'hb000000 : _GEN_428; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_430 = 11'h1ae == index ? 32'hc000000 : _GEN_429; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_431 = 11'h1af == index ? 32'hd000000 : _GEN_430; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_432 = 11'h1b0 == index ? 32'he000000 : _GEN_431; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_433 = 11'h1b1 == index ? 32'hf000000 : _GEN_432; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_434 = 11'h1b2 == index ? 32'h10000000 : _GEN_433; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_435 = 11'h1b3 == index ? 32'h11000000 : _GEN_434; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_436 = 11'h1b4 == index ? 32'h12000000 : _GEN_435; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_437 = 11'h1b5 == index ? 32'h13000000 : _GEN_436; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_438 = 11'h1b6 == index ? 32'h14000000 : _GEN_437; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_439 = 11'h1b7 == index ? 32'h15000000 : _GEN_438; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_440 = 11'h1b8 == index ? 32'h16000000 : _GEN_439; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_441 = 11'h1b9 == index ? 32'h17000000 : _GEN_440; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_442 = 11'h1ba == index ? 32'h18000000 : _GEN_441; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_443 = 11'h1bb == index ? 32'h19000000 : _GEN_442; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_444 = 11'h1bc == index ? 32'h1a000000 : _GEN_443; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_445 = 11'h1bd == index ? 32'h1b000000 : _GEN_444; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_446 = 11'h1be == index ? 32'h1c000000 : _GEN_445; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_447 = 11'h1bf == index ? 32'h1d000000 : _GEN_446; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_448 = 11'h1c0 == index ? 32'h1e000000 : _GEN_447; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_449 = 11'h1c1 == index ? 32'h1f000000 : _GEN_448; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_450 = 11'h1c2 == index ? 32'h20000000 : _GEN_449; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_451 = 11'h1c3 == index ? 32'h21000000 : _GEN_450; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_452 = 11'h1c4 == index ? 32'h22000000 : _GEN_451; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_453 = 11'h1c5 == index ? 32'h23000000 : _GEN_452; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_454 = 11'h1c6 == index ? 32'h24000000 : _GEN_453; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_455 = 11'h1c7 == index ? 32'h25000000 : _GEN_454; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_456 = 11'h1c8 == index ? 32'h26000000 : _GEN_455; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_457 = 11'h1c9 == index ? 32'h27000000 : _GEN_456; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_458 = 11'h1ca == index ? 32'h28000000 : _GEN_457; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_459 = 11'h1cb == index ? 32'h29000000 : _GEN_458; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_460 = 11'h1cc == index ? 32'h2a000000 : _GEN_459; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_461 = 11'h1cd == index ? 32'h3000000 : _GEN_460; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_462 = 11'h1ce == index ? 32'h8000000 : _GEN_461; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_463 = 11'h1cf == index ? 32'hd010000 : _GEN_462; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_464 = 11'h1d0 == index ? 32'h200110 : _GEN_463; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_465 = 11'h1d1 == index ? 32'h100000 : _GEN_464; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_466 = 11'h1d2 == index ? 32'h3000000 : _GEN_465; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_467 = 11'h1d3 == index ? 32'h8000000 : _GEN_466; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_468 = 11'h1d4 == index ? 32'ha5010000 : _GEN_467; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_469 = 11'h1d5 == index ? 32'h746e6f63 : _GEN_468; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_470 = 11'h1d6 == index ? 32'h6c6f72 : _GEN_469; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_471 = 11'h1d7 == index ? 32'h2000000 : _GEN_470; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_472 = 11'h1d8 == index ? 32'h1000000 : _GEN_471; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_473 = 11'h1d9 == index ? 32'h40633269 : _GEN_472; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_474 = 11'h1da == index ? 32'h31303031 : _GEN_473; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_475 = 11'h1db == index ? 32'h30303036 : _GEN_474; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_476 = 11'h1dc == index ? 32'h0 : _GEN_475; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_477 = 11'h1dd == index ? 32'h3000000 : _GEN_476; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_478 = 11'h1de == index ? 32'h4000000 : _GEN_477; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_479 = 11'h1df == index ? 32'hdc010000 : _GEN_478; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_480 = 11'h1e0 == index ? 32'h5000000 : _GEN_479; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_481 = 11'h1e1 == index ? 32'h3000000 : _GEN_480; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_482 = 11'h1e2 == index ? 32'hc000000 : _GEN_481; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_483 = 11'h1e3 == index ? 32'h1b000000 : _GEN_482; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_484 = 11'h1e4 == index ? 32'h69666973 : _GEN_483; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_485 = 11'h1e5 == index ? 32'h692c6576 : _GEN_484; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_486 = 11'h1e6 == index ? 32'h306332 : _GEN_485; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_487 = 11'h1e7 == index ? 32'h3000000 : _GEN_486; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_488 = 11'h1e8 == index ? 32'h4000000 : _GEN_487; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_489 = 11'h1e9 == index ? 32'h89010000 : _GEN_488; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_490 = 11'h1ea == index ? 32'h3000000 : _GEN_489; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_491 = 11'h1eb == index ? 32'h3000000 : _GEN_490; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_492 = 11'h1ec == index ? 32'h4000000 : _GEN_491; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_493 = 11'h1ed == index ? 32'h9a010000 : _GEN_492; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_494 = 11'h1ee == index ? 32'h37000000 : _GEN_493; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_495 = 11'h1ef == index ? 32'h3000000 : _GEN_494; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_496 = 11'h1f0 == index ? 32'h8000000 : _GEN_495; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_497 = 11'h1f1 == index ? 32'hd010000 : _GEN_496; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_498 = 11'h1f2 == index ? 32'h600110 : _GEN_497; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_499 = 11'h1f3 == index ? 32'h100000 : _GEN_498; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_500 = 11'h1f4 == index ? 32'h3000000 : _GEN_499; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_501 = 11'h1f5 == index ? 32'h8000000 : _GEN_500; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_502 = 11'h1f6 == index ? 32'ha5010000 : _GEN_501; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_503 = 11'h1f7 == index ? 32'h746e6f63 : _GEN_502; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_504 = 11'h1f8 == index ? 32'h6c6f72 : _GEN_503; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_505 = 11'h1f9 == index ? 32'h2000000 : _GEN_504; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_506 = 11'h1fa == index ? 32'h1000000 : _GEN_505; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_507 = 11'h1fb == index ? 32'h40633269 : _GEN_506; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_508 = 11'h1fc == index ? 32'h32303031 : _GEN_507; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_509 = 11'h1fd == index ? 32'h30303036 : _GEN_508; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_510 = 11'h1fe == index ? 32'h0 : _GEN_509; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_511 = 11'h1ff == index ? 32'h3000000 : _GEN_510; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_512 = 11'h200 == index ? 32'h4000000 : _GEN_511; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_513 = 11'h201 == index ? 32'hdc010000 : _GEN_512; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_514 = 11'h202 == index ? 32'h5000000 : _GEN_513; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_515 = 11'h203 == index ? 32'h3000000 : _GEN_514; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_516 = 11'h204 == index ? 32'hc000000 : _GEN_515; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_517 = 11'h205 == index ? 32'h1b000000 : _GEN_516; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_518 = 11'h206 == index ? 32'h69666973 : _GEN_517; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_519 = 11'h207 == index ? 32'h692c6576 : _GEN_518; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_520 = 11'h208 == index ? 32'h306332 : _GEN_519; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_521 = 11'h209 == index ? 32'h3000000 : _GEN_520; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_522 = 11'h20a == index ? 32'h4000000 : _GEN_521; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_523 = 11'h20b == index ? 32'h89010000 : _GEN_522; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_524 = 11'h20c == index ? 32'h3000000 : _GEN_523; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_525 = 11'h20d == index ? 32'h3000000 : _GEN_524; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_526 = 11'h20e == index ? 32'h4000000 : _GEN_525; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_527 = 11'h20f == index ? 32'h9a010000 : _GEN_526; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_528 = 11'h210 == index ? 32'h38000000 : _GEN_527; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_529 = 11'h211 == index ? 32'h3000000 : _GEN_528; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_530 = 11'h212 == index ? 32'h8000000 : _GEN_529; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_531 = 11'h213 == index ? 32'hd010000 : _GEN_530; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_532 = 11'h214 == index ? 32'h600210 : _GEN_531; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_533 = 11'h215 == index ? 32'h100000 : _GEN_532; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_534 = 11'h216 == index ? 32'h3000000 : _GEN_533; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_535 = 11'h217 == index ? 32'h8000000 : _GEN_534; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_536 = 11'h218 == index ? 32'ha5010000 : _GEN_535; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_537 = 11'h219 == index ? 32'h746e6f63 : _GEN_536; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_538 = 11'h21a == index ? 32'h6c6f72 : _GEN_537; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_539 = 11'h21b == index ? 32'h2000000 : _GEN_538; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_540 = 11'h21c == index ? 32'h1000000 : _GEN_539; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_541 = 11'h21d == index ? 32'h65746e69 : _GEN_540; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_542 = 11'h21e == index ? 32'h70757272 : _GEN_541; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_543 = 11'h21f == index ? 32'h6f632d74 : _GEN_542; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_544 = 11'h220 == index ? 32'h6f72746e : _GEN_543; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_545 = 11'h221 == index ? 32'h72656c6c : _GEN_544; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_546 = 11'h222 == index ? 32'h30306340 : _GEN_545; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_547 = 11'h223 == index ? 32'h30303030 : _GEN_546; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_548 = 11'h224 == index ? 32'h0 : _GEN_547; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_549 = 11'h225 == index ? 32'h3000000 : _GEN_548; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_550 = 11'h226 == index ? 32'h4000000 : _GEN_549; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_551 = 11'h227 == index ? 32'h54010000 : _GEN_550; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_552 = 11'h228 == index ? 32'h1000000 : _GEN_551; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_553 = 11'h229 == index ? 32'h3000000 : _GEN_552; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_554 = 11'h22a == index ? 32'hc000000 : _GEN_553; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_555 = 11'h22b == index ? 32'h1b000000 : _GEN_554; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_556 = 11'h22c == index ? 32'h63736972 : _GEN_555; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_557 = 11'h22d == index ? 32'h6c702c76 : _GEN_556; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_558 = 11'h22e == index ? 32'h306369 : _GEN_557; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_559 = 11'h22f == index ? 32'h3000000 : _GEN_558; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_560 = 11'h230 == index ? 32'h0 : _GEN_559; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_561 = 11'h231 == index ? 32'h65010000 : _GEN_560; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_562 = 11'h232 == index ? 32'h3000000 : _GEN_561; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_563 = 11'h233 == index ? 32'h10000000 : _GEN_562; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_564 = 11'h234 == index ? 32'haf010000 : _GEN_563; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_565 = 11'h235 == index ? 32'h4000000 : _GEN_564; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_566 = 11'h236 == index ? 32'hb000000 : _GEN_565; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_567 = 11'h237 == index ? 32'h4000000 : _GEN_566; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_568 = 11'h238 == index ? 32'h9000000 : _GEN_567; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_569 = 11'h239 == index ? 32'h3000000 : _GEN_568; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_570 = 11'h23a == index ? 32'h8000000 : _GEN_569; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_571 = 11'h23b == index ? 32'hd010000 : _GEN_570; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_572 = 11'h23c == index ? 32'hc : _GEN_571; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_573 = 11'h23d == index ? 32'h4 : _GEN_572; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_574 = 11'h23e == index ? 32'h3000000 : _GEN_573; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_575 = 11'h23f == index ? 32'h8000000 : _GEN_574; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_576 = 11'h240 == index ? 32'ha5010000 : _GEN_575; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_577 = 11'h241 == index ? 32'h746e6f63 : _GEN_576; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_578 = 11'h242 == index ? 32'h6c6f72 : _GEN_577; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_579 = 11'h243 == index ? 32'h3000000 : _GEN_578; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_580 = 11'h244 == index ? 32'h4000000 : _GEN_579; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_581 = 11'h245 == index ? 32'hf3010000 : _GEN_580; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_582 = 11'h246 == index ? 32'h7000000 : _GEN_581; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_583 = 11'h247 == index ? 32'h3000000 : _GEN_582; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_584 = 11'h248 == index ? 32'h4000000 : _GEN_583; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_585 = 11'h249 == index ? 32'h6020000 : _GEN_584; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_586 = 11'h24a == index ? 32'h38000000 : _GEN_585; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_587 = 11'h24b == index ? 32'h3000000 : _GEN_586; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_588 = 11'h24c == index ? 32'h4000000 : _GEN_587; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_589 = 11'h24d == index ? 32'h7a010000 : _GEN_588; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_590 = 11'h24e == index ? 32'h3000000 : _GEN_589; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_591 = 11'h24f == index ? 32'h2000000 : _GEN_590; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_592 = 11'h250 == index ? 32'h1000000 : _GEN_591; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_593 = 11'h251 == index ? 32'h6d697469 : _GEN_592; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_594 = 11'h252 == index ? 32'h30303840 : _GEN_593; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_595 = 11'h253 == index ? 32'h30303030 : _GEN_594; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_596 = 11'h254 == index ? 32'h0 : _GEN_595; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_597 = 11'h255 == index ? 32'h3000000 : _GEN_596; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_598 = 11'h256 == index ? 32'hd000000 : _GEN_597; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_599 = 11'h257 == index ? 32'h1b000000 : _GEN_598; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_600 = 11'h258 == index ? 32'h69666973 : _GEN_599; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_601 = 11'h259 == index ? 32'h692c6576 : _GEN_600; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_602 = 11'h25a == index ? 32'h306d6974 : _GEN_601; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_603 = 11'h25b == index ? 32'h0 : _GEN_602; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_604 = 11'h25c == index ? 32'h3000000 : _GEN_603; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_605 = 11'h25d == index ? 32'h10000000 : _GEN_604; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_606 = 11'h25e == index ? 32'hd010000 : _GEN_605; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_607 = 11'h25f == index ? 32'h8 : _GEN_606; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_608 = 11'h260 == index ? 32'h200000 : _GEN_607; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_609 = 11'h261 == index ? 32'h200008 : _GEN_608; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_610 = 11'h262 == index ? 32'h200000 : _GEN_609; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_611 = 11'h263 == index ? 32'h3000000 : _GEN_610; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_612 = 11'h264 == index ? 32'hc000000 : _GEN_611; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_613 = 11'h265 == index ? 32'ha5010000 : _GEN_612; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_614 = 11'h266 == index ? 32'h6d656d : _GEN_613; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_615 = 11'h267 == index ? 32'h746e6f63 : _GEN_614; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_616 = 11'h268 == index ? 32'h6c6f72 : _GEN_615; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_617 = 11'h269 == index ? 32'h3000000 : _GEN_616; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_618 = 11'h26a == index ? 32'h4000000 : _GEN_617; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_619 = 11'h26b == index ? 32'h7a010000 : _GEN_618; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_620 = 11'h26c == index ? 32'h2000000 : _GEN_619; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_621 = 11'h26d == index ? 32'h2000000 : _GEN_620; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_622 = 11'h26e == index ? 32'h1000000 : _GEN_621; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_623 = 11'h26f == index ? 32'h406d7770 : _GEN_622; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_624 = 11'h270 == index ? 32'h31303031 : _GEN_623; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_625 = 11'h271 == index ? 32'h30303035 : _GEN_624; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_626 = 11'h272 == index ? 32'h0 : _GEN_625; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_627 = 11'h273 == index ? 32'h3000000 : _GEN_626; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_628 = 11'h274 == index ? 32'h4000000 : _GEN_627; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_629 = 11'h275 == index ? 32'hdc010000 : _GEN_628; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_630 = 11'h276 == index ? 32'h5000000 : _GEN_629; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_631 = 11'h277 == index ? 32'h3000000 : _GEN_630; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_632 = 11'h278 == index ? 32'hc000000 : _GEN_631; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_633 = 11'h279 == index ? 32'h1b000000 : _GEN_632; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_634 = 11'h27a == index ? 32'h69666973 : _GEN_633; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_635 = 11'h27b == index ? 32'h702c6576 : _GEN_634; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_636 = 11'h27c == index ? 32'h306d77 : _GEN_635; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_637 = 11'h27d == index ? 32'h3000000 : _GEN_636; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_638 = 11'h27e == index ? 32'h4000000 : _GEN_637; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_639 = 11'h27f == index ? 32'h89010000 : _GEN_638; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_640 = 11'h280 == index ? 32'h3000000 : _GEN_639; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_641 = 11'h281 == index ? 32'h3000000 : _GEN_640; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_642 = 11'h282 == index ? 32'h10000000 : _GEN_641; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_643 = 11'h283 == index ? 32'h9a010000 : _GEN_642; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_644 = 11'h284 == index ? 32'h2b000000 : _GEN_643; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_645 = 11'h285 == index ? 32'h2c000000 : _GEN_644; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_646 = 11'h286 == index ? 32'h2d000000 : _GEN_645; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_647 = 11'h287 == index ? 32'h2e000000 : _GEN_646; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_648 = 11'h288 == index ? 32'h3000000 : _GEN_647; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_649 = 11'h289 == index ? 32'h8000000 : _GEN_648; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_650 = 11'h28a == index ? 32'hd010000 : _GEN_649; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_651 = 11'h28b == index ? 32'h500110 : _GEN_650; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_652 = 11'h28c == index ? 32'h100000 : _GEN_651; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_653 = 11'h28d == index ? 32'h3000000 : _GEN_652; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_654 = 11'h28e == index ? 32'h8000000 : _GEN_653; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_655 = 11'h28f == index ? 32'ha5010000 : _GEN_654; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_656 = 11'h290 == index ? 32'h746e6f63 : _GEN_655; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_657 = 11'h291 == index ? 32'h6c6f72 : _GEN_656; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_658 = 11'h292 == index ? 32'h3000000 : _GEN_657; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_659 = 11'h293 == index ? 32'h4000000 : _GEN_658; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_660 = 11'h294 == index ? 32'h11020000 : _GEN_659; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_661 = 11'h295 == index ? 32'h10000000 : _GEN_660; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_662 = 11'h296 == index ? 32'h3000000 : _GEN_661; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_663 = 11'h297 == index ? 32'h4000000 : _GEN_662; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_664 = 11'h298 == index ? 32'h2d020000 : _GEN_663; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_665 = 11'h299 == index ? 32'h4000000 : _GEN_664; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_666 = 11'h29a == index ? 32'h2000000 : _GEN_665; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_667 = 11'h29b == index ? 32'h1000000 : _GEN_666; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_668 = 11'h29c == index ? 32'h406d7770 : _GEN_667; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_669 = 11'h29d == index ? 32'h32303031 : _GEN_668; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_670 = 11'h29e == index ? 32'h30303035 : _GEN_669; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_671 = 11'h29f == index ? 32'h0 : _GEN_670; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_672 = 11'h2a0 == index ? 32'h3000000 : _GEN_671; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_673 = 11'h2a1 == index ? 32'h4000000 : _GEN_672; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_674 = 11'h2a2 == index ? 32'hdc010000 : _GEN_673; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_675 = 11'h2a3 == index ? 32'h5000000 : _GEN_674; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_676 = 11'h2a4 == index ? 32'h3000000 : _GEN_675; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_677 = 11'h2a5 == index ? 32'hc000000 : _GEN_676; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_678 = 11'h2a6 == index ? 32'h1b000000 : _GEN_677; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_679 = 11'h2a7 == index ? 32'h69666973 : _GEN_678; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_680 = 11'h2a8 == index ? 32'h702c6576 : _GEN_679; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_681 = 11'h2a9 == index ? 32'h306d77 : _GEN_680; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_682 = 11'h2aa == index ? 32'h3000000 : _GEN_681; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_683 = 11'h2ab == index ? 32'h4000000 : _GEN_682; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_684 = 11'h2ac == index ? 32'h89010000 : _GEN_683; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_685 = 11'h2ad == index ? 32'h3000000 : _GEN_684; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_686 = 11'h2ae == index ? 32'h3000000 : _GEN_685; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_687 = 11'h2af == index ? 32'h10000000 : _GEN_686; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_688 = 11'h2b0 == index ? 32'h9a010000 : _GEN_687; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_689 = 11'h2b1 == index ? 32'h2f000000 : _GEN_688; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_690 = 11'h2b2 == index ? 32'h30000000 : _GEN_689; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_691 = 11'h2b3 == index ? 32'h31000000 : _GEN_690; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_692 = 11'h2b4 == index ? 32'h32000000 : _GEN_691; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_693 = 11'h2b5 == index ? 32'h3000000 : _GEN_692; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_694 = 11'h2b6 == index ? 32'h8000000 : _GEN_693; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_695 = 11'h2b7 == index ? 32'hd010000 : _GEN_694; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_696 = 11'h2b8 == index ? 32'h500210 : _GEN_695; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_697 = 11'h2b9 == index ? 32'h100000 : _GEN_696; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_698 = 11'h2ba == index ? 32'h3000000 : _GEN_697; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_699 = 11'h2bb == index ? 32'h8000000 : _GEN_698; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_700 = 11'h2bc == index ? 32'ha5010000 : _GEN_699; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_701 = 11'h2bd == index ? 32'h746e6f63 : _GEN_700; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_702 = 11'h2be == index ? 32'h6c6f72 : _GEN_701; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_703 = 11'h2bf == index ? 32'h3000000 : _GEN_702; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_704 = 11'h2c0 == index ? 32'h4000000 : _GEN_703; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_705 = 11'h2c1 == index ? 32'h11020000 : _GEN_704; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_706 = 11'h2c2 == index ? 32'h10000000 : _GEN_705; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_707 = 11'h2c3 == index ? 32'h3000000 : _GEN_706; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_708 = 11'h2c4 == index ? 32'h4000000 : _GEN_707; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_709 = 11'h2c5 == index ? 32'h2d020000 : _GEN_708; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_710 = 11'h2c6 == index ? 32'h4000000 : _GEN_709; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_711 = 11'h2c7 == index ? 32'h2000000 : _GEN_710; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_712 = 11'h2c8 == index ? 32'h1000000 : _GEN_711; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_713 = 11'h2c9 == index ? 32'h406d7770 : _GEN_712; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_714 = 11'h2ca == index ? 32'h33303031 : _GEN_713; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_715 = 11'h2cb == index ? 32'h30303035 : _GEN_714; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_716 = 11'h2cc == index ? 32'h0 : _GEN_715; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_717 = 11'h2cd == index ? 32'h3000000 : _GEN_716; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_718 = 11'h2ce == index ? 32'h4000000 : _GEN_717; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_719 = 11'h2cf == index ? 32'hdc010000 : _GEN_718; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_720 = 11'h2d0 == index ? 32'h5000000 : _GEN_719; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_721 = 11'h2d1 == index ? 32'h3000000 : _GEN_720; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_722 = 11'h2d2 == index ? 32'hc000000 : _GEN_721; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_723 = 11'h2d3 == index ? 32'h1b000000 : _GEN_722; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_724 = 11'h2d4 == index ? 32'h69666973 : _GEN_723; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_725 = 11'h2d5 == index ? 32'h702c6576 : _GEN_724; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_726 = 11'h2d6 == index ? 32'h306d77 : _GEN_725; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_727 = 11'h2d7 == index ? 32'h3000000 : _GEN_726; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_728 = 11'h2d8 == index ? 32'h4000000 : _GEN_727; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_729 = 11'h2d9 == index ? 32'h89010000 : _GEN_728; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_730 = 11'h2da == index ? 32'h3000000 : _GEN_729; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_731 = 11'h2db == index ? 32'h3000000 : _GEN_730; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_732 = 11'h2dc == index ? 32'h10000000 : _GEN_731; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_733 = 11'h2dd == index ? 32'h9a010000 : _GEN_732; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_734 = 11'h2de == index ? 32'h33000000 : _GEN_733; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_735 = 11'h2df == index ? 32'h34000000 : _GEN_734; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_736 = 11'h2e0 == index ? 32'h35000000 : _GEN_735; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_737 = 11'h2e1 == index ? 32'h36000000 : _GEN_736; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_738 = 11'h2e2 == index ? 32'h3000000 : _GEN_737; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_739 = 11'h2e3 == index ? 32'h8000000 : _GEN_738; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_740 = 11'h2e4 == index ? 32'hd010000 : _GEN_739; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_741 = 11'h2e5 == index ? 32'h500310 : _GEN_740; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_742 = 11'h2e6 == index ? 32'h100000 : _GEN_741; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_743 = 11'h2e7 == index ? 32'h3000000 : _GEN_742; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_744 = 11'h2e8 == index ? 32'h8000000 : _GEN_743; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_745 = 11'h2e9 == index ? 32'ha5010000 : _GEN_744; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_746 = 11'h2ea == index ? 32'h746e6f63 : _GEN_745; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_747 = 11'h2eb == index ? 32'h6c6f72 : _GEN_746; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_748 = 11'h2ec == index ? 32'h3000000 : _GEN_747; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_749 = 11'h2ed == index ? 32'h4000000 : _GEN_748; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_750 = 11'h2ee == index ? 32'h11020000 : _GEN_749; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_751 = 11'h2ef == index ? 32'h10000000 : _GEN_750; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_752 = 11'h2f0 == index ? 32'h3000000 : _GEN_751; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_753 = 11'h2f1 == index ? 32'h4000000 : _GEN_752; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_754 = 11'h2f2 == index ? 32'h2d020000 : _GEN_753; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_755 = 11'h2f3 == index ? 32'h4000000 : _GEN_754; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_756 = 11'h2f4 == index ? 32'h2000000 : _GEN_755; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_757 = 11'h2f5 == index ? 32'h1000000 : _GEN_756; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_758 = 11'h2f6 == index ? 32'h406d6f72 : _GEN_757; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_759 = 11'h2f7 == index ? 32'h30303031 : _GEN_758; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_760 = 11'h2f8 == index ? 32'h30 : _GEN_759; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_761 = 11'h2f9 == index ? 32'h3000000 : _GEN_760; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_762 = 11'h2fa == index ? 32'hc000000 : _GEN_761; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_763 = 11'h2fb == index ? 32'h1b000000 : _GEN_762; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_764 = 11'h2fc == index ? 32'h69666973 : _GEN_763; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_765 = 11'h2fd == index ? 32'h722c6576 : _GEN_764; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_766 = 11'h2fe == index ? 32'h306d6f : _GEN_765; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_767 = 11'h2ff == index ? 32'h3000000 : _GEN_766; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_768 = 11'h300 == index ? 32'h8000000 : _GEN_767; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_769 = 11'h301 == index ? 32'hd010000 : _GEN_768; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_770 = 11'h302 == index ? 32'h100 : _GEN_769; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_771 = 11'h303 == index ? 32'h100 : _GEN_770; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_772 = 11'h304 == index ? 32'h3000000 : _GEN_771; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_773 = 11'h305 == index ? 32'h4000000 : _GEN_772; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_774 = 11'h306 == index ? 32'ha5010000 : _GEN_773; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_775 = 11'h307 == index ? 32'h6d656d : _GEN_774; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_776 = 11'h308 == index ? 32'h2000000 : _GEN_775; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_777 = 11'h309 == index ? 32'h1000000 : _GEN_776; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_778 = 11'h30a == index ? 32'h69726573 : _GEN_777; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_779 = 11'h30b == index ? 32'h31406c61 : _GEN_778; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_780 = 11'h30c == index ? 32'h33313030 : _GEN_779; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_781 = 11'h30d == index ? 32'h303030 : _GEN_780; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_782 = 11'h30e == index ? 32'h3000000 : _GEN_781; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_783 = 11'h30f == index ? 32'h4000000 : _GEN_782; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_784 = 11'h310 == index ? 32'hdc010000 : _GEN_783; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_785 = 11'h311 == index ? 32'h5000000 : _GEN_784; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_786 = 11'h312 == index ? 32'h3000000 : _GEN_785; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_787 = 11'h313 == index ? 32'hd000000 : _GEN_786; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_788 = 11'h314 == index ? 32'h1b000000 : _GEN_787; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_789 = 11'h315 == index ? 32'h69666973 : _GEN_788; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_790 = 11'h316 == index ? 32'h752c6576 : _GEN_789; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_791 = 11'h317 == index ? 32'h30747261 : _GEN_790; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_792 = 11'h318 == index ? 32'h0 : _GEN_791; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_793 = 11'h319 == index ? 32'h3000000 : _GEN_792; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_794 = 11'h31a == index ? 32'h4000000 : _GEN_793; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_795 = 11'h31b == index ? 32'h89010000 : _GEN_794; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_796 = 11'h31c == index ? 32'h3000000 : _GEN_795; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_797 = 11'h31d == index ? 32'h3000000 : _GEN_796; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_798 = 11'h31e == index ? 32'h4000000 : _GEN_797; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_799 = 11'h31f == index ? 32'h9a010000 : _GEN_798; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_800 = 11'h320 == index ? 32'h3000000 : _GEN_799; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_801 = 11'h321 == index ? 32'h3000000 : _GEN_800; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_802 = 11'h322 == index ? 32'h8000000 : _GEN_801; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_803 = 11'h323 == index ? 32'hd010000 : _GEN_802; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_804 = 11'h324 == index ? 32'h300110 : _GEN_803; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_805 = 11'h325 == index ? 32'h100000 : _GEN_804; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_806 = 11'h326 == index ? 32'h3000000 : _GEN_805; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_807 = 11'h327 == index ? 32'h8000000 : _GEN_806; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_808 = 11'h328 == index ? 32'ha5010000 : _GEN_807; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_809 = 11'h329 == index ? 32'h746e6f63 : _GEN_808; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_810 = 11'h32a == index ? 32'h6c6f72 : _GEN_809; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_811 = 11'h32b == index ? 32'h2000000 : _GEN_810; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_812 = 11'h32c == index ? 32'h1000000 : _GEN_811; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_813 = 11'h32d == index ? 32'h69726573 : _GEN_812; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_814 = 11'h32e == index ? 32'h31406c61 : _GEN_813; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_815 = 11'h32f == index ? 32'h33323030 : _GEN_814; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_816 = 11'h330 == index ? 32'h303030 : _GEN_815; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_817 = 11'h331 == index ? 32'h3000000 : _GEN_816; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_818 = 11'h332 == index ? 32'h4000000 : _GEN_817; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_819 = 11'h333 == index ? 32'hdc010000 : _GEN_818; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_820 = 11'h334 == index ? 32'h5000000 : _GEN_819; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_821 = 11'h335 == index ? 32'h3000000 : _GEN_820; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_822 = 11'h336 == index ? 32'hd000000 : _GEN_821; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_823 = 11'h337 == index ? 32'h1b000000 : _GEN_822; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_824 = 11'h338 == index ? 32'h69666973 : _GEN_823; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_825 = 11'h339 == index ? 32'h752c6576 : _GEN_824; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_826 = 11'h33a == index ? 32'h30747261 : _GEN_825; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_827 = 11'h33b == index ? 32'h0 : _GEN_826; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_828 = 11'h33c == index ? 32'h3000000 : _GEN_827; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_829 = 11'h33d == index ? 32'h4000000 : _GEN_828; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_830 = 11'h33e == index ? 32'h89010000 : _GEN_829; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_831 = 11'h33f == index ? 32'h3000000 : _GEN_830; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_832 = 11'h340 == index ? 32'h3000000 : _GEN_831; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_833 = 11'h341 == index ? 32'h4000000 : _GEN_832; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_834 = 11'h342 == index ? 32'h9a010000 : _GEN_833; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_835 = 11'h343 == index ? 32'h4000000 : _GEN_834; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_836 = 11'h344 == index ? 32'h3000000 : _GEN_835; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_837 = 11'h345 == index ? 32'h8000000 : _GEN_836; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_838 = 11'h346 == index ? 32'hd010000 : _GEN_837; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_839 = 11'h347 == index ? 32'h300210 : _GEN_838; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_840 = 11'h348 == index ? 32'h100000 : _GEN_839; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_841 = 11'h349 == index ? 32'h3000000 : _GEN_840; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_842 = 11'h34a == index ? 32'h8000000 : _GEN_841; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_843 = 11'h34b == index ? 32'ha5010000 : _GEN_842; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_844 = 11'h34c == index ? 32'h746e6f63 : _GEN_843; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_845 = 11'h34d == index ? 32'h6c6f72 : _GEN_844; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_846 = 11'h34e == index ? 32'h2000000 : _GEN_845; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_847 = 11'h34f == index ? 32'h1000000 : _GEN_846; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_848 = 11'h350 == index ? 32'h69726573 : _GEN_847; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_849 = 11'h351 == index ? 32'h31406c61 : _GEN_848; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_850 = 11'h352 == index ? 32'h33333030 : _GEN_849; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_851 = 11'h353 == index ? 32'h303030 : _GEN_850; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_852 = 11'h354 == index ? 32'h3000000 : _GEN_851; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_853 = 11'h355 == index ? 32'h4000000 : _GEN_852; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_854 = 11'h356 == index ? 32'hdc010000 : _GEN_853; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_855 = 11'h357 == index ? 32'h5000000 : _GEN_854; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_856 = 11'h358 == index ? 32'h3000000 : _GEN_855; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_857 = 11'h359 == index ? 32'hd000000 : _GEN_856; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_858 = 11'h35a == index ? 32'h1b000000 : _GEN_857; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_859 = 11'h35b == index ? 32'h69666973 : _GEN_858; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_860 = 11'h35c == index ? 32'h752c6576 : _GEN_859; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_861 = 11'h35d == index ? 32'h30747261 : _GEN_860; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_862 = 11'h35e == index ? 32'h0 : _GEN_861; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_863 = 11'h35f == index ? 32'h3000000 : _GEN_862; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_864 = 11'h360 == index ? 32'h4000000 : _GEN_863; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_865 = 11'h361 == index ? 32'h89010000 : _GEN_864; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_866 = 11'h362 == index ? 32'h3000000 : _GEN_865; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_867 = 11'h363 == index ? 32'h3000000 : _GEN_866; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_868 = 11'h364 == index ? 32'h4000000 : _GEN_867; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_869 = 11'h365 == index ? 32'h9a010000 : _GEN_868; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_870 = 11'h366 == index ? 32'h5000000 : _GEN_869; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_871 = 11'h367 == index ? 32'h3000000 : _GEN_870; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_872 = 11'h368 == index ? 32'h8000000 : _GEN_871; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_873 = 11'h369 == index ? 32'hd010000 : _GEN_872; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_874 = 11'h36a == index ? 32'h300310 : _GEN_873; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_875 = 11'h36b == index ? 32'h100000 : _GEN_874; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_876 = 11'h36c == index ? 32'h3000000 : _GEN_875; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_877 = 11'h36d == index ? 32'h8000000 : _GEN_876; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_878 = 11'h36e == index ? 32'ha5010000 : _GEN_877; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_879 = 11'h36f == index ? 32'h746e6f63 : _GEN_878; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_880 = 11'h370 == index ? 32'h6c6f72 : _GEN_879; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_881 = 11'h371 == index ? 32'h2000000 : _GEN_880; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_882 = 11'h372 == index ? 32'h1000000 : _GEN_881; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_883 = 11'h373 == index ? 32'h69726573 : _GEN_882; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_884 = 11'h374 == index ? 32'h31406c61 : _GEN_883; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_885 = 11'h375 == index ? 32'h33343030 : _GEN_884; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_886 = 11'h376 == index ? 32'h303030 : _GEN_885; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_887 = 11'h377 == index ? 32'h3000000 : _GEN_886; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_888 = 11'h378 == index ? 32'h4000000 : _GEN_887; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_889 = 11'h379 == index ? 32'hdc010000 : _GEN_888; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_890 = 11'h37a == index ? 32'h5000000 : _GEN_889; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_891 = 11'h37b == index ? 32'h3000000 : _GEN_890; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_892 = 11'h37c == index ? 32'hd000000 : _GEN_891; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_893 = 11'h37d == index ? 32'h1b000000 : _GEN_892; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_894 = 11'h37e == index ? 32'h69666973 : _GEN_893; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_895 = 11'h37f == index ? 32'h752c6576 : _GEN_894; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_896 = 11'h380 == index ? 32'h30747261 : _GEN_895; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_897 = 11'h381 == index ? 32'h0 : _GEN_896; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_898 = 11'h382 == index ? 32'h3000000 : _GEN_897; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_899 = 11'h383 == index ? 32'h4000000 : _GEN_898; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_900 = 11'h384 == index ? 32'h89010000 : _GEN_899; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_901 = 11'h385 == index ? 32'h3000000 : _GEN_900; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_902 = 11'h386 == index ? 32'h3000000 : _GEN_901; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_903 = 11'h387 == index ? 32'h4000000 : _GEN_902; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_904 = 11'h388 == index ? 32'h9a010000 : _GEN_903; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_905 = 11'h389 == index ? 32'h6000000 : _GEN_904; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_906 = 11'h38a == index ? 32'h3000000 : _GEN_905; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_907 = 11'h38b == index ? 32'h8000000 : _GEN_906; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_908 = 11'h38c == index ? 32'hd010000 : _GEN_907; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_909 = 11'h38d == index ? 32'h300410 : _GEN_908; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_910 = 11'h38e == index ? 32'h100000 : _GEN_909; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_911 = 11'h38f == index ? 32'h3000000 : _GEN_910; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_912 = 11'h390 == index ? 32'h8000000 : _GEN_911; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_913 = 11'h391 == index ? 32'ha5010000 : _GEN_912; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_914 = 11'h392 == index ? 32'h746e6f63 : _GEN_913; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_915 = 11'h393 == index ? 32'h6c6f72 : _GEN_914; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_916 = 11'h394 == index ? 32'h2000000 : _GEN_915; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_917 = 11'h395 == index ? 32'h1000000 : _GEN_916; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_918 = 11'h396 == index ? 32'h69726573 : _GEN_917; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_919 = 11'h397 == index ? 32'h31406c61 : _GEN_918; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_920 = 11'h398 == index ? 32'h33353030 : _GEN_919; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_921 = 11'h399 == index ? 32'h303030 : _GEN_920; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_922 = 11'h39a == index ? 32'h3000000 : _GEN_921; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_923 = 11'h39b == index ? 32'h4000000 : _GEN_922; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_924 = 11'h39c == index ? 32'hdc010000 : _GEN_923; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_925 = 11'h39d == index ? 32'h5000000 : _GEN_924; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_926 = 11'h39e == index ? 32'h3000000 : _GEN_925; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_927 = 11'h39f == index ? 32'hd000000 : _GEN_926; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_928 = 11'h3a0 == index ? 32'h1b000000 : _GEN_927; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_929 = 11'h3a1 == index ? 32'h69666973 : _GEN_928; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_930 = 11'h3a2 == index ? 32'h752c6576 : _GEN_929; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_931 = 11'h3a3 == index ? 32'h30747261 : _GEN_930; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_932 = 11'h3a4 == index ? 32'h0 : _GEN_931; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_933 = 11'h3a5 == index ? 32'h3000000 : _GEN_932; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_934 = 11'h3a6 == index ? 32'h4000000 : _GEN_933; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_935 = 11'h3a7 == index ? 32'h89010000 : _GEN_934; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_936 = 11'h3a8 == index ? 32'h3000000 : _GEN_935; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_937 = 11'h3a9 == index ? 32'h3000000 : _GEN_936; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_938 = 11'h3aa == index ? 32'h4000000 : _GEN_937; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_939 = 11'h3ab == index ? 32'h9a010000 : _GEN_938; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_940 = 11'h3ac == index ? 32'h7000000 : _GEN_939; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_941 = 11'h3ad == index ? 32'h3000000 : _GEN_940; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_942 = 11'h3ae == index ? 32'h8000000 : _GEN_941; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_943 = 11'h3af == index ? 32'hd010000 : _GEN_942; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_944 = 11'h3b0 == index ? 32'h300510 : _GEN_943; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_945 = 11'h3b1 == index ? 32'h100000 : _GEN_944; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_946 = 11'h3b2 == index ? 32'h3000000 : _GEN_945; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_947 = 11'h3b3 == index ? 32'h8000000 : _GEN_946; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_948 = 11'h3b4 == index ? 32'ha5010000 : _GEN_947; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_949 = 11'h3b5 == index ? 32'h746e6f63 : _GEN_948; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_950 = 11'h3b6 == index ? 32'h6c6f72 : _GEN_949; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_951 = 11'h3b7 == index ? 32'h2000000 : _GEN_950; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_952 = 11'h3b8 == index ? 32'h1000000 : _GEN_951; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_953 = 11'h3b9 == index ? 32'h40697073 : _GEN_952; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_954 = 11'h3ba == index ? 32'h31303031 : _GEN_953; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_955 = 11'h3bb == index ? 32'h30303034 : _GEN_954; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_956 = 11'h3bc == index ? 32'h0 : _GEN_955; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_957 = 11'h3bd == index ? 32'h3000000 : _GEN_956; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_958 = 11'h3be == index ? 32'h4000000 : _GEN_957; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_959 = 11'h3bf == index ? 32'h0 : _GEN_958; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_960 = 11'h3c0 == index ? 32'h1000000 : _GEN_959; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_961 = 11'h3c1 == index ? 32'h3000000 : _GEN_960; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_962 = 11'h3c2 == index ? 32'h4000000 : _GEN_961; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_963 = 11'h3c3 == index ? 32'hf000000 : _GEN_962; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_964 = 11'h3c4 == index ? 32'h0 : _GEN_963; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_965 = 11'h3c5 == index ? 32'h3000000 : _GEN_964; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_966 = 11'h3c6 == index ? 32'h4000000 : _GEN_965; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_967 = 11'h3c7 == index ? 32'hdc010000 : _GEN_966; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_968 = 11'h3c8 == index ? 32'h5000000 : _GEN_967; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_969 = 11'h3c9 == index ? 32'h3000000 : _GEN_968; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_970 = 11'h3ca == index ? 32'hc000000 : _GEN_969; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_971 = 11'h3cb == index ? 32'h1b000000 : _GEN_970; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_972 = 11'h3cc == index ? 32'h69666973 : _GEN_971; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_973 = 11'h3cd == index ? 32'h732c6576 : _GEN_972; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_974 = 11'h3ce == index ? 32'h306970 : _GEN_973; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_975 = 11'h3cf == index ? 32'h3000000 : _GEN_974; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_976 = 11'h3d0 == index ? 32'h4000000 : _GEN_975; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_977 = 11'h3d1 == index ? 32'h89010000 : _GEN_976; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_978 = 11'h3d2 == index ? 32'h3000000 : _GEN_977; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_979 = 11'h3d3 == index ? 32'h3000000 : _GEN_978; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_980 = 11'h3d4 == index ? 32'h4000000 : _GEN_979; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_981 = 11'h3d5 == index ? 32'h9a010000 : _GEN_980; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_982 = 11'h3d6 == index ? 32'h8000000 : _GEN_981; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_983 = 11'h3d7 == index ? 32'h3000000 : _GEN_982; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_984 = 11'h3d8 == index ? 32'h10000000 : _GEN_983; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_985 = 11'h3d9 == index ? 32'hd010000 : _GEN_984; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_986 = 11'h3da == index ? 32'h400110 : _GEN_985; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_987 = 11'h3db == index ? 32'h100000 : _GEN_986; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_988 = 11'h3dc == index ? 32'h20 : _GEN_987; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_989 = 11'h3dd == index ? 32'h20 : _GEN_988; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_990 = 11'h3de == index ? 32'h3000000 : _GEN_989; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_991 = 11'h3df == index ? 32'hc000000 : _GEN_990; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_992 = 11'h3e0 == index ? 32'ha5010000 : _GEN_991; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_993 = 11'h3e1 == index ? 32'h746e6f63 : _GEN_992; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_994 = 11'h3e2 == index ? 32'h6c6f72 : _GEN_993; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_995 = 11'h3e3 == index ? 32'h6d656d : _GEN_994; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_996 = 11'h3e4 == index ? 32'h2000000 : _GEN_995; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_997 = 11'h3e5 == index ? 32'h1000000 : _GEN_996; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_998 = 11'h3e6 == index ? 32'h40697073 : _GEN_997; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_999 = 11'h3e7 == index ? 32'h32303031 : _GEN_998; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1000 = 11'h3e8 == index ? 32'h30303034 : _GEN_999; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1001 = 11'h3e9 == index ? 32'h0 : _GEN_1000; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1002 = 11'h3ea == index ? 32'h3000000 : _GEN_1001; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1003 = 11'h3eb == index ? 32'h4000000 : _GEN_1002; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1004 = 11'h3ec == index ? 32'h0 : _GEN_1003; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1005 = 11'h3ed == index ? 32'h1000000 : _GEN_1004; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1006 = 11'h3ee == index ? 32'h3000000 : _GEN_1005; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1007 = 11'h3ef == index ? 32'h4000000 : _GEN_1006; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1008 = 11'h3f0 == index ? 32'hf000000 : _GEN_1007; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1009 = 11'h3f1 == index ? 32'h0 : _GEN_1008; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1010 = 11'h3f2 == index ? 32'h3000000 : _GEN_1009; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1011 = 11'h3f3 == index ? 32'h4000000 : _GEN_1010; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1012 = 11'h3f4 == index ? 32'hdc010000 : _GEN_1011; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1013 = 11'h3f5 == index ? 32'h5000000 : _GEN_1012; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1014 = 11'h3f6 == index ? 32'h3000000 : _GEN_1013; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1015 = 11'h3f7 == index ? 32'hc000000 : _GEN_1014; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1016 = 11'h3f8 == index ? 32'h1b000000 : _GEN_1015; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1017 = 11'h3f9 == index ? 32'h69666973 : _GEN_1016; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1018 = 11'h3fa == index ? 32'h732c6576 : _GEN_1017; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1019 = 11'h3fb == index ? 32'h306970 : _GEN_1018; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1020 = 11'h3fc == index ? 32'h3000000 : _GEN_1019; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1021 = 11'h3fd == index ? 32'h4000000 : _GEN_1020; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1022 = 11'h3fe == index ? 32'h89010000 : _GEN_1021; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1023 = 11'h3ff == index ? 32'h3000000 : _GEN_1022; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1024 = 11'h400 == index ? 32'h3000000 : _GEN_1023; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1025 = 11'h401 == index ? 32'h4000000 : _GEN_1024; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1026 = 11'h402 == index ? 32'h9a010000 : _GEN_1025; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1027 = 11'h403 == index ? 32'ha000000 : _GEN_1026; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1028 = 11'h404 == index ? 32'h3000000 : _GEN_1027; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1029 = 11'h405 == index ? 32'h8000000 : _GEN_1028; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1030 = 11'h406 == index ? 32'hd010000 : _GEN_1029; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1031 = 11'h407 == index ? 32'h400210 : _GEN_1030; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1032 = 11'h408 == index ? 32'h100000 : _GEN_1031; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1033 = 11'h409 == index ? 32'h3000000 : _GEN_1032; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1034 = 11'h40a == index ? 32'h8000000 : _GEN_1033; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1035 = 11'h40b == index ? 32'ha5010000 : _GEN_1034; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1036 = 11'h40c == index ? 32'h746e6f63 : _GEN_1035; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1037 = 11'h40d == index ? 32'h6c6f72 : _GEN_1036; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1038 = 11'h40e == index ? 32'h2000000 : _GEN_1037; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1039 = 11'h40f == index ? 32'h1000000 : _GEN_1038; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1040 = 11'h410 == index ? 32'h40697073 : _GEN_1039; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1041 = 11'h411 == index ? 32'h33303031 : _GEN_1040; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1042 = 11'h412 == index ? 32'h30303034 : _GEN_1041; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1043 = 11'h413 == index ? 32'h0 : _GEN_1042; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1044 = 11'h414 == index ? 32'h3000000 : _GEN_1043; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1045 = 11'h415 == index ? 32'h4000000 : _GEN_1044; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1046 = 11'h416 == index ? 32'h0 : _GEN_1045; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1047 = 11'h417 == index ? 32'h1000000 : _GEN_1046; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1048 = 11'h418 == index ? 32'h3000000 : _GEN_1047; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1049 = 11'h419 == index ? 32'h4000000 : _GEN_1048; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1050 = 11'h41a == index ? 32'hf000000 : _GEN_1049; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1051 = 11'h41b == index ? 32'h0 : _GEN_1050; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1052 = 11'h41c == index ? 32'h3000000 : _GEN_1051; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1053 = 11'h41d == index ? 32'h4000000 : _GEN_1052; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1054 = 11'h41e == index ? 32'hdc010000 : _GEN_1053; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1055 = 11'h41f == index ? 32'h5000000 : _GEN_1054; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1056 = 11'h420 == index ? 32'h3000000 : _GEN_1055; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1057 = 11'h421 == index ? 32'hc000000 : _GEN_1056; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1058 = 11'h422 == index ? 32'h1b000000 : _GEN_1057; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1059 = 11'h423 == index ? 32'h69666973 : _GEN_1058; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1060 = 11'h424 == index ? 32'h732c6576 : _GEN_1059; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1061 = 11'h425 == index ? 32'h306970 : _GEN_1060; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1062 = 11'h426 == index ? 32'h3000000 : _GEN_1061; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1063 = 11'h427 == index ? 32'h4000000 : _GEN_1062; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1064 = 11'h428 == index ? 32'h89010000 : _GEN_1063; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1065 = 11'h429 == index ? 32'h3000000 : _GEN_1064; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1066 = 11'h42a == index ? 32'h3000000 : _GEN_1065; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1067 = 11'h42b == index ? 32'h4000000 : _GEN_1066; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1068 = 11'h42c == index ? 32'h9a010000 : _GEN_1067; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1069 = 11'h42d == index ? 32'h9000000 : _GEN_1068; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1070 = 11'h42e == index ? 32'h3000000 : _GEN_1069; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1071 = 11'h42f == index ? 32'h10000000 : _GEN_1070; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1072 = 11'h430 == index ? 32'hd010000 : _GEN_1071; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1073 = 11'h431 == index ? 32'h400310 : _GEN_1072; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1074 = 11'h432 == index ? 32'h100000 : _GEN_1073; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1075 = 11'h433 == index ? 32'h40 : _GEN_1074; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1076 = 11'h434 == index ? 32'h20 : _GEN_1075; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1077 = 11'h435 == index ? 32'h3000000 : _GEN_1076; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1078 = 11'h436 == index ? 32'hc000000 : _GEN_1077; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1079 = 11'h437 == index ? 32'ha5010000 : _GEN_1078; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1080 = 11'h438 == index ? 32'h746e6f63 : _GEN_1079; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1081 = 11'h439 == index ? 32'h6c6f72 : _GEN_1080; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1082 = 11'h43a == index ? 32'h6d656d : _GEN_1081; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1083 = 11'h43b == index ? 32'h3000000 : _GEN_1082; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1084 = 11'h43c == index ? 32'h4000000 : _GEN_1083; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1085 = 11'h43d == index ? 32'h7a010000 : _GEN_1084; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1086 = 11'h43e == index ? 32'h1000000 : _GEN_1085; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1087 = 11'h43f == index ? 32'h2000000 : _GEN_1086; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1088 = 11'h440 == index ? 32'h1000000 : _GEN_1087; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1089 = 11'h441 == index ? 32'h73627573 : _GEN_1088; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1090 = 11'h442 == index ? 32'h65747379 : _GEN_1089; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1091 = 11'h443 == index ? 32'h62705f6d : _GEN_1090; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1092 = 11'h444 == index ? 32'h635f7375 : _GEN_1091; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1093 = 11'h445 == index ? 32'h6b636f6c : _GEN_1092; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1094 = 11'h446 == index ? 32'h0 : _GEN_1093; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1095 = 11'h447 == index ? 32'h3000000 : _GEN_1094; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1096 = 11'h448 == index ? 32'h4000000 : _GEN_1095; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1097 = 11'h449 == index ? 32'h41020000 : _GEN_1096; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1098 = 11'h44a == index ? 32'h0 : _GEN_1097; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1099 = 11'h44b == index ? 32'h3000000 : _GEN_1098; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1100 = 11'h44c == index ? 32'h4000000 : _GEN_1099; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1101 = 11'h44d == index ? 32'h67000000 : _GEN_1100; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1102 = 11'h44e == index ? 32'he1f505 : _GEN_1101; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1103 = 11'h44f == index ? 32'h3000000 : _GEN_1102; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1104 = 11'h450 == index ? 32'h15000000 : _GEN_1103; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1105 = 11'h451 == index ? 32'h4e020000 : _GEN_1104; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1106 = 11'h452 == index ? 32'h73627573 : _GEN_1105; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1107 = 11'h453 == index ? 32'h65747379 : _GEN_1106; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1108 = 11'h454 == index ? 32'h62705f6d : _GEN_1107; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1109 = 11'h455 == index ? 32'h635f7375 : _GEN_1108; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1110 = 11'h456 == index ? 32'h6b636f6c : _GEN_1109; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1111 = 11'h457 == index ? 32'h0 : _GEN_1110; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1112 = 11'h458 == index ? 32'h3000000 : _GEN_1111; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1113 = 11'h459 == index ? 32'hc000000 : _GEN_1112; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1114 = 11'h45a == index ? 32'h1b000000 : _GEN_1113; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1115 = 11'h45b == index ? 32'h65786966 : _GEN_1114; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1116 = 11'h45c == index ? 32'h6c632d64 : _GEN_1115; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1117 = 11'h45d == index ? 32'h6b636f : _GEN_1116; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1118 = 11'h45e == index ? 32'h3000000 : _GEN_1117; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1119 = 11'h45f == index ? 32'h4000000 : _GEN_1118; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1120 = 11'h460 == index ? 32'h7a010000 : _GEN_1119; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1121 = 11'h461 == index ? 32'h5000000 : _GEN_1120; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1122 = 11'h462 == index ? 32'h2000000 : _GEN_1121; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1123 = 11'h463 == index ? 32'h2000000 : _GEN_1122; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1124 = 11'h464 == index ? 32'h2000000 : _GEN_1123; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1125 = 11'h465 == index ? 32'h9000000 : _GEN_1124; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1126 = 11'h466 == index ? 32'h64646123 : _GEN_1125; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1127 = 11'h467 == index ? 32'h73736572 : _GEN_1126; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1128 = 11'h468 == index ? 32'h6c65632d : _GEN_1127; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1129 = 11'h469 == index ? 32'h2300736c : _GEN_1128; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1130 = 11'h46a == index ? 32'h657a6973 : _GEN_1129; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1131 = 11'h46b == index ? 32'h6c65632d : _GEN_1130; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1132 = 11'h46c == index ? 32'h6300736c : _GEN_1131; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1133 = 11'h46d == index ? 32'h61706d6f : _GEN_1132; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1134 = 11'h46e == index ? 32'h6c626974 : _GEN_1133; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1135 = 11'h46f == index ? 32'h6f6d0065 : _GEN_1134; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1136 = 11'h470 == index ? 32'h6c6564 : _GEN_1135; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1137 = 11'h471 == index ? 32'h69726573 : _GEN_1136; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1138 = 11'h472 == index ? 32'h306c61 : _GEN_1137; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1139 = 11'h473 == index ? 32'h69726573 : _GEN_1138; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1140 = 11'h474 == index ? 32'h316c61 : _GEN_1139; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1141 = 11'h475 == index ? 32'h69726573 : _GEN_1140; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1142 = 11'h476 == index ? 32'h326c61 : _GEN_1141; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1143 = 11'h477 == index ? 32'h69726573 : _GEN_1142; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1144 = 11'h478 == index ? 32'h336c61 : _GEN_1143; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1145 = 11'h479 == index ? 32'h69726573 : _GEN_1144; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1146 = 11'h47a == index ? 32'h346c61 : _GEN_1145; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1147 = 11'h47b == index ? 32'h656d6974 : _GEN_1146; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1148 = 11'h47c == index ? 32'h65736162 : _GEN_1147; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1149 = 11'h47d == index ? 32'h6572662d : _GEN_1148; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1150 = 11'h47e == index ? 32'h6e657571 : _GEN_1149; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1151 = 11'h47f == index ? 32'h63007963 : _GEN_1150; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1152 = 11'h480 == index ? 32'h6b636f6c : _GEN_1151; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1153 = 11'h481 == index ? 32'h6572662d : _GEN_1152; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1154 = 11'h482 == index ? 32'h6e657571 : _GEN_1153; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1155 = 11'h483 == index ? 32'h64007963 : _GEN_1154; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1156 = 11'h484 == index ? 32'h6361632d : _GEN_1155; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1157 = 11'h485 == index ? 32'h622d6568 : _GEN_1156; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1158 = 11'h486 == index ? 32'h6b636f6c : _GEN_1157; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1159 = 11'h487 == index ? 32'h7a69732d : _GEN_1158; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1160 = 11'h488 == index ? 32'h2d640065 : _GEN_1159; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1161 = 11'h489 == index ? 32'h68636163 : _GEN_1160; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1162 = 11'h48a == index ? 32'h65732d65 : _GEN_1161; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1163 = 11'h48b == index ? 32'h64007374 : _GEN_1162; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1164 = 11'h48c == index ? 32'h6361632d : _GEN_1163; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1165 = 11'h48d == index ? 32'h732d6568 : _GEN_1164; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1166 = 11'h48e == index ? 32'h657a69 : _GEN_1165; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1167 = 11'h48f == index ? 32'h69766564 : _GEN_1166; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1168 = 11'h490 == index ? 32'h745f6563 : _GEN_1167; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1169 = 11'h491 == index ? 32'h657079 : _GEN_1168; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1170 = 11'h492 == index ? 32'h64726168 : _GEN_1169; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1171 = 11'h493 == index ? 32'h65726177 : _GEN_1170; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1172 = 11'h494 == index ? 32'h6578652d : _GEN_1171; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1173 = 11'h495 == index ? 32'h72622d63 : _GEN_1172; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1174 = 11'h496 == index ? 32'h706b6165 : _GEN_1173; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1175 = 11'h497 == index ? 32'h746e696f : _GEN_1174; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1176 = 11'h498 == index ? 32'h756f632d : _GEN_1175; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1177 = 11'h499 == index ? 32'h6900746e : _GEN_1176; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1178 = 11'h49a == index ? 32'h6361632d : _GEN_1177; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1179 = 11'h49b == index ? 32'h622d6568 : _GEN_1178; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1180 = 11'h49c == index ? 32'h6b636f6c : _GEN_1179; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1181 = 11'h49d == index ? 32'h7a69732d : _GEN_1180; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1182 = 11'h49e == index ? 32'h2d690065 : _GEN_1181; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1183 = 11'h49f == index ? 32'h68636163 : _GEN_1182; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1184 = 11'h4a0 == index ? 32'h65732d65 : _GEN_1183; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1185 = 11'h4a1 == index ? 32'h69007374 : _GEN_1184; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1186 = 11'h4a2 == index ? 32'h6361632d : _GEN_1185; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1187 = 11'h4a3 == index ? 32'h732d6568 : _GEN_1186; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1188 = 11'h4a4 == index ? 32'h657a69 : _GEN_1187; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1189 = 11'h4a5 == index ? 32'h7478656e : _GEN_1188; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1190 = 11'h4a6 == index ? 32'h76656c2d : _GEN_1189; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1191 = 11'h4a7 == index ? 32'h632d6c65 : _GEN_1190; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1192 = 11'h4a8 == index ? 32'h65686361 : _GEN_1191; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1193 = 11'h4a9 == index ? 32'h67657200 : _GEN_1192; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1194 = 11'h4aa == index ? 32'h73697200 : _GEN_1193; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1195 = 11'h4ab == index ? 32'h692c7663 : _GEN_1194; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1196 = 11'h4ac == index ? 32'h72006173 : _GEN_1195; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1197 = 11'h4ad == index ? 32'h76637369 : _GEN_1196; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1198 = 11'h4ae == index ? 32'h706d702c : _GEN_1197; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1199 = 11'h4af == index ? 32'h6e617267 : _GEN_1198; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1200 = 11'h4b0 == index ? 32'h72616c75 : _GEN_1199; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1201 = 11'h4b1 == index ? 32'h797469 : _GEN_1200; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1202 = 11'h4b2 == index ? 32'h63736972 : _GEN_1201; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1203 = 11'h4b3 == index ? 32'h6d702c76 : _GEN_1202; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1204 = 11'h4b4 == index ? 32'h67657270 : _GEN_1203; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1205 = 11'h4b5 == index ? 32'h736e6f69 : _GEN_1204; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1206 = 11'h4b6 == index ? 32'h66697300 : _GEN_1205; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1207 = 11'h4b7 == index ? 32'h2c657669 : _GEN_1206; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1208 = 11'h4b8 == index ? 32'h6d697469 : _GEN_1207; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1209 = 11'h4b9 == index ? 32'h61747300 : _GEN_1208; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1210 = 11'h4ba == index ? 32'h737574 : _GEN_1209; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1211 = 11'h4bb == index ? 32'h746e6923 : _GEN_1210; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1212 = 11'h4bc == index ? 32'h75727265 : _GEN_1211; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1213 = 11'h4bd == index ? 32'h632d7470 : _GEN_1212; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1214 = 11'h4be == index ? 32'h736c6c65 : _GEN_1213; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1215 = 11'h4bf == index ? 32'h746e6900 : _GEN_1214; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1216 = 11'h4c0 == index ? 32'h75727265 : _GEN_1215; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1217 = 11'h4c1 == index ? 32'h632d7470 : _GEN_1216; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1218 = 11'h4c2 == index ? 32'h72746e6f : _GEN_1217; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1219 = 11'h4c3 == index ? 32'h656c6c6f : _GEN_1218; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1220 = 11'h4c4 == index ? 32'h68700072 : _GEN_1219; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1221 = 11'h4c5 == index ? 32'h6c646e61 : _GEN_1220; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1222 = 11'h4c6 == index ? 32'h61720065 : _GEN_1221; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1223 = 11'h4c7 == index ? 32'h7365676e : _GEN_1222; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1224 = 11'h4c8 == index ? 32'h746e6900 : _GEN_1223; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1225 = 11'h4c9 == index ? 32'h75727265 : _GEN_1224; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1226 = 11'h4ca == index ? 32'h702d7470 : _GEN_1225; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1227 = 11'h4cb == index ? 32'h6e657261 : _GEN_1226; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1228 = 11'h4cc == index ? 32'h6e690074 : _GEN_1227; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1229 = 11'h4cd == index ? 32'h72726574 : _GEN_1228; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1230 = 11'h4ce == index ? 32'h73747075 : _GEN_1229; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1231 = 11'h4cf == index ? 32'h67657200 : _GEN_1230; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1232 = 11'h4d0 == index ? 32'h6d616e2d : _GEN_1231; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1233 = 11'h4d1 == index ? 32'h69007365 : _GEN_1232; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1234 = 11'h4d2 == index ? 32'h7265746e : _GEN_1233; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1235 = 11'h4d3 == index ? 32'h74707572 : _GEN_1234; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1236 = 11'h4d4 == index ? 32'h78652d73 : _GEN_1235; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1237 = 11'h4d5 == index ? 32'h646e6574 : _GEN_1236; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1238 = 11'h4d6 == index ? 32'h64006465 : _GEN_1237; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1239 = 11'h4d7 == index ? 32'h67756265 : _GEN_1238; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1240 = 11'h4d8 == index ? 32'h7474612d : _GEN_1239; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1241 = 11'h4d9 == index ? 32'h686361 : _GEN_1240; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1242 = 11'h4da == index ? 32'h69706723 : _GEN_1241; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1243 = 11'h4db == index ? 32'h65632d6f : _GEN_1242; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1244 = 11'h4dc == index ? 32'h736c6c : _GEN_1243; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1245 = 11'h4dd == index ? 32'h636f6c63 : _GEN_1244; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1246 = 11'h4de == index ? 32'h6700736b : _GEN_1245; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1247 = 11'h4df == index ? 32'h2d6f6970 : _GEN_1246; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1248 = 11'h4e0 == index ? 32'h746e6f63 : _GEN_1247; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1249 = 11'h4e1 == index ? 32'h6c6c6f72 : _GEN_1248; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1250 = 11'h4e2 == index ? 32'h72007265 : _GEN_1249; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1251 = 11'h4e3 == index ? 32'h76637369 : _GEN_1250; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1252 = 11'h4e4 == index ? 32'h78616d2c : _GEN_1251; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1253 = 11'h4e5 == index ? 32'h6972702d : _GEN_1252; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1254 = 11'h4e6 == index ? 32'h7469726f : _GEN_1253; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1255 = 11'h4e7 == index ? 32'h69720079 : _GEN_1254; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1256 = 11'h4e8 == index ? 32'h2c766373 : _GEN_1255; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1257 = 11'h4e9 == index ? 32'h7665646e : _GEN_1256; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1258 = 11'h4ea == index ? 32'h66697300 : _GEN_1257; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1259 = 11'h4eb == index ? 32'h2c657669 : _GEN_1258; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1260 = 11'h4ec == index ? 32'h706d6f63 : _GEN_1259; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1261 = 11'h4ed == index ? 32'h74617261 : _GEN_1260; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1262 = 11'h4ee == index ? 32'h772d726f : _GEN_1261; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1263 = 11'h4ef == index ? 32'h68746469 : _GEN_1262; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1264 = 11'h4f0 == index ? 32'h73746962 : _GEN_1263; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1265 = 11'h4f1 == index ? 32'h66697300 : _GEN_1264; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1266 = 11'h4f2 == index ? 32'h2c657669 : _GEN_1265; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1267 = 11'h4f3 == index ? 32'h6d6f636e : _GEN_1266; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1268 = 11'h4f4 == index ? 32'h61726170 : _GEN_1267; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1269 = 11'h4f5 == index ? 32'h73726f74 : _GEN_1268; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1270 = 11'h4f6 == index ? 32'h6c632300 : _GEN_1269; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1271 = 11'h4f7 == index ? 32'h2d6b636f : _GEN_1270; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1272 = 11'h4f8 == index ? 32'h6c6c6563 : _GEN_1271; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1273 = 11'h4f9 == index ? 32'h6c630073 : _GEN_1272; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1274 = 11'h4fa == index ? 32'h2d6b636f : _GEN_1273; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1275 = 11'h4fb == index ? 32'h7074756f : _GEN_1274; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1276 = 11'h4fc == index ? 32'h6e2d7475 : _GEN_1275; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1277 = 11'h4fd == index ? 32'h73656d61 : _GEN_1276; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1278 = 11'h4fe == index ? 32'h0 : _GEN_1277; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1279 = 11'h4ff == index ? 32'h0 : _GEN_1278; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1280 = 11'h500 == index ? 32'h0 : _GEN_1279; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1281 = 11'h501 == index ? 32'h0 : _GEN_1280; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1282 = 11'h502 == index ? 32'h0 : _GEN_1281; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1283 = 11'h503 == index ? 32'h0 : _GEN_1282; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1284 = 11'h504 == index ? 32'h0 : _GEN_1283; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1285 = 11'h505 == index ? 32'h0 : _GEN_1284; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1286 = 11'h506 == index ? 32'h0 : _GEN_1285; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1287 = 11'h507 == index ? 32'h0 : _GEN_1286; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1288 = 11'h508 == index ? 32'h0 : _GEN_1287; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1289 = 11'h509 == index ? 32'h0 : _GEN_1288; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1290 = 11'h50a == index ? 32'h0 : _GEN_1289; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1291 = 11'h50b == index ? 32'h0 : _GEN_1290; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1292 = 11'h50c == index ? 32'h0 : _GEN_1291; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1293 = 11'h50d == index ? 32'h0 : _GEN_1292; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1294 = 11'h50e == index ? 32'h0 : _GEN_1293; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1295 = 11'h50f == index ? 32'h0 : _GEN_1294; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1296 = 11'h510 == index ? 32'h0 : _GEN_1295; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1297 = 11'h511 == index ? 32'h0 : _GEN_1296; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1298 = 11'h512 == index ? 32'h0 : _GEN_1297; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1299 = 11'h513 == index ? 32'h0 : _GEN_1298; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1300 = 11'h514 == index ? 32'h0 : _GEN_1299; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1301 = 11'h515 == index ? 32'h0 : _GEN_1300; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1302 = 11'h516 == index ? 32'h0 : _GEN_1301; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1303 = 11'h517 == index ? 32'h0 : _GEN_1302; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1304 = 11'h518 == index ? 32'h0 : _GEN_1303; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1305 = 11'h519 == index ? 32'h0 : _GEN_1304; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1306 = 11'h51a == index ? 32'h0 : _GEN_1305; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1307 = 11'h51b == index ? 32'h0 : _GEN_1306; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1308 = 11'h51c == index ? 32'h0 : _GEN_1307; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1309 = 11'h51d == index ? 32'h0 : _GEN_1308; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1310 = 11'h51e == index ? 32'h0 : _GEN_1309; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1311 = 11'h51f == index ? 32'h0 : _GEN_1310; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1312 = 11'h520 == index ? 32'h0 : _GEN_1311; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1313 = 11'h521 == index ? 32'h0 : _GEN_1312; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1314 = 11'h522 == index ? 32'h0 : _GEN_1313; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1315 = 11'h523 == index ? 32'h0 : _GEN_1314; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1316 = 11'h524 == index ? 32'h0 : _GEN_1315; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1317 = 11'h525 == index ? 32'h0 : _GEN_1316; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1318 = 11'h526 == index ? 32'h0 : _GEN_1317; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1319 = 11'h527 == index ? 32'h0 : _GEN_1318; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1320 = 11'h528 == index ? 32'h0 : _GEN_1319; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1321 = 11'h529 == index ? 32'h0 : _GEN_1320; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1322 = 11'h52a == index ? 32'h0 : _GEN_1321; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1323 = 11'h52b == index ? 32'h0 : _GEN_1322; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1324 = 11'h52c == index ? 32'h0 : _GEN_1323; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1325 = 11'h52d == index ? 32'h0 : _GEN_1324; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1326 = 11'h52e == index ? 32'h0 : _GEN_1325; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1327 = 11'h52f == index ? 32'h0 : _GEN_1326; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1328 = 11'h530 == index ? 32'h0 : _GEN_1327; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1329 = 11'h531 == index ? 32'h0 : _GEN_1328; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1330 = 11'h532 == index ? 32'h0 : _GEN_1329; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1331 = 11'h533 == index ? 32'h0 : _GEN_1330; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1332 = 11'h534 == index ? 32'h0 : _GEN_1331; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1333 = 11'h535 == index ? 32'h0 : _GEN_1332; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1334 = 11'h536 == index ? 32'h0 : _GEN_1333; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1335 = 11'h537 == index ? 32'h0 : _GEN_1334; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1336 = 11'h538 == index ? 32'h0 : _GEN_1335; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1337 = 11'h539 == index ? 32'h0 : _GEN_1336; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1338 = 11'h53a == index ? 32'h0 : _GEN_1337; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1339 = 11'h53b == index ? 32'h0 : _GEN_1338; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1340 = 11'h53c == index ? 32'h0 : _GEN_1339; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1341 = 11'h53d == index ? 32'h0 : _GEN_1340; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1342 = 11'h53e == index ? 32'h0 : _GEN_1341; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1343 = 11'h53f == index ? 32'h0 : _GEN_1342; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1344 = 11'h540 == index ? 32'h0 : _GEN_1343; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1345 = 11'h541 == index ? 32'h0 : _GEN_1344; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1346 = 11'h542 == index ? 32'h0 : _GEN_1345; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1347 = 11'h543 == index ? 32'h0 : _GEN_1346; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1348 = 11'h544 == index ? 32'h0 : _GEN_1347; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1349 = 11'h545 == index ? 32'h0 : _GEN_1348; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1350 = 11'h546 == index ? 32'h0 : _GEN_1349; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1351 = 11'h547 == index ? 32'h0 : _GEN_1350; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1352 = 11'h548 == index ? 32'h0 : _GEN_1351; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1353 = 11'h549 == index ? 32'h0 : _GEN_1352; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1354 = 11'h54a == index ? 32'h0 : _GEN_1353; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1355 = 11'h54b == index ? 32'h0 : _GEN_1354; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1356 = 11'h54c == index ? 32'h0 : _GEN_1355; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1357 = 11'h54d == index ? 32'h0 : _GEN_1356; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1358 = 11'h54e == index ? 32'h0 : _GEN_1357; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1359 = 11'h54f == index ? 32'h0 : _GEN_1358; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1360 = 11'h550 == index ? 32'h0 : _GEN_1359; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1361 = 11'h551 == index ? 32'h0 : _GEN_1360; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1362 = 11'h552 == index ? 32'h0 : _GEN_1361; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1363 = 11'h553 == index ? 32'h0 : _GEN_1362; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1364 = 11'h554 == index ? 32'h0 : _GEN_1363; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1365 = 11'h555 == index ? 32'h0 : _GEN_1364; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1366 = 11'h556 == index ? 32'h0 : _GEN_1365; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1367 = 11'h557 == index ? 32'h0 : _GEN_1366; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1368 = 11'h558 == index ? 32'h0 : _GEN_1367; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1369 = 11'h559 == index ? 32'h0 : _GEN_1368; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1370 = 11'h55a == index ? 32'h0 : _GEN_1369; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1371 = 11'h55b == index ? 32'h0 : _GEN_1370; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1372 = 11'h55c == index ? 32'h0 : _GEN_1371; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1373 = 11'h55d == index ? 32'h0 : _GEN_1372; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1374 = 11'h55e == index ? 32'h0 : _GEN_1373; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1375 = 11'h55f == index ? 32'h0 : _GEN_1374; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1376 = 11'h560 == index ? 32'h0 : _GEN_1375; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1377 = 11'h561 == index ? 32'h0 : _GEN_1376; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1378 = 11'h562 == index ? 32'h0 : _GEN_1377; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1379 = 11'h563 == index ? 32'h0 : _GEN_1378; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1380 = 11'h564 == index ? 32'h0 : _GEN_1379; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1381 = 11'h565 == index ? 32'h0 : _GEN_1380; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1382 = 11'h566 == index ? 32'h0 : _GEN_1381; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1383 = 11'h567 == index ? 32'h0 : _GEN_1382; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1384 = 11'h568 == index ? 32'h0 : _GEN_1383; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1385 = 11'h569 == index ? 32'h0 : _GEN_1384; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1386 = 11'h56a == index ? 32'h0 : _GEN_1385; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1387 = 11'h56b == index ? 32'h0 : _GEN_1386; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1388 = 11'h56c == index ? 32'h0 : _GEN_1387; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1389 = 11'h56d == index ? 32'h0 : _GEN_1388; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1390 = 11'h56e == index ? 32'h0 : _GEN_1389; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1391 = 11'h56f == index ? 32'h0 : _GEN_1390; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1392 = 11'h570 == index ? 32'h0 : _GEN_1391; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1393 = 11'h571 == index ? 32'h0 : _GEN_1392; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1394 = 11'h572 == index ? 32'h0 : _GEN_1393; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1395 = 11'h573 == index ? 32'h0 : _GEN_1394; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1396 = 11'h574 == index ? 32'h0 : _GEN_1395; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1397 = 11'h575 == index ? 32'h0 : _GEN_1396; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1398 = 11'h576 == index ? 32'h0 : _GEN_1397; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1399 = 11'h577 == index ? 32'h0 : _GEN_1398; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1400 = 11'h578 == index ? 32'h0 : _GEN_1399; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1401 = 11'h579 == index ? 32'h0 : _GEN_1400; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1402 = 11'h57a == index ? 32'h0 : _GEN_1401; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1403 = 11'h57b == index ? 32'h0 : _GEN_1402; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1404 = 11'h57c == index ? 32'h0 : _GEN_1403; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1405 = 11'h57d == index ? 32'h0 : _GEN_1404; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1406 = 11'h57e == index ? 32'h0 : _GEN_1405; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1407 = 11'h57f == index ? 32'h0 : _GEN_1406; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1408 = 11'h580 == index ? 32'h0 : _GEN_1407; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1409 = 11'h581 == index ? 32'h0 : _GEN_1408; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1410 = 11'h582 == index ? 32'h0 : _GEN_1409; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1411 = 11'h583 == index ? 32'h0 : _GEN_1410; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1412 = 11'h584 == index ? 32'h0 : _GEN_1411; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1413 = 11'h585 == index ? 32'h0 : _GEN_1412; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1414 = 11'h586 == index ? 32'h0 : _GEN_1413; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1415 = 11'h587 == index ? 32'h0 : _GEN_1414; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1416 = 11'h588 == index ? 32'h0 : _GEN_1415; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1417 = 11'h589 == index ? 32'h0 : _GEN_1416; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1418 = 11'h58a == index ? 32'h0 : _GEN_1417; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1419 = 11'h58b == index ? 32'h0 : _GEN_1418; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1420 = 11'h58c == index ? 32'h0 : _GEN_1419; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1421 = 11'h58d == index ? 32'h0 : _GEN_1420; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1422 = 11'h58e == index ? 32'h0 : _GEN_1421; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1423 = 11'h58f == index ? 32'h0 : _GEN_1422; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1424 = 11'h590 == index ? 32'h0 : _GEN_1423; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1425 = 11'h591 == index ? 32'h0 : _GEN_1424; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1426 = 11'h592 == index ? 32'h0 : _GEN_1425; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1427 = 11'h593 == index ? 32'h0 : _GEN_1426; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1428 = 11'h594 == index ? 32'h0 : _GEN_1427; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1429 = 11'h595 == index ? 32'h0 : _GEN_1428; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1430 = 11'h596 == index ? 32'h0 : _GEN_1429; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1431 = 11'h597 == index ? 32'h0 : _GEN_1430; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1432 = 11'h598 == index ? 32'h0 : _GEN_1431; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1433 = 11'h599 == index ? 32'h0 : _GEN_1432; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1434 = 11'h59a == index ? 32'h0 : _GEN_1433; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1435 = 11'h59b == index ? 32'h0 : _GEN_1434; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1436 = 11'h59c == index ? 32'h0 : _GEN_1435; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1437 = 11'h59d == index ? 32'h0 : _GEN_1436; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1438 = 11'h59e == index ? 32'h0 : _GEN_1437; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1439 = 11'h59f == index ? 32'h0 : _GEN_1438; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1440 = 11'h5a0 == index ? 32'h0 : _GEN_1439; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1441 = 11'h5a1 == index ? 32'h0 : _GEN_1440; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1442 = 11'h5a2 == index ? 32'h0 : _GEN_1441; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1443 = 11'h5a3 == index ? 32'h0 : _GEN_1442; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1444 = 11'h5a4 == index ? 32'h0 : _GEN_1443; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1445 = 11'h5a5 == index ? 32'h0 : _GEN_1444; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1446 = 11'h5a6 == index ? 32'h0 : _GEN_1445; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1447 = 11'h5a7 == index ? 32'h0 : _GEN_1446; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1448 = 11'h5a8 == index ? 32'h0 : _GEN_1447; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1449 = 11'h5a9 == index ? 32'h0 : _GEN_1448; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1450 = 11'h5aa == index ? 32'h0 : _GEN_1449; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1451 = 11'h5ab == index ? 32'h0 : _GEN_1450; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1452 = 11'h5ac == index ? 32'h0 : _GEN_1451; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1453 = 11'h5ad == index ? 32'h0 : _GEN_1452; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1454 = 11'h5ae == index ? 32'h0 : _GEN_1453; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1455 = 11'h5af == index ? 32'h0 : _GEN_1454; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1456 = 11'h5b0 == index ? 32'h0 : _GEN_1455; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1457 = 11'h5b1 == index ? 32'h0 : _GEN_1456; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1458 = 11'h5b2 == index ? 32'h0 : _GEN_1457; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1459 = 11'h5b3 == index ? 32'h0 : _GEN_1458; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1460 = 11'h5b4 == index ? 32'h0 : _GEN_1459; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1461 = 11'h5b5 == index ? 32'h0 : _GEN_1460; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1462 = 11'h5b6 == index ? 32'h0 : _GEN_1461; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1463 = 11'h5b7 == index ? 32'h0 : _GEN_1462; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1464 = 11'h5b8 == index ? 32'h0 : _GEN_1463; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1465 = 11'h5b9 == index ? 32'h0 : _GEN_1464; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1466 = 11'h5ba == index ? 32'h0 : _GEN_1465; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1467 = 11'h5bb == index ? 32'h0 : _GEN_1466; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1468 = 11'h5bc == index ? 32'h0 : _GEN_1467; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1469 = 11'h5bd == index ? 32'h0 : _GEN_1468; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1470 = 11'h5be == index ? 32'h0 : _GEN_1469; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1471 = 11'h5bf == index ? 32'h0 : _GEN_1470; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1472 = 11'h5c0 == index ? 32'h0 : _GEN_1471; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1473 = 11'h5c1 == index ? 32'h0 : _GEN_1472; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1474 = 11'h5c2 == index ? 32'h0 : _GEN_1473; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1475 = 11'h5c3 == index ? 32'h0 : _GEN_1474; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1476 = 11'h5c4 == index ? 32'h0 : _GEN_1475; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1477 = 11'h5c5 == index ? 32'h0 : _GEN_1476; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1478 = 11'h5c6 == index ? 32'h0 : _GEN_1477; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1479 = 11'h5c7 == index ? 32'h0 : _GEN_1478; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1480 = 11'h5c8 == index ? 32'h0 : _GEN_1479; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1481 = 11'h5c9 == index ? 32'h0 : _GEN_1480; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1482 = 11'h5ca == index ? 32'h0 : _GEN_1481; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1483 = 11'h5cb == index ? 32'h0 : _GEN_1482; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1484 = 11'h5cc == index ? 32'h0 : _GEN_1483; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1485 = 11'h5cd == index ? 32'h0 : _GEN_1484; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1486 = 11'h5ce == index ? 32'h0 : _GEN_1485; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1487 = 11'h5cf == index ? 32'h0 : _GEN_1486; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1488 = 11'h5d0 == index ? 32'h0 : _GEN_1487; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1489 = 11'h5d1 == index ? 32'h0 : _GEN_1488; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1490 = 11'h5d2 == index ? 32'h0 : _GEN_1489; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1491 = 11'h5d3 == index ? 32'h0 : _GEN_1490; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1492 = 11'h5d4 == index ? 32'h0 : _GEN_1491; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1493 = 11'h5d5 == index ? 32'h0 : _GEN_1492; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1494 = 11'h5d6 == index ? 32'h0 : _GEN_1493; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1495 = 11'h5d7 == index ? 32'h0 : _GEN_1494; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1496 = 11'h5d8 == index ? 32'h0 : _GEN_1495; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1497 = 11'h5d9 == index ? 32'h0 : _GEN_1496; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1498 = 11'h5da == index ? 32'h0 : _GEN_1497; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1499 = 11'h5db == index ? 32'h0 : _GEN_1498; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1500 = 11'h5dc == index ? 32'h0 : _GEN_1499; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1501 = 11'h5dd == index ? 32'h0 : _GEN_1500; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1502 = 11'h5de == index ? 32'h0 : _GEN_1501; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1503 = 11'h5df == index ? 32'h0 : _GEN_1502; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1504 = 11'h5e0 == index ? 32'h0 : _GEN_1503; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1505 = 11'h5e1 == index ? 32'h0 : _GEN_1504; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1506 = 11'h5e2 == index ? 32'h0 : _GEN_1505; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1507 = 11'h5e3 == index ? 32'h0 : _GEN_1506; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1508 = 11'h5e4 == index ? 32'h0 : _GEN_1507; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1509 = 11'h5e5 == index ? 32'h0 : _GEN_1508; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1510 = 11'h5e6 == index ? 32'h0 : _GEN_1509; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1511 = 11'h5e7 == index ? 32'h0 : _GEN_1510; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1512 = 11'h5e8 == index ? 32'h0 : _GEN_1511; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1513 = 11'h5e9 == index ? 32'h0 : _GEN_1512; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1514 = 11'h5ea == index ? 32'h0 : _GEN_1513; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1515 = 11'h5eb == index ? 32'h0 : _GEN_1514; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1516 = 11'h5ec == index ? 32'h0 : _GEN_1515; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1517 = 11'h5ed == index ? 32'h0 : _GEN_1516; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1518 = 11'h5ee == index ? 32'h0 : _GEN_1517; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1519 = 11'h5ef == index ? 32'h0 : _GEN_1518; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1520 = 11'h5f0 == index ? 32'h0 : _GEN_1519; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1521 = 11'h5f1 == index ? 32'h0 : _GEN_1520; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1522 = 11'h5f2 == index ? 32'h0 : _GEN_1521; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1523 = 11'h5f3 == index ? 32'h0 : _GEN_1522; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1524 = 11'h5f4 == index ? 32'h0 : _GEN_1523; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1525 = 11'h5f5 == index ? 32'h0 : _GEN_1524; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1526 = 11'h5f6 == index ? 32'h0 : _GEN_1525; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1527 = 11'h5f7 == index ? 32'h0 : _GEN_1526; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1528 = 11'h5f8 == index ? 32'h0 : _GEN_1527; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1529 = 11'h5f9 == index ? 32'h0 : _GEN_1528; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1530 = 11'h5fa == index ? 32'h0 : _GEN_1529; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1531 = 11'h5fb == index ? 32'h0 : _GEN_1530; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1532 = 11'h5fc == index ? 32'h0 : _GEN_1531; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1533 = 11'h5fd == index ? 32'h0 : _GEN_1532; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1534 = 11'h5fe == index ? 32'h0 : _GEN_1533; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1535 = 11'h5ff == index ? 32'h0 : _GEN_1534; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1536 = 11'h600 == index ? 32'h0 : _GEN_1535; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1537 = 11'h601 == index ? 32'h0 : _GEN_1536; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1538 = 11'h602 == index ? 32'h0 : _GEN_1537; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1539 = 11'h603 == index ? 32'h0 : _GEN_1538; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1540 = 11'h604 == index ? 32'h0 : _GEN_1539; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1541 = 11'h605 == index ? 32'h0 : _GEN_1540; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1542 = 11'h606 == index ? 32'h0 : _GEN_1541; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1543 = 11'h607 == index ? 32'h0 : _GEN_1542; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1544 = 11'h608 == index ? 32'h0 : _GEN_1543; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1545 = 11'h609 == index ? 32'h0 : _GEN_1544; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1546 = 11'h60a == index ? 32'h0 : _GEN_1545; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1547 = 11'h60b == index ? 32'h0 : _GEN_1546; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1548 = 11'h60c == index ? 32'h0 : _GEN_1547; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1549 = 11'h60d == index ? 32'h0 : _GEN_1548; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1550 = 11'h60e == index ? 32'h0 : _GEN_1549; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1551 = 11'h60f == index ? 32'h0 : _GEN_1550; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1552 = 11'h610 == index ? 32'h0 : _GEN_1551; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1553 = 11'h611 == index ? 32'h0 : _GEN_1552; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1554 = 11'h612 == index ? 32'h0 : _GEN_1553; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1555 = 11'h613 == index ? 32'h0 : _GEN_1554; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1556 = 11'h614 == index ? 32'h0 : _GEN_1555; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1557 = 11'h615 == index ? 32'h0 : _GEN_1556; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1558 = 11'h616 == index ? 32'h0 : _GEN_1557; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1559 = 11'h617 == index ? 32'h0 : _GEN_1558; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1560 = 11'h618 == index ? 32'h0 : _GEN_1559; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1561 = 11'h619 == index ? 32'h0 : _GEN_1560; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1562 = 11'h61a == index ? 32'h0 : _GEN_1561; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1563 = 11'h61b == index ? 32'h0 : _GEN_1562; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1564 = 11'h61c == index ? 32'h0 : _GEN_1563; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1565 = 11'h61d == index ? 32'h0 : _GEN_1564; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1566 = 11'h61e == index ? 32'h0 : _GEN_1565; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1567 = 11'h61f == index ? 32'h0 : _GEN_1566; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1568 = 11'h620 == index ? 32'h0 : _GEN_1567; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1569 = 11'h621 == index ? 32'h0 : _GEN_1568; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1570 = 11'h622 == index ? 32'h0 : _GEN_1569; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1571 = 11'h623 == index ? 32'h0 : _GEN_1570; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1572 = 11'h624 == index ? 32'h0 : _GEN_1571; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1573 = 11'h625 == index ? 32'h0 : _GEN_1572; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1574 = 11'h626 == index ? 32'h0 : _GEN_1573; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1575 = 11'h627 == index ? 32'h0 : _GEN_1574; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1576 = 11'h628 == index ? 32'h0 : _GEN_1575; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1577 = 11'h629 == index ? 32'h0 : _GEN_1576; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1578 = 11'h62a == index ? 32'h0 : _GEN_1577; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1579 = 11'h62b == index ? 32'h0 : _GEN_1578; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1580 = 11'h62c == index ? 32'h0 : _GEN_1579; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1581 = 11'h62d == index ? 32'h0 : _GEN_1580; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1582 = 11'h62e == index ? 32'h0 : _GEN_1581; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1583 = 11'h62f == index ? 32'h0 : _GEN_1582; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1584 = 11'h630 == index ? 32'h0 : _GEN_1583; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1585 = 11'h631 == index ? 32'h0 : _GEN_1584; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1586 = 11'h632 == index ? 32'h0 : _GEN_1585; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1587 = 11'h633 == index ? 32'h0 : _GEN_1586; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1588 = 11'h634 == index ? 32'h0 : _GEN_1587; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1589 = 11'h635 == index ? 32'h0 : _GEN_1588; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1590 = 11'h636 == index ? 32'h0 : _GEN_1589; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1591 = 11'h637 == index ? 32'h0 : _GEN_1590; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1592 = 11'h638 == index ? 32'h0 : _GEN_1591; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1593 = 11'h639 == index ? 32'h0 : _GEN_1592; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1594 = 11'h63a == index ? 32'h0 : _GEN_1593; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1595 = 11'h63b == index ? 32'h0 : _GEN_1594; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1596 = 11'h63c == index ? 32'h0 : _GEN_1595; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1597 = 11'h63d == index ? 32'h0 : _GEN_1596; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1598 = 11'h63e == index ? 32'h0 : _GEN_1597; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1599 = 11'h63f == index ? 32'h0 : _GEN_1598; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1600 = 11'h640 == index ? 32'h0 : _GEN_1599; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1601 = 11'h641 == index ? 32'h0 : _GEN_1600; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1602 = 11'h642 == index ? 32'h0 : _GEN_1601; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1603 = 11'h643 == index ? 32'h0 : _GEN_1602; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1604 = 11'h644 == index ? 32'h0 : _GEN_1603; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1605 = 11'h645 == index ? 32'h0 : _GEN_1604; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1606 = 11'h646 == index ? 32'h0 : _GEN_1605; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1607 = 11'h647 == index ? 32'h0 : _GEN_1606; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1608 = 11'h648 == index ? 32'h0 : _GEN_1607; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1609 = 11'h649 == index ? 32'h0 : _GEN_1608; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1610 = 11'h64a == index ? 32'h0 : _GEN_1609; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1611 = 11'h64b == index ? 32'h0 : _GEN_1610; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1612 = 11'h64c == index ? 32'h0 : _GEN_1611; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1613 = 11'h64d == index ? 32'h0 : _GEN_1612; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1614 = 11'h64e == index ? 32'h0 : _GEN_1613; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1615 = 11'h64f == index ? 32'h0 : _GEN_1614; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1616 = 11'h650 == index ? 32'h0 : _GEN_1615; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1617 = 11'h651 == index ? 32'h0 : _GEN_1616; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1618 = 11'h652 == index ? 32'h0 : _GEN_1617; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1619 = 11'h653 == index ? 32'h0 : _GEN_1618; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1620 = 11'h654 == index ? 32'h0 : _GEN_1619; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1621 = 11'h655 == index ? 32'h0 : _GEN_1620; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1622 = 11'h656 == index ? 32'h0 : _GEN_1621; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1623 = 11'h657 == index ? 32'h0 : _GEN_1622; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1624 = 11'h658 == index ? 32'h0 : _GEN_1623; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1625 = 11'h659 == index ? 32'h0 : _GEN_1624; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1626 = 11'h65a == index ? 32'h0 : _GEN_1625; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1627 = 11'h65b == index ? 32'h0 : _GEN_1626; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1628 = 11'h65c == index ? 32'h0 : _GEN_1627; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1629 = 11'h65d == index ? 32'h0 : _GEN_1628; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1630 = 11'h65e == index ? 32'h0 : _GEN_1629; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1631 = 11'h65f == index ? 32'h0 : _GEN_1630; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1632 = 11'h660 == index ? 32'h0 : _GEN_1631; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1633 = 11'h661 == index ? 32'h0 : _GEN_1632; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1634 = 11'h662 == index ? 32'h0 : _GEN_1633; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1635 = 11'h663 == index ? 32'h0 : _GEN_1634; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1636 = 11'h664 == index ? 32'h0 : _GEN_1635; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1637 = 11'h665 == index ? 32'h0 : _GEN_1636; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1638 = 11'h666 == index ? 32'h0 : _GEN_1637; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1639 = 11'h667 == index ? 32'h0 : _GEN_1638; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1640 = 11'h668 == index ? 32'h0 : _GEN_1639; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1641 = 11'h669 == index ? 32'h0 : _GEN_1640; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1642 = 11'h66a == index ? 32'h0 : _GEN_1641; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1643 = 11'h66b == index ? 32'h0 : _GEN_1642; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1644 = 11'h66c == index ? 32'h0 : _GEN_1643; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1645 = 11'h66d == index ? 32'h0 : _GEN_1644; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1646 = 11'h66e == index ? 32'h0 : _GEN_1645; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1647 = 11'h66f == index ? 32'h0 : _GEN_1646; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1648 = 11'h670 == index ? 32'h0 : _GEN_1647; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1649 = 11'h671 == index ? 32'h0 : _GEN_1648; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1650 = 11'h672 == index ? 32'h0 : _GEN_1649; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1651 = 11'h673 == index ? 32'h0 : _GEN_1650; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1652 = 11'h674 == index ? 32'h0 : _GEN_1651; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1653 = 11'h675 == index ? 32'h0 : _GEN_1652; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1654 = 11'h676 == index ? 32'h0 : _GEN_1653; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1655 = 11'h677 == index ? 32'h0 : _GEN_1654; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1656 = 11'h678 == index ? 32'h0 : _GEN_1655; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1657 = 11'h679 == index ? 32'h0 : _GEN_1656; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1658 = 11'h67a == index ? 32'h0 : _GEN_1657; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1659 = 11'h67b == index ? 32'h0 : _GEN_1658; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1660 = 11'h67c == index ? 32'h0 : _GEN_1659; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1661 = 11'h67d == index ? 32'h0 : _GEN_1660; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1662 = 11'h67e == index ? 32'h0 : _GEN_1661; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1663 = 11'h67f == index ? 32'h0 : _GEN_1662; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1664 = 11'h680 == index ? 32'h0 : _GEN_1663; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1665 = 11'h681 == index ? 32'h0 : _GEN_1664; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1666 = 11'h682 == index ? 32'h0 : _GEN_1665; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1667 = 11'h683 == index ? 32'h0 : _GEN_1666; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1668 = 11'h684 == index ? 32'h0 : _GEN_1667; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1669 = 11'h685 == index ? 32'h0 : _GEN_1668; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1670 = 11'h686 == index ? 32'h0 : _GEN_1669; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1671 = 11'h687 == index ? 32'h0 : _GEN_1670; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1672 = 11'h688 == index ? 32'h0 : _GEN_1671; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1673 = 11'h689 == index ? 32'h0 : _GEN_1672; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1674 = 11'h68a == index ? 32'h0 : _GEN_1673; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1675 = 11'h68b == index ? 32'h0 : _GEN_1674; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1676 = 11'h68c == index ? 32'h0 : _GEN_1675; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1677 = 11'h68d == index ? 32'h0 : _GEN_1676; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1678 = 11'h68e == index ? 32'h0 : _GEN_1677; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1679 = 11'h68f == index ? 32'h0 : _GEN_1678; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1680 = 11'h690 == index ? 32'h0 : _GEN_1679; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1681 = 11'h691 == index ? 32'h0 : _GEN_1680; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1682 = 11'h692 == index ? 32'h0 : _GEN_1681; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1683 = 11'h693 == index ? 32'h0 : _GEN_1682; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1684 = 11'h694 == index ? 32'h0 : _GEN_1683; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1685 = 11'h695 == index ? 32'h0 : _GEN_1684; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1686 = 11'h696 == index ? 32'h0 : _GEN_1685; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1687 = 11'h697 == index ? 32'h0 : _GEN_1686; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1688 = 11'h698 == index ? 32'h0 : _GEN_1687; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1689 = 11'h699 == index ? 32'h0 : _GEN_1688; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1690 = 11'h69a == index ? 32'h0 : _GEN_1689; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1691 = 11'h69b == index ? 32'h0 : _GEN_1690; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1692 = 11'h69c == index ? 32'h0 : _GEN_1691; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1693 = 11'h69d == index ? 32'h0 : _GEN_1692; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1694 = 11'h69e == index ? 32'h0 : _GEN_1693; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1695 = 11'h69f == index ? 32'h0 : _GEN_1694; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1696 = 11'h6a0 == index ? 32'h0 : _GEN_1695; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1697 = 11'h6a1 == index ? 32'h0 : _GEN_1696; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1698 = 11'h6a2 == index ? 32'h0 : _GEN_1697; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1699 = 11'h6a3 == index ? 32'h0 : _GEN_1698; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1700 = 11'h6a4 == index ? 32'h0 : _GEN_1699; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1701 = 11'h6a5 == index ? 32'h0 : _GEN_1700; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1702 = 11'h6a6 == index ? 32'h0 : _GEN_1701; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1703 = 11'h6a7 == index ? 32'h0 : _GEN_1702; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1704 = 11'h6a8 == index ? 32'h0 : _GEN_1703; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1705 = 11'h6a9 == index ? 32'h0 : _GEN_1704; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1706 = 11'h6aa == index ? 32'h0 : _GEN_1705; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1707 = 11'h6ab == index ? 32'h0 : _GEN_1706; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1708 = 11'h6ac == index ? 32'h0 : _GEN_1707; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1709 = 11'h6ad == index ? 32'h0 : _GEN_1708; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1710 = 11'h6ae == index ? 32'h0 : _GEN_1709; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1711 = 11'h6af == index ? 32'h0 : _GEN_1710; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1712 = 11'h6b0 == index ? 32'h0 : _GEN_1711; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1713 = 11'h6b1 == index ? 32'h0 : _GEN_1712; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1714 = 11'h6b2 == index ? 32'h0 : _GEN_1713; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1715 = 11'h6b3 == index ? 32'h0 : _GEN_1714; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1716 = 11'h6b4 == index ? 32'h0 : _GEN_1715; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1717 = 11'h6b5 == index ? 32'h0 : _GEN_1716; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1718 = 11'h6b6 == index ? 32'h0 : _GEN_1717; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1719 = 11'h6b7 == index ? 32'h0 : _GEN_1718; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1720 = 11'h6b8 == index ? 32'h0 : _GEN_1719; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1721 = 11'h6b9 == index ? 32'h0 : _GEN_1720; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1722 = 11'h6ba == index ? 32'h0 : _GEN_1721; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1723 = 11'h6bb == index ? 32'h0 : _GEN_1722; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1724 = 11'h6bc == index ? 32'h0 : _GEN_1723; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1725 = 11'h6bd == index ? 32'h0 : _GEN_1724; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1726 = 11'h6be == index ? 32'h0 : _GEN_1725; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1727 = 11'h6bf == index ? 32'h0 : _GEN_1726; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1728 = 11'h6c0 == index ? 32'h0 : _GEN_1727; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1729 = 11'h6c1 == index ? 32'h0 : _GEN_1728; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1730 = 11'h6c2 == index ? 32'h0 : _GEN_1729; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1731 = 11'h6c3 == index ? 32'h0 : _GEN_1730; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1732 = 11'h6c4 == index ? 32'h0 : _GEN_1731; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1733 = 11'h6c5 == index ? 32'h0 : _GEN_1732; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1734 = 11'h6c6 == index ? 32'h0 : _GEN_1733; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1735 = 11'h6c7 == index ? 32'h0 : _GEN_1734; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1736 = 11'h6c8 == index ? 32'h0 : _GEN_1735; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1737 = 11'h6c9 == index ? 32'h0 : _GEN_1736; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1738 = 11'h6ca == index ? 32'h0 : _GEN_1737; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1739 = 11'h6cb == index ? 32'h0 : _GEN_1738; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1740 = 11'h6cc == index ? 32'h0 : _GEN_1739; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1741 = 11'h6cd == index ? 32'h0 : _GEN_1740; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1742 = 11'h6ce == index ? 32'h0 : _GEN_1741; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1743 = 11'h6cf == index ? 32'h0 : _GEN_1742; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1744 = 11'h6d0 == index ? 32'h0 : _GEN_1743; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1745 = 11'h6d1 == index ? 32'h0 : _GEN_1744; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1746 = 11'h6d2 == index ? 32'h0 : _GEN_1745; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1747 = 11'h6d3 == index ? 32'h0 : _GEN_1746; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1748 = 11'h6d4 == index ? 32'h0 : _GEN_1747; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1749 = 11'h6d5 == index ? 32'h0 : _GEN_1748; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1750 = 11'h6d6 == index ? 32'h0 : _GEN_1749; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1751 = 11'h6d7 == index ? 32'h0 : _GEN_1750; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1752 = 11'h6d8 == index ? 32'h0 : _GEN_1751; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1753 = 11'h6d9 == index ? 32'h0 : _GEN_1752; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1754 = 11'h6da == index ? 32'h0 : _GEN_1753; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1755 = 11'h6db == index ? 32'h0 : _GEN_1754; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1756 = 11'h6dc == index ? 32'h0 : _GEN_1755; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1757 = 11'h6dd == index ? 32'h0 : _GEN_1756; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1758 = 11'h6de == index ? 32'h0 : _GEN_1757; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1759 = 11'h6df == index ? 32'h0 : _GEN_1758; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1760 = 11'h6e0 == index ? 32'h0 : _GEN_1759; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1761 = 11'h6e1 == index ? 32'h0 : _GEN_1760; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1762 = 11'h6e2 == index ? 32'h0 : _GEN_1761; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1763 = 11'h6e3 == index ? 32'h0 : _GEN_1762; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1764 = 11'h6e4 == index ? 32'h0 : _GEN_1763; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1765 = 11'h6e5 == index ? 32'h0 : _GEN_1764; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1766 = 11'h6e6 == index ? 32'h0 : _GEN_1765; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1767 = 11'h6e7 == index ? 32'h0 : _GEN_1766; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1768 = 11'h6e8 == index ? 32'h0 : _GEN_1767; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1769 = 11'h6e9 == index ? 32'h0 : _GEN_1768; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1770 = 11'h6ea == index ? 32'h0 : _GEN_1769; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1771 = 11'h6eb == index ? 32'h0 : _GEN_1770; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1772 = 11'h6ec == index ? 32'h0 : _GEN_1771; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1773 = 11'h6ed == index ? 32'h0 : _GEN_1772; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1774 = 11'h6ee == index ? 32'h0 : _GEN_1773; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1775 = 11'h6ef == index ? 32'h0 : _GEN_1774; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1776 = 11'h6f0 == index ? 32'h0 : _GEN_1775; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1777 = 11'h6f1 == index ? 32'h0 : _GEN_1776; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1778 = 11'h6f2 == index ? 32'h0 : _GEN_1777; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1779 = 11'h6f3 == index ? 32'h0 : _GEN_1778; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1780 = 11'h6f4 == index ? 32'h0 : _GEN_1779; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1781 = 11'h6f5 == index ? 32'h0 : _GEN_1780; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1782 = 11'h6f6 == index ? 32'h0 : _GEN_1781; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1783 = 11'h6f7 == index ? 32'h0 : _GEN_1782; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1784 = 11'h6f8 == index ? 32'h0 : _GEN_1783; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1785 = 11'h6f9 == index ? 32'h0 : _GEN_1784; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1786 = 11'h6fa == index ? 32'h0 : _GEN_1785; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1787 = 11'h6fb == index ? 32'h0 : _GEN_1786; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1788 = 11'h6fc == index ? 32'h0 : _GEN_1787; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1789 = 11'h6fd == index ? 32'h0 : _GEN_1788; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1790 = 11'h6fe == index ? 32'h0 : _GEN_1789; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1791 = 11'h6ff == index ? 32'h0 : _GEN_1790; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1792 = 11'h700 == index ? 32'h0 : _GEN_1791; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1793 = 11'h701 == index ? 32'h0 : _GEN_1792; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1794 = 11'h702 == index ? 32'h0 : _GEN_1793; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1795 = 11'h703 == index ? 32'h0 : _GEN_1794; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1796 = 11'h704 == index ? 32'h0 : _GEN_1795; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1797 = 11'h705 == index ? 32'h0 : _GEN_1796; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1798 = 11'h706 == index ? 32'h0 : _GEN_1797; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1799 = 11'h707 == index ? 32'h0 : _GEN_1798; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1800 = 11'h708 == index ? 32'h0 : _GEN_1799; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1801 = 11'h709 == index ? 32'h0 : _GEN_1800; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1802 = 11'h70a == index ? 32'h0 : _GEN_1801; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1803 = 11'h70b == index ? 32'h0 : _GEN_1802; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1804 = 11'h70c == index ? 32'h0 : _GEN_1803; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1805 = 11'h70d == index ? 32'h0 : _GEN_1804; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1806 = 11'h70e == index ? 32'h0 : _GEN_1805; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1807 = 11'h70f == index ? 32'h0 : _GEN_1806; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1808 = 11'h710 == index ? 32'h0 : _GEN_1807; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1809 = 11'h711 == index ? 32'h0 : _GEN_1808; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1810 = 11'h712 == index ? 32'h0 : _GEN_1809; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1811 = 11'h713 == index ? 32'h0 : _GEN_1810; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1812 = 11'h714 == index ? 32'h0 : _GEN_1811; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1813 = 11'h715 == index ? 32'h0 : _GEN_1812; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1814 = 11'h716 == index ? 32'h0 : _GEN_1813; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1815 = 11'h717 == index ? 32'h0 : _GEN_1814; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1816 = 11'h718 == index ? 32'h0 : _GEN_1815; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1817 = 11'h719 == index ? 32'h0 : _GEN_1816; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1818 = 11'h71a == index ? 32'h0 : _GEN_1817; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1819 = 11'h71b == index ? 32'h0 : _GEN_1818; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1820 = 11'h71c == index ? 32'h0 : _GEN_1819; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1821 = 11'h71d == index ? 32'h0 : _GEN_1820; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1822 = 11'h71e == index ? 32'h0 : _GEN_1821; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1823 = 11'h71f == index ? 32'h0 : _GEN_1822; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1824 = 11'h720 == index ? 32'h0 : _GEN_1823; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1825 = 11'h721 == index ? 32'h0 : _GEN_1824; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1826 = 11'h722 == index ? 32'h0 : _GEN_1825; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1827 = 11'h723 == index ? 32'h0 : _GEN_1826; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1828 = 11'h724 == index ? 32'h0 : _GEN_1827; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1829 = 11'h725 == index ? 32'h0 : _GEN_1828; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1830 = 11'h726 == index ? 32'h0 : _GEN_1829; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1831 = 11'h727 == index ? 32'h0 : _GEN_1830; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1832 = 11'h728 == index ? 32'h0 : _GEN_1831; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1833 = 11'h729 == index ? 32'h0 : _GEN_1832; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1834 = 11'h72a == index ? 32'h0 : _GEN_1833; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1835 = 11'h72b == index ? 32'h0 : _GEN_1834; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1836 = 11'h72c == index ? 32'h0 : _GEN_1835; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1837 = 11'h72d == index ? 32'h0 : _GEN_1836; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1838 = 11'h72e == index ? 32'h0 : _GEN_1837; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1839 = 11'h72f == index ? 32'h0 : _GEN_1838; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1840 = 11'h730 == index ? 32'h0 : _GEN_1839; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1841 = 11'h731 == index ? 32'h0 : _GEN_1840; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1842 = 11'h732 == index ? 32'h0 : _GEN_1841; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1843 = 11'h733 == index ? 32'h0 : _GEN_1842; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1844 = 11'h734 == index ? 32'h0 : _GEN_1843; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1845 = 11'h735 == index ? 32'h0 : _GEN_1844; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1846 = 11'h736 == index ? 32'h0 : _GEN_1845; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1847 = 11'h737 == index ? 32'h0 : _GEN_1846; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1848 = 11'h738 == index ? 32'h0 : _GEN_1847; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1849 = 11'h739 == index ? 32'h0 : _GEN_1848; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1850 = 11'h73a == index ? 32'h0 : _GEN_1849; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1851 = 11'h73b == index ? 32'h0 : _GEN_1850; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1852 = 11'h73c == index ? 32'h0 : _GEN_1851; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1853 = 11'h73d == index ? 32'h0 : _GEN_1852; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1854 = 11'h73e == index ? 32'h0 : _GEN_1853; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1855 = 11'h73f == index ? 32'h0 : _GEN_1854; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1856 = 11'h740 == index ? 32'h0 : _GEN_1855; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1857 = 11'h741 == index ? 32'h0 : _GEN_1856; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1858 = 11'h742 == index ? 32'h0 : _GEN_1857; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1859 = 11'h743 == index ? 32'h0 : _GEN_1858; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1860 = 11'h744 == index ? 32'h0 : _GEN_1859; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1861 = 11'h745 == index ? 32'h0 : _GEN_1860; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1862 = 11'h746 == index ? 32'h0 : _GEN_1861; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1863 = 11'h747 == index ? 32'h0 : _GEN_1862; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1864 = 11'h748 == index ? 32'h0 : _GEN_1863; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1865 = 11'h749 == index ? 32'h0 : _GEN_1864; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1866 = 11'h74a == index ? 32'h0 : _GEN_1865; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1867 = 11'h74b == index ? 32'h0 : _GEN_1866; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1868 = 11'h74c == index ? 32'h0 : _GEN_1867; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1869 = 11'h74d == index ? 32'h0 : _GEN_1868; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1870 = 11'h74e == index ? 32'h0 : _GEN_1869; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1871 = 11'h74f == index ? 32'h0 : _GEN_1870; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1872 = 11'h750 == index ? 32'h0 : _GEN_1871; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1873 = 11'h751 == index ? 32'h0 : _GEN_1872; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1874 = 11'h752 == index ? 32'h0 : _GEN_1873; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1875 = 11'h753 == index ? 32'h0 : _GEN_1874; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1876 = 11'h754 == index ? 32'h0 : _GEN_1875; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1877 = 11'h755 == index ? 32'h0 : _GEN_1876; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1878 = 11'h756 == index ? 32'h0 : _GEN_1877; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1879 = 11'h757 == index ? 32'h0 : _GEN_1878; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1880 = 11'h758 == index ? 32'h0 : _GEN_1879; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1881 = 11'h759 == index ? 32'h0 : _GEN_1880; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1882 = 11'h75a == index ? 32'h0 : _GEN_1881; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1883 = 11'h75b == index ? 32'h0 : _GEN_1882; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1884 = 11'h75c == index ? 32'h0 : _GEN_1883; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1885 = 11'h75d == index ? 32'h0 : _GEN_1884; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1886 = 11'h75e == index ? 32'h0 : _GEN_1885; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1887 = 11'h75f == index ? 32'h0 : _GEN_1886; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1888 = 11'h760 == index ? 32'h0 : _GEN_1887; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1889 = 11'h761 == index ? 32'h0 : _GEN_1888; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1890 = 11'h762 == index ? 32'h0 : _GEN_1889; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1891 = 11'h763 == index ? 32'h0 : _GEN_1890; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1892 = 11'h764 == index ? 32'h0 : _GEN_1891; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1893 = 11'h765 == index ? 32'h0 : _GEN_1892; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1894 = 11'h766 == index ? 32'h0 : _GEN_1893; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1895 = 11'h767 == index ? 32'h0 : _GEN_1894; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1896 = 11'h768 == index ? 32'h0 : _GEN_1895; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1897 = 11'h769 == index ? 32'h0 : _GEN_1896; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1898 = 11'h76a == index ? 32'h0 : _GEN_1897; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1899 = 11'h76b == index ? 32'h0 : _GEN_1898; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1900 = 11'h76c == index ? 32'h0 : _GEN_1899; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1901 = 11'h76d == index ? 32'h0 : _GEN_1900; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1902 = 11'h76e == index ? 32'h0 : _GEN_1901; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1903 = 11'h76f == index ? 32'h0 : _GEN_1902; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1904 = 11'h770 == index ? 32'h0 : _GEN_1903; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1905 = 11'h771 == index ? 32'h0 : _GEN_1904; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1906 = 11'h772 == index ? 32'h0 : _GEN_1905; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1907 = 11'h773 == index ? 32'h0 : _GEN_1906; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1908 = 11'h774 == index ? 32'h0 : _GEN_1907; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1909 = 11'h775 == index ? 32'h0 : _GEN_1908; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1910 = 11'h776 == index ? 32'h0 : _GEN_1909; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1911 = 11'h777 == index ? 32'h0 : _GEN_1910; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1912 = 11'h778 == index ? 32'h0 : _GEN_1911; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1913 = 11'h779 == index ? 32'h0 : _GEN_1912; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1914 = 11'h77a == index ? 32'h0 : _GEN_1913; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1915 = 11'h77b == index ? 32'h0 : _GEN_1914; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1916 = 11'h77c == index ? 32'h0 : _GEN_1915; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1917 = 11'h77d == index ? 32'h0 : _GEN_1916; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1918 = 11'h77e == index ? 32'h0 : _GEN_1917; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1919 = 11'h77f == index ? 32'h0 : _GEN_1918; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1920 = 11'h780 == index ? 32'h0 : _GEN_1919; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1921 = 11'h781 == index ? 32'h0 : _GEN_1920; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1922 = 11'h782 == index ? 32'h0 : _GEN_1921; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1923 = 11'h783 == index ? 32'h0 : _GEN_1922; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1924 = 11'h784 == index ? 32'h0 : _GEN_1923; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1925 = 11'h785 == index ? 32'h0 : _GEN_1924; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1926 = 11'h786 == index ? 32'h0 : _GEN_1925; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1927 = 11'h787 == index ? 32'h0 : _GEN_1926; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1928 = 11'h788 == index ? 32'h0 : _GEN_1927; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1929 = 11'h789 == index ? 32'h0 : _GEN_1928; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1930 = 11'h78a == index ? 32'h0 : _GEN_1929; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1931 = 11'h78b == index ? 32'h0 : _GEN_1930; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1932 = 11'h78c == index ? 32'h0 : _GEN_1931; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1933 = 11'h78d == index ? 32'h0 : _GEN_1932; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1934 = 11'h78e == index ? 32'h0 : _GEN_1933; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1935 = 11'h78f == index ? 32'h0 : _GEN_1934; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1936 = 11'h790 == index ? 32'h0 : _GEN_1935; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1937 = 11'h791 == index ? 32'h0 : _GEN_1936; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1938 = 11'h792 == index ? 32'h0 : _GEN_1937; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1939 = 11'h793 == index ? 32'h0 : _GEN_1938; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1940 = 11'h794 == index ? 32'h0 : _GEN_1939; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1941 = 11'h795 == index ? 32'h0 : _GEN_1940; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1942 = 11'h796 == index ? 32'h0 : _GEN_1941; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1943 = 11'h797 == index ? 32'h0 : _GEN_1942; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1944 = 11'h798 == index ? 32'h0 : _GEN_1943; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1945 = 11'h799 == index ? 32'h0 : _GEN_1944; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1946 = 11'h79a == index ? 32'h0 : _GEN_1945; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1947 = 11'h79b == index ? 32'h0 : _GEN_1946; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1948 = 11'h79c == index ? 32'h0 : _GEN_1947; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1949 = 11'h79d == index ? 32'h0 : _GEN_1948; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1950 = 11'h79e == index ? 32'h0 : _GEN_1949; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1951 = 11'h79f == index ? 32'h0 : _GEN_1950; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1952 = 11'h7a0 == index ? 32'h0 : _GEN_1951; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1953 = 11'h7a1 == index ? 32'h0 : _GEN_1952; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1954 = 11'h7a2 == index ? 32'h0 : _GEN_1953; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1955 = 11'h7a3 == index ? 32'h0 : _GEN_1954; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1956 = 11'h7a4 == index ? 32'h0 : _GEN_1955; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1957 = 11'h7a5 == index ? 32'h0 : _GEN_1956; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1958 = 11'h7a6 == index ? 32'h0 : _GEN_1957; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1959 = 11'h7a7 == index ? 32'h0 : _GEN_1958; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1960 = 11'h7a8 == index ? 32'h0 : _GEN_1959; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1961 = 11'h7a9 == index ? 32'h0 : _GEN_1960; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1962 = 11'h7aa == index ? 32'h0 : _GEN_1961; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1963 = 11'h7ab == index ? 32'h0 : _GEN_1962; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1964 = 11'h7ac == index ? 32'h0 : _GEN_1963; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1965 = 11'h7ad == index ? 32'h0 : _GEN_1964; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1966 = 11'h7ae == index ? 32'h0 : _GEN_1965; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1967 = 11'h7af == index ? 32'h0 : _GEN_1966; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1968 = 11'h7b0 == index ? 32'h0 : _GEN_1967; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1969 = 11'h7b1 == index ? 32'h0 : _GEN_1968; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1970 = 11'h7b2 == index ? 32'h0 : _GEN_1969; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1971 = 11'h7b3 == index ? 32'h0 : _GEN_1970; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1972 = 11'h7b4 == index ? 32'h0 : _GEN_1971; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1973 = 11'h7b5 == index ? 32'h0 : _GEN_1972; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1974 = 11'h7b6 == index ? 32'h0 : _GEN_1973; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1975 = 11'h7b7 == index ? 32'h0 : _GEN_1974; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1976 = 11'h7b8 == index ? 32'h0 : _GEN_1975; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1977 = 11'h7b9 == index ? 32'h0 : _GEN_1976; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1978 = 11'h7ba == index ? 32'h0 : _GEN_1977; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1979 = 11'h7bb == index ? 32'h0 : _GEN_1978; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1980 = 11'h7bc == index ? 32'h0 : _GEN_1979; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1981 = 11'h7bd == index ? 32'h0 : _GEN_1980; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1982 = 11'h7be == index ? 32'h0 : _GEN_1981; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1983 = 11'h7bf == index ? 32'h0 : _GEN_1982; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1984 = 11'h7c0 == index ? 32'h0 : _GEN_1983; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1985 = 11'h7c1 == index ? 32'h0 : _GEN_1984; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1986 = 11'h7c2 == index ? 32'h0 : _GEN_1985; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1987 = 11'h7c3 == index ? 32'h0 : _GEN_1986; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1988 = 11'h7c4 == index ? 32'h0 : _GEN_1987; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1989 = 11'h7c5 == index ? 32'h0 : _GEN_1988; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1990 = 11'h7c6 == index ? 32'h0 : _GEN_1989; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1991 = 11'h7c7 == index ? 32'h0 : _GEN_1990; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1992 = 11'h7c8 == index ? 32'h0 : _GEN_1991; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1993 = 11'h7c9 == index ? 32'h0 : _GEN_1992; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1994 = 11'h7ca == index ? 32'h0 : _GEN_1993; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1995 = 11'h7cb == index ? 32'h0 : _GEN_1994; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1996 = 11'h7cc == index ? 32'h0 : _GEN_1995; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1997 = 11'h7cd == index ? 32'h0 : _GEN_1996; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1998 = 11'h7ce == index ? 32'h0 : _GEN_1997; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_1999 = 11'h7cf == index ? 32'h0 : _GEN_1998; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2000 = 11'h7d0 == index ? 32'h0 : _GEN_1999; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2001 = 11'h7d1 == index ? 32'h0 : _GEN_2000; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2002 = 11'h7d2 == index ? 32'h0 : _GEN_2001; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2003 = 11'h7d3 == index ? 32'h0 : _GEN_2002; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2004 = 11'h7d4 == index ? 32'h0 : _GEN_2003; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2005 = 11'h7d5 == index ? 32'h0 : _GEN_2004; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2006 = 11'h7d6 == index ? 32'h0 : _GEN_2005; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2007 = 11'h7d7 == index ? 32'h0 : _GEN_2006; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2008 = 11'h7d8 == index ? 32'h0 : _GEN_2007; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2009 = 11'h7d9 == index ? 32'h0 : _GEN_2008; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2010 = 11'h7da == index ? 32'h0 : _GEN_2009; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2011 = 11'h7db == index ? 32'h0 : _GEN_2010; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2012 = 11'h7dc == index ? 32'h0 : _GEN_2011; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2013 = 11'h7dd == index ? 32'h0 : _GEN_2012; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2014 = 11'h7de == index ? 32'h0 : _GEN_2013; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2015 = 11'h7df == index ? 32'h0 : _GEN_2014; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2016 = 11'h7e0 == index ? 32'h0 : _GEN_2015; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2017 = 11'h7e1 == index ? 32'h0 : _GEN_2016; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2018 = 11'h7e2 == index ? 32'h0 : _GEN_2017; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2019 = 11'h7e3 == index ? 32'h0 : _GEN_2018; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2020 = 11'h7e4 == index ? 32'h0 : _GEN_2019; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2021 = 11'h7e5 == index ? 32'h0 : _GEN_2020; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2022 = 11'h7e6 == index ? 32'h0 : _GEN_2021; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2023 = 11'h7e7 == index ? 32'h0 : _GEN_2022; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2024 = 11'h7e8 == index ? 32'h0 : _GEN_2023; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2025 = 11'h7e9 == index ? 32'h0 : _GEN_2024; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2026 = 11'h7ea == index ? 32'h0 : _GEN_2025; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2027 = 11'h7eb == index ? 32'h0 : _GEN_2026; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2028 = 11'h7ec == index ? 32'h0 : _GEN_2027; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2029 = 11'h7ed == index ? 32'h0 : _GEN_2028; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2030 = 11'h7ee == index ? 32'h0 : _GEN_2029; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2031 = 11'h7ef == index ? 32'h0 : _GEN_2030; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2032 = 11'h7f0 == index ? 32'h0 : _GEN_2031; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2033 = 11'h7f1 == index ? 32'h0 : _GEN_2032; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2034 = 11'h7f2 == index ? 32'h0 : _GEN_2033; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2035 = 11'h7f3 == index ? 32'h0 : _GEN_2034; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2036 = 11'h7f4 == index ? 32'h0 : _GEN_2035; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2037 = 11'h7f5 == index ? 32'h0 : _GEN_2036; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2038 = 11'h7f6 == index ? 32'h0 : _GEN_2037; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2039 = 11'h7f7 == index ? 32'h0 : _GEN_2038; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2040 = 11'h7f8 == index ? 32'h0 : _GEN_2039; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2041 = 11'h7f9 == index ? 32'h0 : _GEN_2040; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2042 = 11'h7fa == index ? 32'h0 : _GEN_2041; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2043 = 11'h7fb == index ? 32'h0 : _GEN_2042; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2044 = 11'h7fc == index ? 32'h0 : _GEN_2043; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2045 = 11'h7fd == index ? 32'h0 : _GEN_2044; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2046 = 11'h7fe == index ? 32'h0 : _GEN_2045; // @[BootROM.scala 51:{47,47}]
+  wire [31:0] _GEN_2047 = 11'h7ff == index ? 32'h0 : _GEN_2046; // @[BootROM.scala 51:{47,47}]
+  TLMonitor_72 monitor ( // @[Nodes.scala 24:25]
+    .clock(monitor_clock),
+    .reset(monitor_reset),
+    .io_in_a_ready(monitor_io_in_a_ready),
+    .io_in_a_valid(monitor_io_in_a_valid),
+    .io_in_a_bits_opcode(monitor_io_in_a_bits_opcode),
+    .io_in_a_bits_param(monitor_io_in_a_bits_param),
+    .io_in_a_bits_size(monitor_io_in_a_bits_size),
+    .io_in_a_bits_source(monitor_io_in_a_bits_source),
+    .io_in_a_bits_address(monitor_io_in_a_bits_address),
+    .io_in_a_bits_mask(monitor_io_in_a_bits_mask),
+    .io_in_a_bits_corrupt(monitor_io_in_a_bits_corrupt),
+    .io_in_d_ready(monitor_io_in_d_ready),
+    .io_in_d_valid(monitor_io_in_d_valid),
+    .io_in_d_bits_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  assign auto_in_a_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_in_d_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_in_d_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_in_d_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_in_d_bits_data = |high ? 32'h0 : _GEN_2047; // @[BootROM.scala 51:47]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_bits_size = auto_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_bits_source = auto_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockSinkDomain_15(
+  output        auto_bootrom_in_a_ready,
+  input         auto_bootrom_in_a_valid,
+  input  [2:0]  auto_bootrom_in_a_bits_opcode,
+  input  [2:0]  auto_bootrom_in_a_bits_param,
+  input  [1:0]  auto_bootrom_in_a_bits_size,
+  input  [6:0]  auto_bootrom_in_a_bits_source,
+  input  [16:0] auto_bootrom_in_a_bits_address,
+  input  [3:0]  auto_bootrom_in_a_bits_mask,
+  input         auto_bootrom_in_a_bits_corrupt,
+  input         auto_bootrom_in_d_ready,
+  output        auto_bootrom_in_d_valid,
+  output [1:0]  auto_bootrom_in_d_bits_size,
+  output [6:0]  auto_bootrom_in_d_bits_source,
+  output [31:0] auto_bootrom_in_d_bits_data,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  bootrom_clock; // @[BootROM.scala 81:17]
+  wire  bootrom_reset; // @[BootROM.scala 81:17]
+  wire  bootrom_auto_in_a_ready; // @[BootROM.scala 81:17]
+  wire  bootrom_auto_in_a_valid; // @[BootROM.scala 81:17]
+  wire [2:0] bootrom_auto_in_a_bits_opcode; // @[BootROM.scala 81:17]
+  wire [2:0] bootrom_auto_in_a_bits_param; // @[BootROM.scala 81:17]
+  wire [1:0] bootrom_auto_in_a_bits_size; // @[BootROM.scala 81:17]
+  wire [6:0] bootrom_auto_in_a_bits_source; // @[BootROM.scala 81:17]
+  wire [16:0] bootrom_auto_in_a_bits_address; // @[BootROM.scala 81:17]
+  wire [3:0] bootrom_auto_in_a_bits_mask; // @[BootROM.scala 81:17]
+  wire  bootrom_auto_in_a_bits_corrupt; // @[BootROM.scala 81:17]
+  wire  bootrom_auto_in_d_ready; // @[BootROM.scala 81:17]
+  wire  bootrom_auto_in_d_valid; // @[BootROM.scala 81:17]
+  wire [1:0] bootrom_auto_in_d_bits_size; // @[BootROM.scala 81:17]
+  wire [6:0] bootrom_auto_in_d_bits_source; // @[BootROM.scala 81:17]
+  wire [31:0] bootrom_auto_in_d_bits_data; // @[BootROM.scala 81:17]
+  TLROM bootrom ( // @[BootROM.scala 81:17]
+    .clock(bootrom_clock),
+    .reset(bootrom_reset),
+    .auto_in_a_ready(bootrom_auto_in_a_ready),
+    .auto_in_a_valid(bootrom_auto_in_a_valid),
+    .auto_in_a_bits_opcode(bootrom_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(bootrom_auto_in_a_bits_param),
+    .auto_in_a_bits_size(bootrom_auto_in_a_bits_size),
+    .auto_in_a_bits_source(bootrom_auto_in_a_bits_source),
+    .auto_in_a_bits_address(bootrom_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(bootrom_auto_in_a_bits_mask),
+    .auto_in_a_bits_corrupt(bootrom_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(bootrom_auto_in_d_ready),
+    .auto_in_d_valid(bootrom_auto_in_d_valid),
+    .auto_in_d_bits_size(bootrom_auto_in_d_bits_size),
+    .auto_in_d_bits_source(bootrom_auto_in_d_bits_source),
+    .auto_in_d_bits_data(bootrom_auto_in_d_bits_data)
+  );
+  assign auto_bootrom_in_a_ready = bootrom_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_bootrom_in_d_valid = bootrom_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_bootrom_in_d_bits_size = bootrom_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_bootrom_in_d_bits_source = bootrom_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_bootrom_in_d_bits_data = bootrom_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign bootrom_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bootrom_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bootrom_auto_in_a_valid = auto_bootrom_in_a_valid; // @[LazyModule.scala 309:16]
+  assign bootrom_auto_in_a_bits_opcode = auto_bootrom_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign bootrom_auto_in_a_bits_param = auto_bootrom_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign bootrom_auto_in_a_bits_size = auto_bootrom_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign bootrom_auto_in_a_bits_source = auto_bootrom_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign bootrom_auto_in_a_bits_address = auto_bootrom_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign bootrom_auto_in_a_bits_mask = auto_bootrom_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign bootrom_auto_in_a_bits_corrupt = auto_bootrom_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign bootrom_auto_in_d_ready = auto_bootrom_in_d_ready; // @[LazyModule.scala 309:16]
+endmodule
+module CaptureUpdateChain(
+  input        clock,
+  input        reset,
+  input        io_chainIn_shift,
+  input        io_chainIn_data,
+  input        io_chainIn_capture,
+  input        io_chainIn_update,
+  output       io_chainOut_data,
+  input  [1:0] io_capture_bits_dmiStatus,
+  output       io_update_valid,
+  output       io_update_bits_dmireset
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+`endif // RANDOMIZE_REG_INIT
+  reg  regs_0; // @[JtagShifter.scala 154:39]
+  reg  regs_1; // @[JtagShifter.scala 154:39]
+  reg  regs_2; // @[JtagShifter.scala 154:39]
+  reg  regs_3; // @[JtagShifter.scala 154:39]
+  reg  regs_4; // @[JtagShifter.scala 154:39]
+  reg  regs_5; // @[JtagShifter.scala 154:39]
+  reg  regs_6; // @[JtagShifter.scala 154:39]
+  reg  regs_7; // @[JtagShifter.scala 154:39]
+  reg  regs_8; // @[JtagShifter.scala 154:39]
+  reg  regs_9; // @[JtagShifter.scala 154:39]
+  reg  regs_10; // @[JtagShifter.scala 154:39]
+  reg  regs_11; // @[JtagShifter.scala 154:39]
+  reg  regs_12; // @[JtagShifter.scala 154:39]
+  reg  regs_13; // @[JtagShifter.scala 154:39]
+  reg  regs_14; // @[JtagShifter.scala 154:39]
+  reg  regs_15; // @[JtagShifter.scala 154:39]
+  reg  regs_16; // @[JtagShifter.scala 154:39]
+  reg  regs_17; // @[JtagShifter.scala 154:39]
+  reg  regs_18; // @[JtagShifter.scala 154:39]
+  reg  regs_19; // @[JtagShifter.scala 154:39]
+  reg  regs_20; // @[JtagShifter.scala 154:39]
+  reg  regs_21; // @[JtagShifter.scala 154:39]
+  reg  regs_22; // @[JtagShifter.scala 154:39]
+  reg  regs_23; // @[JtagShifter.scala 154:39]
+  reg  regs_24; // @[JtagShifter.scala 154:39]
+  reg  regs_25; // @[JtagShifter.scala 154:39]
+  reg  regs_26; // @[JtagShifter.scala 154:39]
+  reg  regs_27; // @[JtagShifter.scala 154:39]
+  reg  regs_28; // @[JtagShifter.scala 154:39]
+  reg  regs_29; // @[JtagShifter.scala 154:39]
+  reg  regs_30; // @[JtagShifter.scala 154:39]
+  reg  regs_31; // @[JtagShifter.scala 154:39]
+  wire [7:0] updateBits_lo_lo = {regs_7,regs_6,regs_5,regs_4,regs_3,regs_2,regs_1,regs_0}; // @[Cat.scala 31:58]
+  wire [15:0] updateBits_lo = {regs_15,regs_14,regs_13,regs_12,regs_11,regs_10,regs_9,regs_8,updateBits_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] updateBits_hi_lo = {regs_23,regs_22,regs_21,regs_20,regs_19,regs_18,regs_17,regs_16}; // @[Cat.scala 31:58]
+  wire [31:0] updateBits = {regs_31,regs_30,regs_29,regs_28,regs_27,regs_26,regs_25,regs_24,updateBits_hi_lo,
+    updateBits_lo}; // @[Cat.scala 31:58]
+  wire [31:0] captureBits = {20'h5,io_capture_bits_dmiStatus,6'h7,4'h1}; // @[JtagShifter.scala 161:43]
+  wire  _T_1 = ~(io_chainIn_capture & io_chainIn_update); // @[JtagShifter.scala 183:10]
+  wire  _T_4 = _T_1 & ~(io_chainIn_capture & io_chainIn_shift); // @[JtagShifter.scala 184:7]
+  wire  _T_7 = _T_4 & ~(io_chainIn_update & io_chainIn_shift); // @[JtagShifter.scala 185:7]
+  assign io_chainOut_data = regs_0; // @[JtagShifter.scala 156:20]
+  assign io_update_valid = io_chainIn_capture ? 1'h0 : io_chainIn_update; // @[JtagShifter.scala 166:29 170:21]
+  assign io_update_bits_dmireset = updateBits[16]; // @[JtagShifter.scala 159:40]
+  always @(posedge clock) begin
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_0 <= captureBits[0]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_0 <= regs_1; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_1 <= captureBits[1]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_1 <= regs_2; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_2 <= captureBits[2]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_2 <= regs_3; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_3 <= captureBits[3]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_3 <= regs_4; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_4 <= captureBits[4]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_4 <= regs_5; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_5 <= captureBits[5]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_5 <= regs_6; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_6 <= captureBits[6]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_6 <= regs_7; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_7 <= captureBits[7]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_7 <= regs_8; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_8 <= captureBits[8]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_8 <= regs_9; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_9 <= captureBits[9]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_9 <= regs_10; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_10 <= captureBits[10]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_10 <= regs_11; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_11 <= captureBits[11]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_11 <= regs_12; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_12 <= captureBits[12]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_12 <= regs_13; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_13 <= captureBits[13]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_13 <= regs_14; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_14 <= captureBits[14]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_14 <= regs_15; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_15 <= captureBits[15]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_15 <= regs_16; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_16 <= captureBits[16]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_16 <= regs_17; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_17 <= captureBits[17]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_17 <= regs_18; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_18 <= captureBits[18]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_18 <= regs_19; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_19 <= captureBits[19]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_19 <= regs_20; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_20 <= captureBits[20]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_20 <= regs_21; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_21 <= captureBits[21]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_21 <= regs_22; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_22 <= captureBits[22]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_22 <= regs_23; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_23 <= captureBits[23]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_23 <= regs_24; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_24 <= captureBits[24]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_24 <= regs_25; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_25 <= captureBits[25]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_25 <= regs_26; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_26 <= captureBits[26]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_26 <= regs_27; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_27 <= captureBits[27]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_27 <= regs_28; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_28 <= captureBits[28]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_28 <= regs_29; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_29 <= captureBits[29]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_29 <= regs_30; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_30 <= captureBits[30]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_30 <= regs_31; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_31 <= captureBits[31]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_31 <= io_chainIn_data; // @[JtagShifter.scala 175:15]
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_7 & ~reset) begin
+          $fatal; // @[JtagShifter.scala 183:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_7) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at JtagShifter.scala:183 assert(!(io.chainIn.capture && io.chainIn.update)\n"); // @[JtagShifter.scala 183:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  regs_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  regs_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  regs_2 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  regs_3 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  regs_4 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  regs_5 = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  regs_6 = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  regs_7 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  regs_8 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  regs_9 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  regs_10 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  regs_11 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  regs_12 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  regs_13 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  regs_14 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  regs_15 = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  regs_16 = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  regs_17 = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  regs_18 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  regs_19 = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  regs_20 = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  regs_21 = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  regs_22 = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  regs_23 = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  regs_24 = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  regs_25 = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  regs_26 = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  regs_27 = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  regs_28 = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  regs_29 = _RAND_29[0:0];
+  _RAND_30 = {1{`RANDOM}};
+  regs_30 = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  regs_31 = _RAND_31[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module CaptureUpdateChain_1(
+  input         clock,
+  input         reset,
+  input         io_chainIn_shift,
+  input         io_chainIn_data,
+  input         io_chainIn_capture,
+  input         io_chainIn_update,
+  output        io_chainOut_data,
+  input  [6:0]  io_capture_bits_addr,
+  input  [31:0] io_capture_bits_data,
+  input  [1:0]  io_capture_bits_resp,
+  output        io_capture_capture,
+  output        io_update_valid,
+  output [6:0]  io_update_bits_addr,
+  output [31:0] io_update_bits_data,
+  output [1:0]  io_update_bits_op
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+  reg [31:0] _RAND_32;
+  reg [31:0] _RAND_33;
+  reg [31:0] _RAND_34;
+  reg [31:0] _RAND_35;
+  reg [31:0] _RAND_36;
+  reg [31:0] _RAND_37;
+  reg [31:0] _RAND_38;
+  reg [31:0] _RAND_39;
+  reg [31:0] _RAND_40;
+`endif // RANDOMIZE_REG_INIT
+  reg  regs_0; // @[JtagShifter.scala 154:39]
+  reg  regs_1; // @[JtagShifter.scala 154:39]
+  reg  regs_2; // @[JtagShifter.scala 154:39]
+  reg  regs_3; // @[JtagShifter.scala 154:39]
+  reg  regs_4; // @[JtagShifter.scala 154:39]
+  reg  regs_5; // @[JtagShifter.scala 154:39]
+  reg  regs_6; // @[JtagShifter.scala 154:39]
+  reg  regs_7; // @[JtagShifter.scala 154:39]
+  reg  regs_8; // @[JtagShifter.scala 154:39]
+  reg  regs_9; // @[JtagShifter.scala 154:39]
+  reg  regs_10; // @[JtagShifter.scala 154:39]
+  reg  regs_11; // @[JtagShifter.scala 154:39]
+  reg  regs_12; // @[JtagShifter.scala 154:39]
+  reg  regs_13; // @[JtagShifter.scala 154:39]
+  reg  regs_14; // @[JtagShifter.scala 154:39]
+  reg  regs_15; // @[JtagShifter.scala 154:39]
+  reg  regs_16; // @[JtagShifter.scala 154:39]
+  reg  regs_17; // @[JtagShifter.scala 154:39]
+  reg  regs_18; // @[JtagShifter.scala 154:39]
+  reg  regs_19; // @[JtagShifter.scala 154:39]
+  reg  regs_20; // @[JtagShifter.scala 154:39]
+  reg  regs_21; // @[JtagShifter.scala 154:39]
+  reg  regs_22; // @[JtagShifter.scala 154:39]
+  reg  regs_23; // @[JtagShifter.scala 154:39]
+  reg  regs_24; // @[JtagShifter.scala 154:39]
+  reg  regs_25; // @[JtagShifter.scala 154:39]
+  reg  regs_26; // @[JtagShifter.scala 154:39]
+  reg  regs_27; // @[JtagShifter.scala 154:39]
+  reg  regs_28; // @[JtagShifter.scala 154:39]
+  reg  regs_29; // @[JtagShifter.scala 154:39]
+  reg  regs_30; // @[JtagShifter.scala 154:39]
+  reg  regs_31; // @[JtagShifter.scala 154:39]
+  reg  regs_32; // @[JtagShifter.scala 154:39]
+  reg  regs_33; // @[JtagShifter.scala 154:39]
+  reg  regs_34; // @[JtagShifter.scala 154:39]
+  reg  regs_35; // @[JtagShifter.scala 154:39]
+  reg  regs_36; // @[JtagShifter.scala 154:39]
+  reg  regs_37; // @[JtagShifter.scala 154:39]
+  reg  regs_38; // @[JtagShifter.scala 154:39]
+  reg  regs_39; // @[JtagShifter.scala 154:39]
+  reg  regs_40; // @[JtagShifter.scala 154:39]
+  wire [9:0] updateBits_lo_lo = {regs_9,regs_8,regs_7,regs_6,regs_5,regs_4,regs_3,regs_2,regs_1,regs_0}; // @[Cat.scala 31:58]
+  wire [9:0] updateBits_lo_hi = {regs_19,regs_18,regs_17,regs_16,regs_15,regs_14,regs_13,regs_12,regs_11,regs_10}; // @[Cat.scala 31:58]
+  wire [9:0] updateBits_hi_lo = {regs_29,regs_28,regs_27,regs_26,regs_25,regs_24,regs_23,regs_22,regs_21,regs_20}; // @[Cat.scala 31:58]
+  wire [4:0] updateBits_hi_hi_lo = {regs_34,regs_33,regs_32,regs_31,regs_30}; // @[Cat.scala 31:58]
+  wire [40:0] updateBits = {regs_40,regs_39,regs_38,regs_37,regs_36,regs_35,updateBits_hi_hi_lo,updateBits_hi_lo,
+    updateBits_lo_hi,updateBits_lo_lo}; // @[Cat.scala 31:58]
+  wire [40:0] captureBits = {io_capture_bits_addr,io_capture_bits_data,io_capture_bits_resp}; // @[JtagShifter.scala 161:43]
+  wire  _T_1 = ~(io_chainIn_capture & io_chainIn_update); // @[JtagShifter.scala 183:10]
+  wire  _T_4 = _T_1 & ~(io_chainIn_capture & io_chainIn_shift); // @[JtagShifter.scala 184:7]
+  wire  _T_7 = _T_4 & ~(io_chainIn_update & io_chainIn_shift); // @[JtagShifter.scala 185:7]
+  assign io_chainOut_data = regs_0; // @[JtagShifter.scala 156:20]
+  assign io_capture_capture = io_chainIn_capture; // @[JtagShifter.scala 166:29 169:24]
+  assign io_update_valid = io_chainIn_capture ? 1'h0 : io_chainIn_update; // @[JtagShifter.scala 166:29 170:21]
+  assign io_update_bits_addr = updateBits[40:34]; // @[JtagShifter.scala 159:40]
+  assign io_update_bits_data = updateBits[33:2]; // @[JtagShifter.scala 159:40]
+  assign io_update_bits_op = updateBits[1:0]; // @[JtagShifter.scala 159:40]
+  always @(posedge clock) begin
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_0 <= captureBits[0]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_0 <= regs_1; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_1 <= captureBits[1]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_1 <= regs_2; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_2 <= captureBits[2]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_2 <= regs_3; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_3 <= captureBits[3]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_3 <= regs_4; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_4 <= captureBits[4]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_4 <= regs_5; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_5 <= captureBits[5]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_5 <= regs_6; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_6 <= captureBits[6]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_6 <= regs_7; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_7 <= captureBits[7]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_7 <= regs_8; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_8 <= captureBits[8]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_8 <= regs_9; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_9 <= captureBits[9]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_9 <= regs_10; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_10 <= captureBits[10]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_10 <= regs_11; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_11 <= captureBits[11]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_11 <= regs_12; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_12 <= captureBits[12]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_12 <= regs_13; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_13 <= captureBits[13]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_13 <= regs_14; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_14 <= captureBits[14]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_14 <= regs_15; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_15 <= captureBits[15]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_15 <= regs_16; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_16 <= captureBits[16]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_16 <= regs_17; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_17 <= captureBits[17]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_17 <= regs_18; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_18 <= captureBits[18]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_18 <= regs_19; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_19 <= captureBits[19]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_19 <= regs_20; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_20 <= captureBits[20]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_20 <= regs_21; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_21 <= captureBits[21]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_21 <= regs_22; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_22 <= captureBits[22]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_22 <= regs_23; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_23 <= captureBits[23]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_23 <= regs_24; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_24 <= captureBits[24]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_24 <= regs_25; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_25 <= captureBits[25]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_25 <= regs_26; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_26 <= captureBits[26]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_26 <= regs_27; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_27 <= captureBits[27]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_27 <= regs_28; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_28 <= captureBits[28]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_28 <= regs_29; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_29 <= captureBits[29]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_29 <= regs_30; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_30 <= captureBits[30]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_30 <= regs_31; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_31 <= captureBits[31]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_31 <= regs_32; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_32 <= captureBits[32]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_32 <= regs_33; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_33 <= captureBits[33]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_33 <= regs_34; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_34 <= captureBits[34]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_34 <= regs_35; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_35 <= captureBits[35]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_35 <= regs_36; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_36 <= captureBits[36]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_36 <= regs_37; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_37 <= captureBits[37]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_37 <= regs_38; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_38 <= captureBits[38]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_38 <= regs_39; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_39 <= captureBits[39]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_39 <= regs_40; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_40 <= captureBits[40]; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_40 <= io_chainIn_data; // @[JtagShifter.scala 175:15]
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_7 & ~reset) begin
+          $fatal; // @[JtagShifter.scala 183:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_7) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at JtagShifter.scala:183 assert(!(io.chainIn.capture && io.chainIn.update)\n"); // @[JtagShifter.scala 183:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  regs_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  regs_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  regs_2 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  regs_3 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  regs_4 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  regs_5 = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  regs_6 = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  regs_7 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  regs_8 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  regs_9 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  regs_10 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  regs_11 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  regs_12 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  regs_13 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  regs_14 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  regs_15 = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  regs_16 = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  regs_17 = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  regs_18 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  regs_19 = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  regs_20 = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  regs_21 = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  regs_22 = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  regs_23 = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  regs_24 = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  regs_25 = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  regs_26 = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  regs_27 = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  regs_28 = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  regs_29 = _RAND_29[0:0];
+  _RAND_30 = {1{`RANDOM}};
+  regs_30 = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  regs_31 = _RAND_31[0:0];
+  _RAND_32 = {1{`RANDOM}};
+  regs_32 = _RAND_32[0:0];
+  _RAND_33 = {1{`RANDOM}};
+  regs_33 = _RAND_33[0:0];
+  _RAND_34 = {1{`RANDOM}};
+  regs_34 = _RAND_34[0:0];
+  _RAND_35 = {1{`RANDOM}};
+  regs_35 = _RAND_35[0:0];
+  _RAND_36 = {1{`RANDOM}};
+  regs_36 = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  regs_37 = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  regs_38 = _RAND_38[0:0];
+  _RAND_39 = {1{`RANDOM}};
+  regs_39 = _RAND_39[0:0];
+  _RAND_40 = {1{`RANDOM}};
+  regs_40 = _RAND_40[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module CaptureChain(
+  input   clock,
+  input   reset,
+  input   io_chainIn_shift,
+  input   io_chainIn_data,
+  input   io_chainIn_capture,
+  input   io_chainIn_update,
+  output  io_chainOut_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [31:0] _RAND_20;
+  reg [31:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+  reg [31:0] _RAND_25;
+  reg [31:0] _RAND_26;
+  reg [31:0] _RAND_27;
+  reg [31:0] _RAND_28;
+  reg [31:0] _RAND_29;
+  reg [31:0] _RAND_30;
+  reg [31:0] _RAND_31;
+`endif // RANDOMIZE_REG_INIT
+  reg  regs_0; // @[JtagShifter.scala 101:39]
+  reg  regs_1; // @[JtagShifter.scala 101:39]
+  reg  regs_2; // @[JtagShifter.scala 101:39]
+  reg  regs_3; // @[JtagShifter.scala 101:39]
+  reg  regs_4; // @[JtagShifter.scala 101:39]
+  reg  regs_5; // @[JtagShifter.scala 101:39]
+  reg  regs_6; // @[JtagShifter.scala 101:39]
+  reg  regs_7; // @[JtagShifter.scala 101:39]
+  reg  regs_8; // @[JtagShifter.scala 101:39]
+  reg  regs_9; // @[JtagShifter.scala 101:39]
+  reg  regs_10; // @[JtagShifter.scala 101:39]
+  reg  regs_11; // @[JtagShifter.scala 101:39]
+  reg  regs_12; // @[JtagShifter.scala 101:39]
+  reg  regs_13; // @[JtagShifter.scala 101:39]
+  reg  regs_14; // @[JtagShifter.scala 101:39]
+  reg  regs_15; // @[JtagShifter.scala 101:39]
+  reg  regs_16; // @[JtagShifter.scala 101:39]
+  reg  regs_17; // @[JtagShifter.scala 101:39]
+  reg  regs_18; // @[JtagShifter.scala 101:39]
+  reg  regs_19; // @[JtagShifter.scala 101:39]
+  reg  regs_20; // @[JtagShifter.scala 101:39]
+  reg  regs_21; // @[JtagShifter.scala 101:39]
+  reg  regs_22; // @[JtagShifter.scala 101:39]
+  reg  regs_23; // @[JtagShifter.scala 101:39]
+  reg  regs_24; // @[JtagShifter.scala 101:39]
+  reg  regs_25; // @[JtagShifter.scala 101:39]
+  reg  regs_26; // @[JtagShifter.scala 101:39]
+  reg  regs_27; // @[JtagShifter.scala 101:39]
+  reg  regs_28; // @[JtagShifter.scala 101:39]
+  reg  regs_29; // @[JtagShifter.scala 101:39]
+  reg  regs_30; // @[JtagShifter.scala 101:39]
+  reg  regs_31; // @[JtagShifter.scala 101:39]
+  wire  _GEN_1 = io_chainIn_shift ? regs_1 : regs_0; // @[JtagShifter.scala 110:34 112:37 101:39]
+  wire  _GEN_2 = io_chainIn_shift ? regs_2 : regs_1; // @[JtagShifter.scala 110:34 112:37 101:39]
+  wire  _GEN_5 = io_chainIn_shift ? regs_5 : regs_4; // @[JtagShifter.scala 110:34 112:37 101:39]
+  wire  _GEN_9 = io_chainIn_shift ? regs_9 : regs_8; // @[JtagShifter.scala 110:34 112:37 101:39]
+  wire  _GEN_12 = io_chainIn_shift ? regs_12 : regs_11; // @[JtagShifter.scala 110:34 112:37 101:39]
+  wire  _T_1 = ~(io_chainIn_capture & io_chainIn_update); // @[JtagShifter.scala 117:10]
+  wire  _T_4 = _T_1 & ~(io_chainIn_capture & io_chainIn_shift); // @[JtagShifter.scala 118:7]
+  wire  _T_7 = _T_4 & ~(io_chainIn_update & io_chainIn_shift); // @[JtagShifter.scala 119:7]
+  assign io_chainOut_data = regs_0; // @[JtagShifter.scala 103:20]
+  always @(posedge clock) begin
+    regs_0 <= io_chainIn_capture | _GEN_1; // @[JtagShifter.scala 107:29 108:35]
+    regs_1 <= io_chainIn_capture | _GEN_2; // @[JtagShifter.scala 107:29 108:35]
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_2 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_2 <= regs_3; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_3 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_3 <= regs_4; // @[JtagShifter.scala 112:37]
+    end
+    regs_4 <= io_chainIn_capture | _GEN_5; // @[JtagShifter.scala 107:29 108:35]
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_5 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_5 <= regs_6; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_6 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_6 <= regs_7; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_7 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_7 <= regs_8; // @[JtagShifter.scala 112:37]
+    end
+    regs_8 <= io_chainIn_capture | _GEN_9; // @[JtagShifter.scala 107:29 108:35]
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_9 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_9 <= regs_10; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_10 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_10 <= regs_11; // @[JtagShifter.scala 112:37]
+    end
+    regs_11 <= io_chainIn_capture | _GEN_12; // @[JtagShifter.scala 107:29 108:35]
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_12 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_12 <= regs_13; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_13 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_13 <= regs_14; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_14 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_14 <= regs_15; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_15 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_15 <= regs_16; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_16 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_16 <= regs_17; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_17 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_17 <= regs_18; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_18 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_18 <= regs_19; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_19 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_19 <= regs_20; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_20 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_20 <= regs_21; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_21 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_21 <= regs_22; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_22 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_22 <= regs_23; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_23 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_23 <= regs_24; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_24 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_24 <= regs_25; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_25 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_25 <= regs_26; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_26 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_26 <= regs_27; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_27 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_27 <= regs_28; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_28 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_28 <= regs_29; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_29 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_29 <= regs_30; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_30 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_30 <= regs_31; // @[JtagShifter.scala 112:37]
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_31 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_31 <= io_chainIn_data; // @[JtagShifter.scala 111:15]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_7 & ~reset) begin
+          $fatal; // @[JtagShifter.scala 117:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_7) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at JtagShifter.scala:117 assert(!(io.chainIn.capture && io.chainIn.update)\n"); // @[JtagShifter.scala 117:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  regs_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  regs_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  regs_2 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  regs_3 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  regs_4 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  regs_5 = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  regs_6 = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  regs_7 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  regs_8 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  regs_9 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  regs_10 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  regs_11 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  regs_12 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  regs_13 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  regs_14 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  regs_15 = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  regs_16 = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  regs_17 = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  regs_18 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  regs_19 = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  regs_20 = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  regs_21 = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  regs_22 = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  regs_23 = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  regs_24 = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  regs_25 = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  regs_26 = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  regs_27 = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  regs_28 = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  regs_29 = _RAND_29[0:0];
+  _RAND_30 = {1{`RANDOM}};
+  regs_30 = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  regs_31 = _RAND_31[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module JtagStateMachine(
+  input        clock,
+  input        reset,
+  input        io_tms,
+  output [3:0] io_currState
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg [3:0] currState; // @[JtagStateMachine.scala 78:26]
+  wire [3:0] _nextState_T_1 = io_tms ? 4'h7 : 4'hc; // @[JtagStateMachine.scala 85:23]
+  wire [3:0] _nextState_T_3 = io_tms ? 4'h1 : 4'h2; // @[JtagStateMachine.scala 91:23]
+  wire [3:0] _nextState_T_5 = io_tms ? 4'h5 : 4'h3; // @[JtagStateMachine.scala 97:23]
+  wire [3:0] _nextState_T_6 = io_tms ? 4'h0 : 4'h3; // @[JtagStateMachine.scala 100:23]
+  wire [3:0] _nextState_T_7 = io_tms ? 4'h5 : 4'h2; // @[JtagStateMachine.scala 103:23]
+  wire [3:0] _nextState_T_9 = io_tms ? 4'hf : 4'he; // @[JtagStateMachine.scala 109:23]
+  wire [3:0] _nextState_T_10 = io_tms ? 4'h9 : 4'ha; // @[JtagStateMachine.scala 112:23]
+  wire [3:0] _nextState_T_12 = io_tms ? 4'hd : 4'hb; // @[JtagStateMachine.scala 118:23]
+  wire [3:0] _nextState_T_13 = io_tms ? 4'h8 : 4'hb; // @[JtagStateMachine.scala 121:23]
+  wire [3:0] _nextState_T_14 = io_tms ? 4'hd : 4'ha; // @[JtagStateMachine.scala 124:23]
+  wire [3:0] _GEN_0 = 4'hd == currState ? _nextState_T_1 : 4'hf; // @[JtagStateMachine.scala 127:17 80:22]
+  wire [3:0] _GEN_1 = 4'h8 == currState ? _nextState_T_14 : _GEN_0; // @[JtagStateMachine.scala 124:17 80:22]
+  wire [3:0] _GEN_2 = 4'hb == currState ? _nextState_T_13 : _GEN_1; // @[JtagStateMachine.scala 121:17 80:22]
+  wire [3:0] _GEN_3 = 4'h9 == currState ? _nextState_T_12 : _GEN_2; // @[JtagStateMachine.scala 118:17 80:22]
+  wire [3:0] _GEN_4 = 4'ha == currState ? _nextState_T_10 : _GEN_3; // @[JtagStateMachine.scala 115:17 80:22]
+  wire [3:0] _GEN_5 = 4'he == currState ? _nextState_T_10 : _GEN_4; // @[JtagStateMachine.scala 112:17 80:22]
+  wire [3:0] _GEN_6 = 4'h4 == currState ? _nextState_T_9 : _GEN_5; // @[JtagStateMachine.scala 109:17 80:22]
+  wire [3:0] _GEN_7 = 4'h5 == currState ? _nextState_T_1 : _GEN_6; // @[JtagStateMachine.scala 106:17 80:22]
+  wire [3:0] _GEN_8 = 4'h0 == currState ? _nextState_T_7 : _GEN_7; // @[JtagStateMachine.scala 103:17 80:22]
+  wire [3:0] _GEN_9 = 4'h3 == currState ? _nextState_T_6 : _GEN_8; // @[JtagStateMachine.scala 100:17 80:22]
+  wire [3:0] _GEN_10 = 4'h1 == currState ? _nextState_T_5 : _GEN_9; // @[JtagStateMachine.scala 80:22 97:17]
+  wire [3:0] _GEN_11 = 4'h2 == currState ? _nextState_T_3 : _GEN_10; // @[JtagStateMachine.scala 80:22 94:17]
+  assign io_currState = currState; // @[JtagStateMachine.scala 131:16]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[JtagStateMachine.scala 80:22]
+      currState <= 4'hf; // @[JtagStateMachine.scala 82:23]
+    end else if (4'hf == currState) begin // @[JtagStateMachine.scala 80:22]
+      if (io_tms) begin // @[JtagStateMachine.scala 85:23]
+        currState <= 4'hf;
+      end else begin
+        currState <= 4'hc;
+      end
+    end else if (4'hc == currState) begin // @[JtagStateMachine.scala 80:22]
+      if (io_tms) begin // @[JtagStateMachine.scala 88:23]
+        currState <= 4'h7;
+      end else begin
+        currState <= 4'hc;
+      end
+    end else if (4'h7 == currState) begin // @[JtagStateMachine.scala 80:22]
+      if (io_tms) begin // @[JtagStateMachine.scala 91:17]
+        currState <= 4'h4;
+      end else begin
+        currState <= 4'h6;
+      end
+    end else if (4'h6 == currState) begin
+      currState <= _nextState_T_3;
+    end else begin
+      currState <= _GEN_11;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  currState = _RAND_0[3:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    currState = 4'hf;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module CaptureUpdateChain_2(
+  input        clock,
+  input        reset,
+  input        io_chainIn_shift,
+  input        io_chainIn_data,
+  input        io_chainIn_capture,
+  input        io_chainIn_update,
+  output       io_chainOut_data,
+  output [4:0] io_update_bits
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`endif // RANDOMIZE_REG_INIT
+  reg  regs_0; // @[JtagShifter.scala 154:39]
+  reg  regs_1; // @[JtagShifter.scala 154:39]
+  reg  regs_2; // @[JtagShifter.scala 154:39]
+  reg  regs_3; // @[JtagShifter.scala 154:39]
+  reg  regs_4; // @[JtagShifter.scala 154:39]
+  wire [1:0] updateBits_lo = {regs_1,regs_0}; // @[Cat.scala 31:58]
+  wire [2:0] updateBits_hi = {regs_4,regs_3,regs_2}; // @[Cat.scala 31:58]
+  wire  _GEN_1 = io_chainIn_shift ? regs_1 : regs_0; // @[JtagShifter.scala 174:34 176:37 154:39]
+  wire  _GEN_9 = io_chainIn_update ? regs_0 : _GEN_1; // @[JtagShifter.scala 171:35 154:39]
+  wire  _T_1 = ~(io_chainIn_capture & io_chainIn_update); // @[JtagShifter.scala 183:10]
+  wire  _T_4 = _T_1 & ~(io_chainIn_capture & io_chainIn_shift); // @[JtagShifter.scala 184:7]
+  wire  _T_7 = _T_4 & ~(io_chainIn_update & io_chainIn_shift); // @[JtagShifter.scala 185:7]
+  assign io_chainOut_data = regs_0; // @[JtagShifter.scala 156:20]
+  assign io_update_bits = {updateBits_hi,updateBits_lo}; // @[Cat.scala 31:58]
+  always @(posedge clock) begin
+    regs_0 <= io_chainIn_capture | _GEN_9; // @[JtagShifter.scala 166:29 167:59]
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_1 <= 1'h0; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_1 <= regs_2; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_2 <= 1'h0; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_2 <= regs_3; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_3 <= 1'h0; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_3 <= regs_4; // @[JtagShifter.scala 176:37]
+      end
+    end
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 166:29]
+      regs_4 <= 1'h0; // @[JtagShifter.scala 167:59]
+    end else if (!(io_chainIn_update)) begin // @[JtagShifter.scala 171:35]
+      if (io_chainIn_shift) begin // @[JtagShifter.scala 174:34]
+        regs_4 <= io_chainIn_data; // @[JtagShifter.scala 175:15]
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_7 & ~reset) begin
+          $fatal; // @[JtagShifter.scala 183:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_7) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at JtagShifter.scala:183 assert(!(io.chainIn.capture && io.chainIn.update)\n"); // @[JtagShifter.scala 183:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  regs_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  regs_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  regs_2 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  regs_3 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  regs_4 = _RAND_4[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module JtagTapController(
+  input        clock,
+  input        reset,
+  input        io_jtag_TMS,
+  input        io_jtag_TDI,
+  output       io_jtag_TDO_data,
+  output       io_jtag_TDO_driven,
+  input        io_control_jtag_reset,
+  output [4:0] io_output_instruction,
+  output       io_output_tapIsInTestLogicReset,
+  output       io_dataChainOut_shift,
+  output       io_dataChainOut_data,
+  output       io_dataChainOut_capture,
+  output       io_dataChainOut_update,
+  input        io_dataChainIn_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  wire  stateMachine_clock; // @[JtagTap.scala 82:30]
+  wire  stateMachine_reset; // @[JtagTap.scala 82:30]
+  wire  stateMachine_io_tms; // @[JtagTap.scala 82:30]
+  wire [3:0] stateMachine_io_currState; // @[JtagTap.scala 82:30]
+  wire  irChain_clock; // @[JtagTap.scala 102:23]
+  wire  irChain_reset; // @[JtagTap.scala 102:23]
+  wire  irChain_io_chainIn_shift; // @[JtagTap.scala 102:23]
+  wire  irChain_io_chainIn_data; // @[JtagTap.scala 102:23]
+  wire  irChain_io_chainIn_capture; // @[JtagTap.scala 102:23]
+  wire  irChain_io_chainIn_update; // @[JtagTap.scala 102:23]
+  wire  irChain_io_chainOut_data; // @[JtagTap.scala 102:23]
+  wire [4:0] irChain_io_update_bits; // @[JtagTap.scala 102:23]
+  wire  clock_falling = ~clock; // @[JtagTap.scala 67:48]
+  reg  tdoReg; // @[JtagTap.scala 89:30]
+  reg  tdoeReg; // @[JtagTap.scala 90:30]
+  wire [3:0] currState = stateMachine_io_currState; // @[JtagTap.scala 75:23 85:15]
+  wire  _irChain_io_chainIn_shift_T = currState == 4'ha; // @[JtagTap.scala 104:41]
+  wire  _irChain_io_chainIn_update_T = currState == 4'hd; // @[JtagTap.scala 107:42]
+  reg [4:0] activeInstruction; // @[JtagTap.scala 111:36]
+  wire  tapIsInTestLogicReset = currState == 4'hf; // @[JtagTap.scala 120:38]
+  wire  _io_dataChainOut_shift_T = currState == 4'h2; // @[JtagTap.scala 126:38]
+  wire  _GEN_2 = irChain_io_chainOut_data; // @[JtagTap.scala 137:51 138:9]
+  JtagStateMachine stateMachine ( // @[JtagTap.scala 82:30]
+    .clock(stateMachine_clock),
+    .reset(stateMachine_reset),
+    .io_tms(stateMachine_io_tms),
+    .io_currState(stateMachine_io_currState)
+  );
+  CaptureUpdateChain_2 irChain ( // @[JtagTap.scala 102:23]
+    .clock(irChain_clock),
+    .reset(irChain_reset),
+    .io_chainIn_shift(irChain_io_chainIn_shift),
+    .io_chainIn_data(irChain_io_chainIn_data),
+    .io_chainIn_capture(irChain_io_chainIn_capture),
+    .io_chainIn_update(irChain_io_chainIn_update),
+    .io_chainOut_data(irChain_io_chainOut_data),
+    .io_update_bits(irChain_io_update_bits)
+  );
+  assign io_jtag_TDO_data = tdoReg; // @[JtagTap.scala 91:26]
+  assign io_jtag_TDO_driven = tdoeReg; // @[JtagTap.scala 92:26]
+  assign io_output_instruction = activeInstruction; // @[JtagTap.scala 117:27]
+  assign io_output_tapIsInTestLogicReset = currState == 4'hf; // @[JtagTap.scala 120:38]
+  assign io_dataChainOut_shift = currState == 4'h2; // @[JtagTap.scala 126:38]
+  assign io_dataChainOut_data = io_jtag_TDI; // @[JtagTap.scala 127:24]
+  assign io_dataChainOut_capture = currState == 4'h6; // @[JtagTap.scala 128:40]
+  assign io_dataChainOut_update = currState == 4'h5; // @[JtagTap.scala 129:39]
+  assign stateMachine_clock = clock;
+  assign stateMachine_reset = io_control_jtag_reset;
+  assign stateMachine_io_tms = io_jtag_TMS; // @[JtagTap.scala 84:25]
+  assign irChain_clock = clock;
+  assign irChain_reset = reset;
+  assign irChain_io_chainIn_shift = currState == 4'ha; // @[JtagTap.scala 104:41]
+  assign irChain_io_chainIn_data = io_jtag_TDI; // @[JtagTap.scala 105:27]
+  assign irChain_io_chainIn_capture = currState == 4'he; // @[JtagTap.scala 106:43]
+  assign irChain_io_chainIn_update = currState == 4'hd; // @[JtagTap.scala 107:42]
+  always @(posedge clock_falling or posedge io_control_jtag_reset) begin
+    if (io_control_jtag_reset) begin // @[JtagTap.scala 134:44]
+      tdoReg <= 1'h0; // @[JtagTap.scala 135:9]
+    end else if (_io_dataChainOut_shift_T) begin
+      tdoReg <= io_dataChainIn_data;
+    end else begin
+      tdoReg <= _GEN_2;
+    end
+  end
+  always @(posedge clock_falling or posedge io_control_jtag_reset) begin
+    if (io_control_jtag_reset) begin // @[JtagTap.scala 134:44]
+      tdoeReg <= 1'h0; // @[JtagTap.scala 136:16]
+    end else begin
+      tdoeReg <= _io_dataChainOut_shift_T | _irChain_io_chainIn_shift_T;
+    end
+  end
+  always @(posedge clock_falling or posedge io_control_jtag_reset) begin
+    if (io_control_jtag_reset) begin // @[JtagTap.scala 112:34]
+      activeInstruction <= 5'h1; // @[JtagTap.scala 113:25]
+    end else if (tapIsInTestLogicReset) begin // @[JtagTap.scala 114:53]
+      activeInstruction <= 5'h1; // @[JtagTap.scala 115:25]
+    end else if (_irChain_io_chainIn_update_T) begin // @[JtagTap.scala 111:36]
+      activeInstruction <= irChain_io_update_bits;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  tdoReg = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  tdoeReg = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  activeInstruction = _RAND_2[4:0];
+`endif // RANDOMIZE_REG_INIT
+  if (io_control_jtag_reset) begin
+    tdoReg = 1'h0;
+  end
+  if (io_control_jtag_reset) begin
+    tdoeReg = 1'h0;
+  end
+  if (io_control_jtag_reset) begin
+    activeInstruction = 5'h1;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module JtagBypassChain(
+  input   clock,
+  input   reset,
+  input   io_chainIn_shift,
+  input   io_chainIn_data,
+  input   io_chainIn_capture,
+  input   io_chainIn_update,
+  output  io_chainOut_data
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  reg  reg_; // @[JtagShifter.scala 61:16]
+  wire  _T_1 = ~(io_chainIn_capture & io_chainIn_update); // @[JtagShifter.scala 72:10]
+  wire  _T_4 = _T_1 & ~(io_chainIn_capture & io_chainIn_shift); // @[JtagShifter.scala 73:7]
+  wire  _T_7 = _T_4 & ~(io_chainIn_update & io_chainIn_shift); // @[JtagShifter.scala 74:7]
+  assign io_chainOut_data = reg_; // @[JtagShifter.scala 63:20]
+  always @(posedge clock) begin
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 67:29]
+      reg_ <= 1'h0; // @[JtagShifter.scala 68:9]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 69:34]
+      reg_ <= io_chainIn_data; // @[JtagShifter.scala 70:9]
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_7 & ~reset) begin
+          $fatal; // @[JtagShifter.scala 72:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~reset & ~_T_7) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at JtagShifter.scala:72 assert(!(io.chainIn.capture && io.chainIn.update)\n"); // @[JtagShifter.scala 72:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  reg_ = _RAND_0[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module DebugTransportModuleJTAG(
+  input         io_jtag_clock,
+  input         io_jtag_reset,
+  input         io_dmi_req_ready,
+  output        io_dmi_req_valid,
+  output [6:0]  io_dmi_req_bits_addr,
+  output [31:0] io_dmi_req_bits_data,
+  output [1:0]  io_dmi_req_bits_op,
+  output        io_dmi_resp_ready,
+  input         io_dmi_resp_valid,
+  input  [31:0] io_dmi_resp_bits_data,
+  input  [1:0]  io_dmi_resp_bits_resp,
+  input         io_jtag_TMS,
+  input         io_jtag_TDI,
+  output        io_jtag_TDO_data,
+  output        io_jtag_TDO_driven
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+`endif // RANDOMIZE_REG_INIT
+  wire  dtmInfoChain_clock; // @[DebugTransport.scala 128:29]
+  wire  dtmInfoChain_reset; // @[DebugTransport.scala 128:29]
+  wire  dtmInfoChain_io_chainIn_shift; // @[DebugTransport.scala 128:29]
+  wire  dtmInfoChain_io_chainIn_data; // @[DebugTransport.scala 128:29]
+  wire  dtmInfoChain_io_chainIn_capture; // @[DebugTransport.scala 128:29]
+  wire  dtmInfoChain_io_chainIn_update; // @[DebugTransport.scala 128:29]
+  wire  dtmInfoChain_io_chainOut_data; // @[DebugTransport.scala 128:29]
+  wire [1:0] dtmInfoChain_io_capture_bits_dmiStatus; // @[DebugTransport.scala 128:29]
+  wire  dtmInfoChain_io_update_valid; // @[DebugTransport.scala 128:29]
+  wire  dtmInfoChain_io_update_bits_dmireset; // @[DebugTransport.scala 128:29]
+  wire  dmiAccessChain_clock; // @[DebugTransport.scala 134:31]
+  wire  dmiAccessChain_reset; // @[DebugTransport.scala 134:31]
+  wire  dmiAccessChain_io_chainIn_shift; // @[DebugTransport.scala 134:31]
+  wire  dmiAccessChain_io_chainIn_data; // @[DebugTransport.scala 134:31]
+  wire  dmiAccessChain_io_chainIn_capture; // @[DebugTransport.scala 134:31]
+  wire  dmiAccessChain_io_chainIn_update; // @[DebugTransport.scala 134:31]
+  wire  dmiAccessChain_io_chainOut_data; // @[DebugTransport.scala 134:31]
+  wire [6:0] dmiAccessChain_io_capture_bits_addr; // @[DebugTransport.scala 134:31]
+  wire [31:0] dmiAccessChain_io_capture_bits_data; // @[DebugTransport.scala 134:31]
+  wire [1:0] dmiAccessChain_io_capture_bits_resp; // @[DebugTransport.scala 134:31]
+  wire  dmiAccessChain_io_capture_capture; // @[DebugTransport.scala 134:31]
+  wire  dmiAccessChain_io_update_valid; // @[DebugTransport.scala 134:31]
+  wire [6:0] dmiAccessChain_io_update_bits_addr; // @[DebugTransport.scala 134:31]
+  wire [31:0] dmiAccessChain_io_update_bits_data; // @[DebugTransport.scala 134:31]
+  wire [1:0] dmiAccessChain_io_update_bits_op; // @[DebugTransport.scala 134:31]
+  wire  tapIO_idcodeChain_clock; // @[JtagTap.scala 181:33]
+  wire  tapIO_idcodeChain_reset; // @[JtagTap.scala 181:33]
+  wire  tapIO_idcodeChain_io_chainIn_shift; // @[JtagTap.scala 181:33]
+  wire  tapIO_idcodeChain_io_chainIn_data; // @[JtagTap.scala 181:33]
+  wire  tapIO_idcodeChain_io_chainIn_capture; // @[JtagTap.scala 181:33]
+  wire  tapIO_idcodeChain_io_chainIn_update; // @[JtagTap.scala 181:33]
+  wire  tapIO_idcodeChain_io_chainOut_data; // @[JtagTap.scala 181:33]
+  wire  tapIO_controllerInternal_clock; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_reset; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_jtag_TMS; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_jtag_TDI; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_jtag_TDO_data; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_jtag_TDO_driven; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_control_jtag_reset; // @[JtagTap.scala 199:36]
+  wire [4:0] tapIO_controllerInternal_io_output_instruction; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_output_tapIsInTestLogicReset; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_dataChainOut_shift; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_dataChainOut_data; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_dataChainOut_capture; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_dataChainOut_update; // @[JtagTap.scala 199:36]
+  wire  tapIO_controllerInternal_io_dataChainIn_data; // @[JtagTap.scala 199:36]
+  wire  tapIO_bypassChain_clock; // @[JtagTap.scala 207:29]
+  wire  tapIO_bypassChain_reset; // @[JtagTap.scala 207:29]
+  wire  tapIO_bypassChain_io_chainIn_shift; // @[JtagTap.scala 207:29]
+  wire  tapIO_bypassChain_io_chainIn_data; // @[JtagTap.scala 207:29]
+  wire  tapIO_bypassChain_io_chainIn_capture; // @[JtagTap.scala 207:29]
+  wire  tapIO_bypassChain_io_chainIn_update; // @[JtagTap.scala 207:29]
+  wire  tapIO_bypassChain_io_chainOut_data; // @[JtagTap.scala 207:29]
+  reg  busyReg; // @[DebugTransport.scala 96:24]
+  reg  stickyBusyReg; // @[DebugTransport.scala 97:30]
+  reg  stickyNonzeroRespReg; // @[DebugTransport.scala 98:37]
+  reg  downgradeOpReg; // @[DebugTransport.scala 100:31]
+  reg [6:0] dmiReqReg_addr; // @[DebugTransport.scala 110:23]
+  reg [31:0] dmiReqReg_data; // @[DebugTransport.scala 110:23]
+  reg [1:0] dmiReqReg_op; // @[DebugTransport.scala 110:23]
+  reg  dmiReqValidReg; // @[DebugTransport.scala 111:31]
+  wire  _dmiStatus_T = stickyNonzeroRespReg | stickyBusyReg; // @[DebugTransport.scala 118:63]
+  wire  _GEN_0 = io_dmi_req_valid | busyReg; // @[DebugTransport.scala 143:27 144:13 96:24]
+  wire  _T_1 = io_dmi_resp_ready & io_dmi_resp_valid; // @[Decoupled.scala 50:35]
+  wire  busy = busyReg & ~io_dmi_resp_valid | stickyBusyReg; // @[DebugTransport.scala 155:42]
+  wire  _downgradeOpReg_T = ~busy; // @[DebugTransport.scala 164:24]
+  wire  nonzeroResp = stickyNonzeroRespReg | io_dmi_resp_valid & io_dmi_resp_bits_resp != 2'h0; // @[DebugTransport.scala 178:39]
+  wire  _GEN_4 = dmiAccessChain_io_capture_capture ? busy : stickyBusyReg; // @[DebugTransport.scala 163:44 165:19 97:30]
+  wire  _GEN_5 = dmiAccessChain_io_capture_capture ? nonzeroResp : stickyNonzeroRespReg; // @[DebugTransport.scala 163:44 166:26 98:37]
+  wire [6:0] _dmiAccessChain_io_capture_bits_T_addr = io_dmi_resp_valid ? dmiReqReg_addr : 7'h0; // @[DebugTransport.scala 197:60]
+  wire [31:0] _dmiAccessChain_io_capture_bits_T_data = io_dmi_resp_valid ? io_dmi_resp_bits_data : 32'h0; // @[DebugTransport.scala 197:60]
+  wire [1:0] _dmiAccessChain_io_capture_bits_T_resp = io_dmi_resp_valid ? io_dmi_resp_bits_resp : 2'h0; // @[DebugTransport.scala 197:60]
+  wire  _T_4 = io_dmi_req_ready & io_dmi_req_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_14 = downgradeOpReg | dmiAccessChain_io_update_bits_op == 2'h0 ? 1'h0 : 1'h1; // @[DebugTransport.scala 208:97 216:24]
+  wire  _GEN_19 = stickyBusyReg ? 1'h0 : _GEN_14; // @[DebugTransport.scala 206:26]
+  wire  dmiReqValidCheck = dmiAccessChain_io_update_valid & _GEN_19; // @[DebugTransport.scala 205:41]
+  wire  _T_8 = ~io_jtag_reset; // @[DebugTransport.scala 203:9]
+  wire  _GEN_13 = downgradeOpReg | dmiAccessChain_io_update_bits_op == 2'h0 ? dmiReqValidReg : 1'h1; // @[DebugTransport.scala 111:31 208:97 215:22]
+  wire  _io_dmi_resp_ready_T = dmiReqReg_op == 2'h2; // @[DebugTransport.scala 225:18]
+  wire  _io_dmi_resp_ready_T_2 = dmiAccessChain_io_capture_capture & _downgradeOpReg_T; // @[DebugTransport.scala 229:41]
+  wire [31:0] _GEN_1 = 32'h913 % 32'h2; // @[JtagTap.scala 184:18]
+  wire [1:0] _tapIO_T = _GEN_1[1:0]; // @[JtagTap.scala 184:18]
+  wire [11:0] _tapIO_T_8 = 12'h800 - 12'h1; // @[JtagTap.scala 185:41]
+  wire [30:0] _GEN_59 = {{19'd0}, _tapIO_T_8}; // @[JtagTap.scala 185:26]
+  wire [30:0] _tapIO_T_9 = 31'h489 & _GEN_59; // @[JtagTap.scala 185:26]
+  wire  tapIO_icodeSelects_0 = tapIO_controllerInternal_io_output_instruction == 5'h1; // @[JtagTap.scala 223:82]
+  wire  tapIO_icodeSelects_0_1 = tapIO_controllerInternal_io_output_instruction == 5'h10; // @[JtagTap.scala 223:82]
+  wire  tapIO_icodeSelects_0_2 = tapIO_controllerInternal_io_output_instruction == 5'h11; // @[JtagTap.scala 223:82]
+  wire  _GEN_28 = tapIO_icodeSelects_0_2 ? dmiAccessChain_io_chainOut_data : tapIO_bypassChain_io_chainOut_data; // @[JtagTap.scala 233:28 234:43 240:41]
+  wire  _GEN_32 = tapIO_icodeSelects_0_1 ? dtmInfoChain_io_chainOut_data : _GEN_28; // @[JtagTap.scala 233:28 234:43]
+  wire  tapIO_output_tapIsInTestLogicReset = tapIO_controllerInternal_io_output_tapIsInTestLogicReset; // @[JtagTap.scala 174:26 256:23]
+  CaptureUpdateChain dtmInfoChain ( // @[DebugTransport.scala 128:29]
+    .clock(dtmInfoChain_clock),
+    .reset(dtmInfoChain_reset),
+    .io_chainIn_shift(dtmInfoChain_io_chainIn_shift),
+    .io_chainIn_data(dtmInfoChain_io_chainIn_data),
+    .io_chainIn_capture(dtmInfoChain_io_chainIn_capture),
+    .io_chainIn_update(dtmInfoChain_io_chainIn_update),
+    .io_chainOut_data(dtmInfoChain_io_chainOut_data),
+    .io_capture_bits_dmiStatus(dtmInfoChain_io_capture_bits_dmiStatus),
+    .io_update_valid(dtmInfoChain_io_update_valid),
+    .io_update_bits_dmireset(dtmInfoChain_io_update_bits_dmireset)
+  );
+  CaptureUpdateChain_1 dmiAccessChain ( // @[DebugTransport.scala 134:31]
+    .clock(dmiAccessChain_clock),
+    .reset(dmiAccessChain_reset),
+    .io_chainIn_shift(dmiAccessChain_io_chainIn_shift),
+    .io_chainIn_data(dmiAccessChain_io_chainIn_data),
+    .io_chainIn_capture(dmiAccessChain_io_chainIn_capture),
+    .io_chainIn_update(dmiAccessChain_io_chainIn_update),
+    .io_chainOut_data(dmiAccessChain_io_chainOut_data),
+    .io_capture_bits_addr(dmiAccessChain_io_capture_bits_addr),
+    .io_capture_bits_data(dmiAccessChain_io_capture_bits_data),
+    .io_capture_bits_resp(dmiAccessChain_io_capture_bits_resp),
+    .io_capture_capture(dmiAccessChain_io_capture_capture),
+    .io_update_valid(dmiAccessChain_io_update_valid),
+    .io_update_bits_addr(dmiAccessChain_io_update_bits_addr),
+    .io_update_bits_data(dmiAccessChain_io_update_bits_data),
+    .io_update_bits_op(dmiAccessChain_io_update_bits_op)
+  );
+  CaptureChain tapIO_idcodeChain ( // @[JtagTap.scala 181:33]
+    .clock(tapIO_idcodeChain_clock),
+    .reset(tapIO_idcodeChain_reset),
+    .io_chainIn_shift(tapIO_idcodeChain_io_chainIn_shift),
+    .io_chainIn_data(tapIO_idcodeChain_io_chainIn_data),
+    .io_chainIn_capture(tapIO_idcodeChain_io_chainIn_capture),
+    .io_chainIn_update(tapIO_idcodeChain_io_chainIn_update),
+    .io_chainOut_data(tapIO_idcodeChain_io_chainOut_data)
+  );
+  JtagTapController tapIO_controllerInternal ( // @[JtagTap.scala 199:36]
+    .clock(tapIO_controllerInternal_clock),
+    .reset(tapIO_controllerInternal_reset),
+    .io_jtag_TMS(tapIO_controllerInternal_io_jtag_TMS),
+    .io_jtag_TDI(tapIO_controllerInternal_io_jtag_TDI),
+    .io_jtag_TDO_data(tapIO_controllerInternal_io_jtag_TDO_data),
+    .io_jtag_TDO_driven(tapIO_controllerInternal_io_jtag_TDO_driven),
+    .io_control_jtag_reset(tapIO_controllerInternal_io_control_jtag_reset),
+    .io_output_instruction(tapIO_controllerInternal_io_output_instruction),
+    .io_output_tapIsInTestLogicReset(tapIO_controllerInternal_io_output_tapIsInTestLogicReset),
+    .io_dataChainOut_shift(tapIO_controllerInternal_io_dataChainOut_shift),
+    .io_dataChainOut_data(tapIO_controllerInternal_io_dataChainOut_data),
+    .io_dataChainOut_capture(tapIO_controllerInternal_io_dataChainOut_capture),
+    .io_dataChainOut_update(tapIO_controllerInternal_io_dataChainOut_update),
+    .io_dataChainIn_data(tapIO_controllerInternal_io_dataChainIn_data)
+  );
+  JtagBypassChain tapIO_bypassChain ( // @[JtagTap.scala 207:29]
+    .clock(tapIO_bypassChain_clock),
+    .reset(tapIO_bypassChain_reset),
+    .io_chainIn_shift(tapIO_bypassChain_io_chainIn_shift),
+    .io_chainIn_data(tapIO_bypassChain_io_chainIn_data),
+    .io_chainIn_capture(tapIO_bypassChain_io_chainIn_capture),
+    .io_chainIn_update(tapIO_bypassChain_io_chainIn_update),
+    .io_chainOut_data(tapIO_bypassChain_io_chainOut_data)
+  );
+  assign io_dmi_req_valid = dmiReqValidReg; // @[DebugTransport.scala 241:20]
+  assign io_dmi_req_bits_addr = dmiReqReg_addr; // @[DebugTransport.scala 244:19]
+  assign io_dmi_req_bits_data = dmiReqReg_data; // @[DebugTransport.scala 244:19]
+  assign io_dmi_req_bits_op = dmiReqReg_op; // @[DebugTransport.scala 244:19]
+  assign io_dmi_resp_ready = _io_dmi_resp_ready_T ? io_dmi_resp_valid : _io_dmi_resp_ready_T_2; // @[DebugTransport.scala 224:27]
+  assign io_jtag_TDO_data = tapIO_controllerInternal_io_jtag_TDO_data; // @[JtagTap.scala 174:26 254:21]
+  assign io_jtag_TDO_driven = tapIO_controllerInternal_io_jtag_TDO_driven; // @[JtagTap.scala 174:26 254:21]
+  assign dtmInfoChain_clock = io_jtag_clock;
+  assign dtmInfoChain_reset = io_jtag_reset; // @[DebugTransport.scala 89:50]
+  assign dtmInfoChain_io_chainIn_shift = tapIO_icodeSelects_0_1 & tapIO_controllerInternal_io_dataChainOut_shift; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign dtmInfoChain_io_chainIn_data = tapIO_icodeSelects_0_1 & tapIO_controllerInternal_io_dataChainOut_data; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign dtmInfoChain_io_chainIn_capture = tapIO_icodeSelects_0_1 & tapIO_controllerInternal_io_dataChainOut_capture; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign dtmInfoChain_io_chainIn_update = tapIO_icodeSelects_0_1 & tapIO_controllerInternal_io_dataChainOut_update; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign dtmInfoChain_io_capture_bits_dmiStatus = {stickyNonzeroRespReg,_dmiStatus_T}; // @[Cat.scala 31:58]
+  assign dmiAccessChain_clock = io_jtag_clock;
+  assign dmiAccessChain_reset = io_jtag_reset; // @[DebugTransport.scala 89:50]
+  assign dmiAccessChain_io_chainIn_shift = tapIO_icodeSelects_0_2 & tapIO_controllerInternal_io_dataChainOut_shift; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign dmiAccessChain_io_chainIn_data = tapIO_icodeSelects_0_2 & tapIO_controllerInternal_io_dataChainOut_data; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign dmiAccessChain_io_chainIn_capture = tapIO_icodeSelects_0_2 & tapIO_controllerInternal_io_dataChainOut_capture; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign dmiAccessChain_io_chainIn_update = tapIO_icodeSelects_0_2 & tapIO_controllerInternal_io_dataChainOut_update; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign dmiAccessChain_io_capture_bits_addr = busy ? 7'h0 : _dmiAccessChain_io_capture_bits_T_addr; // @[DebugTransport.scala 197:40]
+  assign dmiAccessChain_io_capture_bits_data = busy ? 32'h0 : _dmiAccessChain_io_capture_bits_T_data; // @[DebugTransport.scala 197:40]
+  assign dmiAccessChain_io_capture_bits_resp = busy ? 2'h3 : _dmiAccessChain_io_capture_bits_T_resp; // @[DebugTransport.scala 197:40]
+  assign tapIO_idcodeChain_clock = io_jtag_clock;
+  assign tapIO_idcodeChain_reset = io_jtag_reset; // @[DebugTransport.scala 89:50]
+  assign tapIO_idcodeChain_io_chainIn_shift = tapIO_icodeSelects_0 & tapIO_controllerInternal_io_dataChainOut_shift; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign tapIO_idcodeChain_io_chainIn_data = tapIO_icodeSelects_0 & tapIO_controllerInternal_io_dataChainOut_data; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign tapIO_idcodeChain_io_chainIn_capture = tapIO_icodeSelects_0 & tapIO_controllerInternal_io_dataChainOut_capture; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign tapIO_idcodeChain_io_chainIn_update = tapIO_icodeSelects_0 & tapIO_controllerInternal_io_dataChainOut_update; // @[JtagTap.scala 245:21 246:26 248:26]
+  assign tapIO_controllerInternal_clock = io_jtag_clock;
+  assign tapIO_controllerInternal_reset = io_jtag_reset; // @[DebugTransport.scala 89:50]
+  assign tapIO_controllerInternal_io_jtag_TMS = io_jtag_TMS; // @[JtagTap.scala 174:26 DebugTransport.scala 262:14]
+  assign tapIO_controllerInternal_io_jtag_TDI = io_jtag_TDI; // @[JtagTap.scala 174:26 DebugTransport.scala 262:14]
+  assign tapIO_controllerInternal_io_control_jtag_reset = io_jtag_reset; // @[DebugTransport.scala 264:45]
+  assign tapIO_controllerInternal_io_dataChainIn_data = tapIO_icodeSelects_0 ? tapIO_idcodeChain_io_chainOut_data :
+    _GEN_32; // @[JtagTap.scala 233:28 234:43]
+  assign tapIO_bypassChain_clock = io_jtag_clock;
+  assign tapIO_bypassChain_reset = io_jtag_reset; // @[DebugTransport.scala 89:50]
+  assign tapIO_bypassChain_io_chainIn_shift = tapIO_controllerInternal_io_dataChainOut_shift; // @[JtagTap.scala 210:28]
+  assign tapIO_bypassChain_io_chainIn_data = tapIO_controllerInternal_io_dataChainOut_data; // @[JtagTap.scala 210:28]
+  assign tapIO_bypassChain_io_chainIn_capture = tapIO_controllerInternal_io_dataChainOut_capture; // @[JtagTap.scala 210:28]
+  assign tapIO_bypassChain_io_chainIn_update = tapIO_controllerInternal_io_dataChainOut_update; // @[JtagTap.scala 210:28]
+  always @(posedge io_jtag_clock) begin
+    if (dmiAccessChain_io_update_valid) begin // @[DebugTransport.scala 205:41]
+      if (!(stickyBusyReg)) begin // @[DebugTransport.scala 206:26]
+        if (downgradeOpReg | dmiAccessChain_io_update_bits_op == 2'h0) begin // @[DebugTransport.scala 208:97]
+          dmiReqReg_addr <= 7'h0; // @[DebugTransport.scala 210:22]
+        end else begin
+          dmiReqReg_addr <= dmiAccessChain_io_update_bits_addr; // @[DebugTransport.scala 214:17]
+        end
+      end
+    end
+    if (dmiAccessChain_io_update_valid) begin // @[DebugTransport.scala 205:41]
+      if (!(stickyBusyReg)) begin // @[DebugTransport.scala 206:26]
+        if (downgradeOpReg | dmiAccessChain_io_update_bits_op == 2'h0) begin // @[DebugTransport.scala 208:97]
+          dmiReqReg_data <= 32'h0; // @[DebugTransport.scala 211:22]
+        end else begin
+          dmiReqReg_data <= dmiAccessChain_io_update_bits_data; // @[DebugTransport.scala 214:17]
+        end
+      end
+    end
+    if (dmiAccessChain_io_update_valid) begin // @[DebugTransport.scala 205:41]
+      if (!(stickyBusyReg)) begin // @[DebugTransport.scala 206:26]
+        if (downgradeOpReg | dmiAccessChain_io_update_bits_op == 2'h0) begin // @[DebugTransport.scala 208:97]
+          dmiReqReg_op <= 2'h0; // @[DebugTransport.scala 212:22]
+        end else begin
+          dmiReqReg_op <= dmiAccessChain_io_update_bits_op; // @[DebugTransport.scala 214:17]
+        end
+      end
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(dmiReqValidCheck & _T_4)) & ~io_jtag_reset) begin
+          $fatal; // @[DebugTransport.scala 203:9]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (~io_jtag_reset & ~(~(dmiReqValidCheck & _T_4))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: Conflicting updates for dmiReqValidReg, should not happen.\n    at DebugTransport.scala:203 assert(!(dmiReqValidCheck && io.dmi.req.fire()), \"Conflicting updates for dmiReqValidReg, should not happen.\");\n"
+            ); // @[DebugTransport.scala 203:9]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_tapIO_T == 2'h1) & _T_8) begin
+          $fatal; // @[JtagTap.scala 184:15]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_8 & ~(_tapIO_T == 2'h1)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: LSB must be set in IDCODE, see 12.1.1d\n    at JtagTap.scala:184 assert(i %% 2.U === 1.U, \"LSB must be set in IDCODE, see 12.1.1d\")\n"
+            ); // @[JtagTap.scala 184:15]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_tapIO_T_9 != 31'h7f) & _T_8) begin
+          $fatal; // @[JtagTap.scala 185:15]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_8 & ~(_tapIO_T_9 != 31'h7f)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: IDCODE must not have 0b00001111111 as manufacturer identity, see 12.2.1b\n    at JtagTap.scala:185 assert(((i >> 1) & ((1.U << 11) - 1.U)) =/= JtagIdcode.dummyMfrId.U,\n"
+            ); // @[JtagTap.scala 185:15]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+  end
+  always @(posedge io_jtag_clock or posedge io_jtag_reset) begin
+    if (io_jtag_reset) begin // @[DebugTransport.scala 269:45]
+      busyReg <= 1'h0; // @[DebugTransport.scala 270:13]
+    end else if (tapIO_output_tapIsInTestLogicReset) begin // @[DebugTransport.scala 146:29]
+      busyReg <= 1'h0; // @[DebugTransport.scala 147:13]
+    end else if (_T_1) begin
+      busyReg <= 1'h0;
+    end else begin
+      busyReg <= _GEN_0;
+    end
+  end
+  always @(posedge io_jtag_clock or posedge io_jtag_reset) begin
+    if (io_jtag_reset) begin // @[DebugTransport.scala 269:45]
+      stickyBusyReg <= 1'h0; // @[DebugTransport.scala 271:19]
+    end else if (tapIO_output_tapIsInTestLogicReset) begin // @[DebugTransport.scala 168:39]
+      stickyBusyReg <= 1'h0; // @[DebugTransport.scala 169:49 171:21]
+    end else if (dtmInfoChain_io_update_valid) begin
+      if (dtmInfoChain_io_update_bits_dmireset) begin
+        stickyBusyReg <= 1'h0;
+      end else begin
+        stickyBusyReg <= _GEN_4;
+      end
+    end else begin
+      stickyBusyReg <= _GEN_4;
+    end
+  end
+  always @(posedge io_jtag_clock or posedge io_jtag_reset) begin
+    if (io_jtag_reset) begin // @[DebugTransport.scala 269:45]
+      stickyNonzeroRespReg <= 1'h0; // @[DebugTransport.scala 272:26]
+    end else if (tapIO_output_tapIsInTestLogicReset) begin // @[DebugTransport.scala 168:39]
+      stickyNonzeroRespReg <= 1'h0; // @[DebugTransport.scala 169:49 170:28]
+    end else if (dtmInfoChain_io_update_valid) begin
+      if (dtmInfoChain_io_update_bits_dmireset) begin
+        stickyNonzeroRespReg <= 1'h0;
+      end else begin
+        stickyNonzeroRespReg <= _GEN_5;
+      end
+    end else begin
+      stickyNonzeroRespReg <= _GEN_5;
+    end
+  end
+  always @(posedge io_jtag_clock or posedge io_jtag_reset) begin
+    if (io_jtag_reset) begin // @[DebugTransport.scala 269:45]
+      downgradeOpReg <= 1'h0; // @[DebugTransport.scala 273:20]
+    end else if (tapIO_output_tapIsInTestLogicReset) begin // @[DebugTransport.scala 163:44]
+      downgradeOpReg <= 1'h0; // @[DebugTransport.scala 164:20]
+    end else if (dmiAccessChain_io_capture_capture) begin // @[DebugTransport.scala 160:41]
+      downgradeOpReg <= ~busy & nonzeroResp; // @[DebugTransport.scala 161:20]
+    end else if (dmiAccessChain_io_update_valid) begin // @[DebugTransport.scala 100:31]
+      downgradeOpReg <= 1'h0;
+    end
+  end
+  always @(posedge io_jtag_clock or posedge io_jtag_reset) begin
+    if (io_jtag_reset) begin // @[DebugTransport.scala 269:45]
+      dmiReqValidReg <= 1'h0; // @[DebugTransport.scala 274:20]
+    end else if (tapIO_output_tapIsInTestLogicReset) begin // @[DebugTransport.scala 220:28]
+      dmiReqValidReg <= 1'h0; // @[DebugTransport.scala 221:20]
+    end else if (_T_4) begin // @[DebugTransport.scala 205:41]
+      dmiReqValidReg <= 1'h0; // @[DebugTransport.scala 206:26 111:31]
+    end else if (dmiAccessChain_io_update_valid) begin // @[DebugTransport.scala 111:31]
+      if (!(stickyBusyReg)) begin
+        dmiReqValidReg <= _GEN_13;
+      end
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  busyReg = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  stickyBusyReg = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  stickyNonzeroRespReg = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  downgradeOpReg = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  dmiReqReg_addr = _RAND_4[6:0];
+  _RAND_5 = {1{`RANDOM}};
+  dmiReqReg_data = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  dmiReqReg_op = _RAND_6[1:0];
+  _RAND_7 = {1{`RANDOM}};
+  dmiReqValidReg = _RAND_7[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (io_jtag_reset) begin
+    busyReg = 1'h0;
+  end
+  if (io_jtag_reset) begin
+    stickyBusyReg = 1'h0;
+  end
+  if (io_jtag_reset) begin
+    stickyNonzeroRespReg = 1'h0;
+  end
+  if (io_jtag_reset) begin
+    downgradeOpReg = 1'h0;
+  end
+  if (io_jtag_reset) begin
+    dmiReqValidReg = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module MarmotCaravelSystem(
+  input   clock,
+  input   reset,
+  input   debug_clock,
+  input   debug_systemjtag_jtag_TCK,
+  input   debug_systemjtag_jtag_TMS,
+  input   debug_systemjtag_jtag_TDI,
+  output  debug_systemjtag_jtag_TDO_data,
+  output  debug_systemjtag_jtag_TDO_driven,
+  input   debug_systemjtag_reset,
+  output  uart_0_txd,
+  input   uart_0_rxd,
+  output  uart_1_txd,
+  input   uart_1_rxd,
+  output  uart_2_txd,
+  input   uart_2_rxd,
+  output  uart_3_txd,
+  input   uart_3_rxd,
+  output  uart_4_txd,
+  input   uart_4_rxd,
+  output  spi_0_sck,
+  input   spi_0_dq_0_i,
+  output  spi_0_dq_0_o,
+  output  spi_0_dq_0_oe,
+  input   spi_0_dq_1_i,
+  output  spi_0_dq_1_o,
+  output  spi_0_dq_1_oe,
+  input   spi_0_dq_2_i,
+  output  spi_0_dq_2_o,
+  output  spi_0_dq_2_oe,
+  input   spi_0_dq_3_i,
+  output  spi_0_dq_3_o,
+  output  spi_0_dq_3_oe,
+  output  spi_0_cs_0,
+  output  spi_0_cs_1,
+  input   gpio_0_pins_0_i_ival,
+  output  gpio_0_pins_0_o_oval,
+  output  gpio_0_pins_0_o_oe,
+  output  gpio_0_pins_0_o_ie,
+  input   gpio_0_pins_1_i_ival,
+  output  gpio_0_pins_1_o_oval,
+  output  gpio_0_pins_1_o_oe,
+  output  gpio_0_pins_1_o_ie,
+  input   gpio_0_pins_2_i_ival,
+  output  gpio_0_pins_2_o_oval,
+  output  gpio_0_pins_2_o_oe,
+  output  gpio_0_pins_2_o_ie,
+  input   gpio_0_pins_3_i_ival,
+  output  gpio_0_pins_3_o_oval,
+  output  gpio_0_pins_3_o_oe,
+  output  gpio_0_pins_3_o_ie,
+  input   gpio_0_pins_4_i_ival,
+  output  gpio_0_pins_4_o_oval,
+  output  gpio_0_pins_4_o_oe,
+  output  gpio_0_pins_4_o_ie,
+  input   gpio_0_pins_5_i_ival,
+  output  gpio_0_pins_5_o_oval,
+  output  gpio_0_pins_5_o_oe,
+  output  gpio_0_pins_5_o_ie,
+  input   gpio_0_pins_6_i_ival,
+  output  gpio_0_pins_6_o_oval,
+  output  gpio_0_pins_6_o_oe,
+  input   gpio_0_pins_7_i_ival,
+  output  gpio_0_pins_7_o_oval,
+  output  gpio_0_pins_7_o_oe,
+  input   gpio_0_pins_8_i_ival,
+  output  gpio_0_pins_8_o_oval,
+  output  gpio_0_pins_8_o_oe,
+  input   gpio_0_pins_9_i_ival,
+  output  gpio_0_pins_9_o_oval,
+  output  gpio_0_pins_9_o_oe,
+  input   gpio_0_pins_10_i_ival,
+  output  gpio_0_pins_10_o_oval,
+  output  gpio_0_pins_10_o_oe,
+  input   gpio_0_pins_11_i_ival,
+  output  gpio_0_pins_11_o_oval,
+  output  gpio_0_pins_11_o_oe,
+  input   gpio_0_pins_12_i_ival,
+  output  gpio_0_pins_12_o_oval,
+  output  gpio_0_pins_12_o_oe,
+  output  gpio_0_pins_12_o_ie,
+  input   gpio_0_pins_13_i_ival,
+  output  gpio_0_pins_13_o_oval,
+  output  gpio_0_pins_13_o_oe,
+  output  gpio_0_pins_13_o_ie,
+  input   gpio_0_pins_14_i_ival,
+  output  gpio_0_pins_14_o_oval,
+  output  gpio_0_pins_14_o_oe,
+  output  gpio_0_pins_14_o_ie,
+  input   gpio_0_pins_15_i_ival,
+  output  gpio_0_pins_15_o_oval,
+  output  gpio_0_pins_15_o_oe,
+  output  gpio_0_pins_15_o_ie,
+  input   gpio_0_pins_16_i_ival,
+  output  gpio_0_pins_16_o_oval,
+  output  gpio_0_pins_16_o_oe,
+  output  gpio_0_pins_16_o_ie,
+  input   gpio_0_pins_17_i_ival,
+  output  gpio_0_pins_17_o_oval,
+  output  gpio_0_pins_17_o_oe,
+  output  gpio_0_pins_17_o_ie,
+  input   gpio_0_pins_18_i_ival,
+  output  gpio_0_pins_18_o_oval,
+  output  gpio_0_pins_18_o_oe,
+  output  gpio_0_pins_18_o_ie,
+  input   gpio_0_pins_19_i_ival,
+  output  gpio_0_pins_19_o_oval,
+  output  gpio_0_pins_19_o_oe,
+  output  gpio_0_pins_19_o_ie,
+  input   gpio_0_pins_20_i_ival,
+  output  gpio_0_pins_20_o_oval,
+  output  gpio_0_pins_20_o_oe,
+  output  gpio_0_pins_20_o_ie,
+  input   gpio_0_pins_21_i_ival,
+  output  gpio_0_pins_21_o_oval,
+  output  gpio_0_pins_21_o_oe,
+  output  gpio_0_pins_21_o_ie,
+  input   gpio_0_pins_22_i_ival,
+  output  gpio_0_pins_22_o_oval,
+  output  gpio_0_pins_22_o_oe,
+  output  gpio_0_pins_22_o_ie,
+  input   gpio_0_pins_23_i_ival,
+  output  gpio_0_pins_23_o_oval,
+  output  gpio_0_pins_23_o_oe,
+  output  gpio_0_pins_23_o_ie,
+  input   gpio_0_pins_24_i_ival,
+  output  gpio_0_pins_24_o_oval,
+  output  gpio_0_pins_24_o_oe,
+  output  gpio_0_pins_24_o_ie,
+  input   gpio_0_pins_25_i_ival,
+  output  gpio_0_pins_25_o_oval,
+  output  gpio_0_pins_25_o_oe,
+  input   gpio_0_pins_26_i_ival,
+  output  gpio_0_pins_26_o_oval,
+  output  gpio_0_pins_26_o_oe,
+  input   gpio_0_pins_27_i_ival,
+  output  gpio_0_pins_27_o_oval,
+  output  gpio_0_pins_27_o_oe,
+  input   gpio_0_pins_28_i_ival,
+  output  gpio_0_pins_28_o_oval,
+  output  gpio_0_pins_28_o_oe,
+  input   gpio_0_pins_29_i_ival,
+  output  gpio_0_pins_29_o_oval,
+  output  gpio_0_pins_29_o_oe,
+  input   gpio_0_pins_30_i_ival,
+  output  gpio_0_pins_30_o_oval,
+  output  gpio_0_pins_30_o_oe,
+  input   gpio_0_pins_31_i_ival,
+  output  gpio_0_pins_31_o_oval,
+  output  gpio_0_pins_31_o_oe,
+  input   iof_0_iof_0_0_o_oval,
+  input   iof_0_iof_0_1_o_oval,
+  output  iof_0_iof_0_2_i_ival,
+  input   iof_0_iof_0_2_o_oval,
+  input   iof_0_iof_0_2_o_oe,
+  input   iof_0_iof_0_2_o_ie,
+  output  iof_0_iof_0_3_i_ival,
+  input   iof_0_iof_0_3_o_oval,
+  input   iof_0_iof_0_3_o_oe,
+  input   iof_0_iof_0_3_o_ie,
+  output  iof_0_iof_0_4_i_ival,
+  input   iof_0_iof_0_4_o_oval,
+  input   iof_0_iof_0_4_o_oe,
+  input   iof_0_iof_0_4_o_ie,
+  output  iof_0_iof_0_5_i_ival,
+  input   iof_0_iof_0_5_o_oval,
+  input   iof_0_iof_0_5_o_oe,
+  input   iof_0_iof_0_5_o_ie,
+  output  iof_0_iof_0_12_i_ival,
+  input   iof_0_iof_0_12_o_oe,
+  output  iof_0_iof_0_13_i_ival,
+  input   iof_0_iof_0_13_o_oe,
+  output  iof_0_iof_0_14_i_ival,
+  input   iof_0_iof_0_14_o_oe,
+  output  iof_0_iof_0_15_i_ival,
+  input   iof_0_iof_0_15_o_oe,
+  output  iof_0_iof_0_16_i_ival,
+  input   iof_0_iof_0_17_o_oval,
+  output  iof_0_iof_0_18_i_ival,
+  input   iof_0_iof_0_19_o_oval,
+  output  iof_0_iof_0_20_i_ival,
+  input   iof_0_iof_0_21_o_oval,
+  output  iof_0_iof_0_22_i_ival,
+  input   iof_0_iof_0_23_o_oval,
+  input   iof_0_iof_0_24_o_oval,
+  input   iof_0_iof_1_12_o_oval,
+  input   iof_0_iof_1_13_o_oval,
+  input   iof_0_iof_1_14_o_oval,
+  input   iof_0_iof_1_15_o_oval,
+  input   iof_0_iof_1_16_o_oval,
+  input   iof_0_iof_1_17_o_oval,
+  input   iof_0_iof_1_18_o_oval,
+  input   iof_0_iof_1_19_o_oval,
+  input   iof_0_iof_1_20_o_oval,
+  input   iof_0_iof_1_21_o_oval,
+  input   iof_0_iof_1_22_o_oval,
+  input   iof_0_iof_1_23_o_oval,
+  output  pwm_0_gpio_0,
+  output  pwm_0_gpio_1,
+  output  pwm_0_gpio_2,
+  output  pwm_0_gpio_3,
+  output  pwm_1_gpio_0,
+  output  pwm_1_gpio_1,
+  output  pwm_1_gpio_2,
+  output  pwm_1_gpio_3,
+  output  pwm_2_gpio_0,
+  output  pwm_2_gpio_1,
+  output  pwm_2_gpio_2,
+  output  pwm_2_gpio_3,
+  output  qspi_0_sck,
+  input   qspi_0_dq_0_i,
+  output  qspi_0_dq_0_o,
+  output  qspi_0_dq_0_oe,
+  input   qspi_0_dq_1_i,
+  output  qspi_0_dq_1_o,
+  output  qspi_0_dq_1_oe,
+  input   qspi_0_dq_2_i,
+  output  qspi_0_dq_2_o,
+  output  qspi_0_dq_2_oe,
+  input   qspi_0_dq_3_i,
+  output  qspi_0_dq_3_o,
+  output  qspi_0_dq_3_oe,
+  output  qspi_0_cs_0,
+  output  qspi_ram_0_sck,
+  input   qspi_ram_0_dq_0_i,
+  output  qspi_ram_0_dq_0_o,
+  output  qspi_ram_0_dq_0_oe,
+  input   qspi_ram_0_dq_1_i,
+  output  qspi_ram_0_dq_1_o,
+  output  qspi_ram_0_dq_1_oe,
+  input   qspi_ram_0_dq_2_i,
+  output  qspi_ram_0_dq_2_o,
+  output  qspi_ram_0_dq_2_oe,
+  input   qspi_ram_0_dq_3_i,
+  output  qspi_ram_0_dq_3_o,
+  output  qspi_ram_0_dq_3_oe,
+  output  qspi_ram_0_cs_0,
+  input   aon_pins_erst_n_i_ival,
+  input   aon_pins_lfextclk_i_ival,
+  output  aon_rsts_corerst,
+  input   i2c_0_scl_in,
+  output  i2c_0_scl_oe,
+  input   i2c_0_sda_in,
+  output  i2c_0_sda_oe,
+  input   i2c_1_scl_in,
+  output  i2c_1_scl_oe,
+  input   i2c_1_sda_in,
+  output  i2c_1_sda_oe, // <no_sram>
+  output [5:0]  tag_array_ext_RW0_addr, // <no_sram>
+  output        tag_array_ext_RW0_en, // <no_sram>
+  output        tag_array_ext_RW0_clk, // <no_sram>
+  output        tag_array_ext_RW0_wmode, // <no_sram>
+  output [20:0] tag_array_ext_RW0_wdata, // <no_sram>
+  input  [20:0] tag_array_ext_RW0_rdata, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  wire  ibus_auto_int_bus_int_in_14_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_13_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_12_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_12_1; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_12_2; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_12_3; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_11_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_11_1; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_11_2; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_11_3; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_10_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_10_1; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_10_2; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_10_3; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_1; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_2; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_3; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_4; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_5; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_6; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_7; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_8; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_9; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_10; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_11; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_12; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_13; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_14; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_15; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_16; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_17; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_18; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_19; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_20; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_21; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_22; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_23; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_24; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_25; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_26; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_27; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_28; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_29; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_30; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_9_31; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_8_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_7_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_6_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_5_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_4_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_3_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_2_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_1_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_0_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_0_1; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_0; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_1; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_2; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_3; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_4; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_5; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_6; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_7; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_8; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_9; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_10; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_11; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_12; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_13; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_14; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_15; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_16; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_17; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_18; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_19; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_20; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_21; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_22; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_23; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_24; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_25; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_26; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_27; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_28; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_29; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_30; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_31; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_32; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_33; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_34; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_35; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_36; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_37; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_38; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_39; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_40; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_41; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_42; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_43; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_44; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_45; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_46; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_47; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_48; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_49; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_50; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_51; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_52; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_53; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_54; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_out_55; // @[BaseSubsystem.scala 50:24]
+  wire  dummyClockGroupSourceNode_clock; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_reset; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_5_clock; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_5_reset; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_4_clock; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_4_reset; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_3_clock; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_3_reset; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_2_clock; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_2_reset; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_1_clock; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_1_reset; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_0_clock; // @[ClockGroup.scala 79:81]
+  wire  dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_0_reset; // @[ClockGroup.scala 79:81]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_param; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_size; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_source; // @[SystemBus.scala 24:26]
+  wire [30:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_address; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_mask; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_corrupt; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_valid; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_param; // @[SystemBus.scala 24:26]
+  wire [30:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_address; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_param; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_size; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_source; // @[SystemBus.scala 24:26]
+  wire [30:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_address; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_corrupt; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_param; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_size; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_source; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_sink; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_denied; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_corrupt; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_e_valid; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_e_bits_sink; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_param; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_size; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_source; // @[SystemBus.scala 24:26]
+  wire [30:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_address; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_mask; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_corrupt; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_valid; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_param; // @[SystemBus.scala 24:26]
+  wire [30:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_address; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_param; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_size; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_source; // @[SystemBus.scala 24:26]
+  wire [30:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_address; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_corrupt; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_param; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_size; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_source; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_sink; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_e_valid; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_e_bits_sink; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_param; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_size; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_source; // @[SystemBus.scala 24:26]
+  wire [29:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_address; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_mask; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_corrupt; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_param; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_size; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_source; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_sink; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_denied; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_corrupt; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_fixedClockNode_out_1_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_fixedClockNode_out_1_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_clock; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_reset; // @[SystemBus.scala 24:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [8:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [29:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [8:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [7:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_13_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_13_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_12_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_12_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_11_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_11_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_10_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_10_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_9_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_9_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_8_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_8_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_7_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_7_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_6_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_6_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_5_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_5_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_4_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_4_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_3_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_3_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_2_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_2_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_1_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_1_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_0_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_fixedClockNode_out_0_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_bus_xing_in_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_bus_xing_in_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_bus_xing_in_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_bus_xing_in_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_bus_xing_in_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_bus_xing_in_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [29:0] subsystem_pbus_auto_bus_xing_in_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_pbus_auto_bus_xing_in_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_bus_xing_in_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_bus_xing_in_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_bus_xing_in_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_bus_xing_in_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_bus_xing_in_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_bus_xing_in_d_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_bus_xing_in_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_bus_xing_in_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_bus_xing_in_d_bits_sink; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_bus_xing_in_d_bits_denied; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_pbus_auto_bus_xing_in_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_bus_xing_in_d_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_fbus_auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_clock; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_reset; // @[FrontBus.scala 22:26]
+  wire  subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [16:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_a_ridx; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_a_widx; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_ridx_valid; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_widx_valid; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_source_reset_n; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_sink_reset_n; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_source; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_sink; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_denied; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_ridx; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_widx; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_ridx_valid; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_widx_valid; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_source_reset_n; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_sink_reset_n; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [27:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_sink; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_denied; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [11:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [25:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [27:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [29:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_sink; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_denied; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_fixedClockNode_out_2_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_fixedClockNode_out_2_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_fixedClockNode_out_0_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_fixedClockNode_out_0_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_bus_xing_in_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_bus_xing_in_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_bus_xing_in_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_bus_xing_in_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_bus_xing_in_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_bus_xing_in_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [29:0] subsystem_cbus_auto_bus_xing_in_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_bus_xing_in_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_bus_xing_in_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_bus_xing_in_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_bus_xing_in_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_bus_xing_in_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_bus_xing_in_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_bus_xing_in_d_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [3:0] subsystem_cbus_auto_bus_xing_in_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_bus_xing_in_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_bus_xing_in_d_bits_sink; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_bus_xing_in_d_bits_denied; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_bus_xing_in_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_bus_xing_in_d_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_ready; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_valid; // @[MemoryBus.scala 25:26]
+  wire [2:0] subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_opcode; // @[MemoryBus.scala 25:26]
+  wire [2:0] subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_param; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_size; // @[MemoryBus.scala 25:26]
+  wire [10:0] subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_source; // @[MemoryBus.scala 25:26]
+  wire [30:0] subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_address; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_mask; // @[MemoryBus.scala 25:26]
+  wire [7:0] subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_data; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_corrupt; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_ready; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_valid; // @[MemoryBus.scala 25:26]
+  wire [2:0] subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_opcode; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_size; // @[MemoryBus.scala 25:26]
+  wire [10:0] subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_source; // @[MemoryBus.scala 25:26]
+  wire [7:0] subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_data; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_clock; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_reset; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_bus_xing_in_a_ready; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_bus_xing_in_a_valid; // @[MemoryBus.scala 25:26]
+  wire [2:0] subsystem_mbus_auto_bus_xing_in_a_bits_opcode; // @[MemoryBus.scala 25:26]
+  wire [2:0] subsystem_mbus_auto_bus_xing_in_a_bits_param; // @[MemoryBus.scala 25:26]
+  wire [2:0] subsystem_mbus_auto_bus_xing_in_a_bits_size; // @[MemoryBus.scala 25:26]
+  wire [3:0] subsystem_mbus_auto_bus_xing_in_a_bits_source; // @[MemoryBus.scala 25:26]
+  wire [30:0] subsystem_mbus_auto_bus_xing_in_a_bits_address; // @[MemoryBus.scala 25:26]
+  wire [3:0] subsystem_mbus_auto_bus_xing_in_a_bits_mask; // @[MemoryBus.scala 25:26]
+  wire [31:0] subsystem_mbus_auto_bus_xing_in_a_bits_data; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_bus_xing_in_d_ready; // @[MemoryBus.scala 25:26]
+  wire  subsystem_mbus_auto_bus_xing_in_d_valid; // @[MemoryBus.scala 25:26]
+  wire [2:0] subsystem_mbus_auto_bus_xing_in_d_bits_opcode; // @[MemoryBus.scala 25:26]
+  wire [2:0] subsystem_mbus_auto_bus_xing_in_d_bits_size; // @[MemoryBus.scala 25:26]
+  wire [3:0] subsystem_mbus_auto_bus_xing_in_d_bits_source; // @[MemoryBus.scala 25:26]
+  wire [31:0] subsystem_mbus_auto_bus_xing_in_d_bits_data; // @[MemoryBus.scala 25:26]
+  wire  subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_ready; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_valid; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_opcode; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_param; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_size; // @[BankedL2Params.scala 47:31]
+  wire [3:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_source; // @[BankedL2Params.scala 47:31]
+  wire [30:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_address; // @[BankedL2Params.scala 47:31]
+  wire [3:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_mask; // @[BankedL2Params.scala 47:31]
+  wire [31:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_data; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_ready; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_valid; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_opcode; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_size; // @[BankedL2Params.scala 47:31]
+  wire [3:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_source; // @[BankedL2Params.scala 47:31]
+  wire [31:0] subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_data; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_a_ready; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_a_valid; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_opcode; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_param; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_size; // @[BankedL2Params.scala 47:31]
+  wire [1:0] subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_source; // @[BankedL2Params.scala 47:31]
+  wire [30:0] subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_address; // @[BankedL2Params.scala 47:31]
+  wire [3:0] subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_mask; // @[BankedL2Params.scala 47:31]
+  wire [31:0] subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_data; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_corrupt; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_b_ready; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_b_valid; // @[BankedL2Params.scala 47:31]
+  wire [1:0] subsystem_l2_wrapper_auto_coherent_jbar_in_b_bits_param; // @[BankedL2Params.scala 47:31]
+  wire [30:0] subsystem_l2_wrapper_auto_coherent_jbar_in_b_bits_address; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_c_ready; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_c_valid; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_opcode; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_param; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_size; // @[BankedL2Params.scala 47:31]
+  wire [1:0] subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_source; // @[BankedL2Params.scala 47:31]
+  wire [30:0] subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_address; // @[BankedL2Params.scala 47:31]
+  wire [31:0] subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_data; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_corrupt; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_d_ready; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_d_valid; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_opcode; // @[BankedL2Params.scala 47:31]
+  wire [1:0] subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_param; // @[BankedL2Params.scala 47:31]
+  wire [2:0] subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_size; // @[BankedL2Params.scala 47:31]
+  wire [1:0] subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_source; // @[BankedL2Params.scala 47:31]
+  wire [1:0] subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_sink; // @[BankedL2Params.scala 47:31]
+  wire [31:0] subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_data; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_coherent_jbar_in_e_valid; // @[BankedL2Params.scala 47:31]
+  wire [1:0] subsystem_l2_wrapper_auto_coherent_jbar_in_e_bits_sink; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_clock; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_reset; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_clock; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_reset; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_clock; // @[BankedL2Params.scala 47:31]
+  wire  subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_reset; // @[BankedL2Params.scala 47:31]
+  wire  tile_prci_domain_auto_intsink_in_sync_0; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tile_reset_domain_tile_hartid_in; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_int_out_clock_xing_out_2_sync_0; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_int_out_clock_xing_out_1_sync_0; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_int_out_clock_xing_out_0_sync_0; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_int_in_clock_xing_in_2_sync_0; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_int_in_clock_xing_in_1_sync_0; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_int_in_clock_xing_in_0_sync_0; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_int_in_clock_xing_in_0_sync_1; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_slave_clock_xing_in_a_ready; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_slave_clock_xing_in_a_valid; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_opcode; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_param; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_size; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_source; // @[HasTiles.scala 252:38]
+  wire [27:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_address; // @[HasTiles.scala 252:38]
+  wire [3:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_mask; // @[HasTiles.scala 252:38]
+  wire [31:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_data; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_corrupt; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_slave_clock_xing_in_d_ready; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_slave_clock_xing_in_d_valid; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_opcode; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_param; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_size; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_source; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_sink; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_denied; // @[HasTiles.scala 252:38]
+  wire [31:0] tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_data; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_corrupt; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_a_ready; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_a_valid; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_opcode; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_param; // @[HasTiles.scala 252:38]
+  wire [3:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_size; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_source; // @[HasTiles.scala 252:38]
+  wire [30:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_address; // @[HasTiles.scala 252:38]
+  wire [3:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_mask; // @[HasTiles.scala 252:38]
+  wire [31:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_data; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_corrupt; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_b_ready; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_b_valid; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_master_clock_xing_out_b_bits_param; // @[HasTiles.scala 252:38]
+  wire [30:0] tile_prci_domain_auto_tl_master_clock_xing_out_b_bits_address; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_c_ready; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_c_valid; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_opcode; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_param; // @[HasTiles.scala 252:38]
+  wire [3:0] tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_size; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_source; // @[HasTiles.scala 252:38]
+  wire [30:0] tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_address; // @[HasTiles.scala 252:38]
+  wire [31:0] tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_data; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_corrupt; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_d_ready; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_d_valid; // @[HasTiles.scala 252:38]
+  wire [2:0] tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_opcode; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_param; // @[HasTiles.scala 252:38]
+  wire [3:0] tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_size; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_source; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_sink; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_denied; // @[HasTiles.scala 252:38]
+  wire [31:0] tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_data; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_corrupt; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tl_master_clock_xing_out_e_valid; // @[HasTiles.scala 252:38]
+  wire [1:0] tile_prci_domain_auto_tl_master_clock_xing_out_e_bits_sink; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tap_clock_in_clock; // @[HasTiles.scala 252:38]
+  wire  tile_prci_domain_auto_tap_clock_in_reset; // @[HasTiles.scala 252:38]
+  wire  plicDomainWrapper_auto_plic_int_in_0; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_1; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_2; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_3; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_4; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_5; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_6; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_7; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_8; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_9; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_10; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_11; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_12; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_13; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_14; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_15; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_16; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_17; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_18; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_19; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_20; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_21; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_22; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_23; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_24; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_25; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_26; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_27; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_28; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_29; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_30; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_31; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_32; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_33; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_34; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_35; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_36; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_37; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_38; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_39; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_40; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_41; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_42; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_43; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_44; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_45; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_46; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_47; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_48; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_49; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_50; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_51; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_52; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_53; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_54; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_in_55; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_out_1_0; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_int_out_0_0; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_in_a_ready; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_in_a_valid; // @[Plic.scala 359:39]
+  wire [2:0] plicDomainWrapper_auto_plic_in_a_bits_opcode; // @[Plic.scala 359:39]
+  wire [2:0] plicDomainWrapper_auto_plic_in_a_bits_param; // @[Plic.scala 359:39]
+  wire [1:0] plicDomainWrapper_auto_plic_in_a_bits_size; // @[Plic.scala 359:39]
+  wire [6:0] plicDomainWrapper_auto_plic_in_a_bits_source; // @[Plic.scala 359:39]
+  wire [27:0] plicDomainWrapper_auto_plic_in_a_bits_address; // @[Plic.scala 359:39]
+  wire [3:0] plicDomainWrapper_auto_plic_in_a_bits_mask; // @[Plic.scala 359:39]
+  wire [31:0] plicDomainWrapper_auto_plic_in_a_bits_data; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_in_a_bits_corrupt; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_in_d_ready; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_plic_in_d_valid; // @[Plic.scala 359:39]
+  wire [2:0] plicDomainWrapper_auto_plic_in_d_bits_opcode; // @[Plic.scala 359:39]
+  wire [1:0] plicDomainWrapper_auto_plic_in_d_bits_size; // @[Plic.scala 359:39]
+  wire [6:0] plicDomainWrapper_auto_plic_in_d_bits_source; // @[Plic.scala 359:39]
+  wire [31:0] plicDomainWrapper_auto_plic_in_d_bits_data; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_clock_in_clock; // @[Plic.scala 359:39]
+  wire  plicDomainWrapper_auto_clock_in_reset; // @[Plic.scala 359:39]
+  wire  clint_clock; // @[CLINT.scala 109:27]
+  wire  clint_reset; // @[CLINT.scala 109:27]
+  wire  clint_auto_int_out_0; // @[CLINT.scala 109:27]
+  wire  clint_auto_int_out_1; // @[CLINT.scala 109:27]
+  wire  clint_auto_in_a_ready; // @[CLINT.scala 109:27]
+  wire  clint_auto_in_a_valid; // @[CLINT.scala 109:27]
+  wire [2:0] clint_auto_in_a_bits_opcode; // @[CLINT.scala 109:27]
+  wire [2:0] clint_auto_in_a_bits_param; // @[CLINT.scala 109:27]
+  wire [1:0] clint_auto_in_a_bits_size; // @[CLINT.scala 109:27]
+  wire [6:0] clint_auto_in_a_bits_source; // @[CLINT.scala 109:27]
+  wire [25:0] clint_auto_in_a_bits_address; // @[CLINT.scala 109:27]
+  wire [3:0] clint_auto_in_a_bits_mask; // @[CLINT.scala 109:27]
+  wire [31:0] clint_auto_in_a_bits_data; // @[CLINT.scala 109:27]
+  wire  clint_auto_in_a_bits_corrupt; // @[CLINT.scala 109:27]
+  wire  clint_auto_in_d_ready; // @[CLINT.scala 109:27]
+  wire  clint_auto_in_d_valid; // @[CLINT.scala 109:27]
+  wire [2:0] clint_auto_in_d_bits_opcode; // @[CLINT.scala 109:27]
+  wire [1:0] clint_auto_in_d_bits_size; // @[CLINT.scala 109:27]
+  wire [6:0] clint_auto_in_d_bits_source; // @[CLINT.scala 109:27]
+  wire [31:0] clint_auto_in_d_bits_data; // @[CLINT.scala 109:27]
+  wire  clint_io_rtcTick; // @[CLINT.scala 109:27]
+  wire  debug_1_auto_dmInner_dmInner_tl_in_a_ready; // @[Periphery.scala 84:27]
+  wire  debug_1_auto_dmInner_dmInner_tl_in_a_valid; // @[Periphery.scala 84:27]
+  wire [2:0] debug_1_auto_dmInner_dmInner_tl_in_a_bits_opcode; // @[Periphery.scala 84:27]
+  wire [2:0] debug_1_auto_dmInner_dmInner_tl_in_a_bits_param; // @[Periphery.scala 84:27]
+  wire [1:0] debug_1_auto_dmInner_dmInner_tl_in_a_bits_size; // @[Periphery.scala 84:27]
+  wire [6:0] debug_1_auto_dmInner_dmInner_tl_in_a_bits_source; // @[Periphery.scala 84:27]
+  wire [11:0] debug_1_auto_dmInner_dmInner_tl_in_a_bits_address; // @[Periphery.scala 84:27]
+  wire [3:0] debug_1_auto_dmInner_dmInner_tl_in_a_bits_mask; // @[Periphery.scala 84:27]
+  wire [31:0] debug_1_auto_dmInner_dmInner_tl_in_a_bits_data; // @[Periphery.scala 84:27]
+  wire  debug_1_auto_dmInner_dmInner_tl_in_a_bits_corrupt; // @[Periphery.scala 84:27]
+  wire  debug_1_auto_dmInner_dmInner_tl_in_d_ready; // @[Periphery.scala 84:27]
+  wire  debug_1_auto_dmInner_dmInner_tl_in_d_valid; // @[Periphery.scala 84:27]
+  wire [2:0] debug_1_auto_dmInner_dmInner_tl_in_d_bits_opcode; // @[Periphery.scala 84:27]
+  wire [1:0] debug_1_auto_dmInner_dmInner_tl_in_d_bits_size; // @[Periphery.scala 84:27]
+  wire [6:0] debug_1_auto_dmInner_dmInner_tl_in_d_bits_source; // @[Periphery.scala 84:27]
+  wire [31:0] debug_1_auto_dmInner_dmInner_tl_in_d_bits_data; // @[Periphery.scala 84:27]
+  wire  debug_1_auto_dmOuter_intsource_out_sync_0; // @[Periphery.scala 84:27]
+  wire  debug_1_io_debug_clock; // @[Periphery.scala 84:27]
+  wire  debug_1_io_ctrl_ndreset; // @[Periphery.scala 84:27]
+  wire  debug_1_io_dmi_dmi_req_ready; // @[Periphery.scala 84:27]
+  wire  debug_1_io_dmi_dmi_req_valid; // @[Periphery.scala 84:27]
+  wire [6:0] debug_1_io_dmi_dmi_req_bits_addr; // @[Periphery.scala 84:27]
+  wire [31:0] debug_1_io_dmi_dmi_req_bits_data; // @[Periphery.scala 84:27]
+  wire [1:0] debug_1_io_dmi_dmi_req_bits_op; // @[Periphery.scala 84:27]
+  wire  debug_1_io_dmi_dmi_resp_ready; // @[Periphery.scala 84:27]
+  wire  debug_1_io_dmi_dmi_resp_valid; // @[Periphery.scala 84:27]
+  wire [31:0] debug_1_io_dmi_dmi_resp_bits_data; // @[Periphery.scala 84:27]
+  wire [1:0] debug_1_io_dmi_dmi_resp_bits_resp; // @[Periphery.scala 84:27]
+  wire  debug_1_io_dmi_dmiClock; // @[Periphery.scala 84:27]
+  wire  debug_1_io_dmi_dmiReset; // @[Periphery.scala 84:27]
+  wire  tileHartIdNexusNode_auto_out; // @[HasTiles.scala 159:39]
+  wire  intsource_clock; // @[Crossing.scala 26:31]
+  wire  intsource_reset; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_in_1; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_auto_out_sync_1; // @[Crossing.scala 26:31]
+  wire  intsource_1_clock; // @[Crossing.scala 26:31]
+  wire  intsource_1_reset; // @[Crossing.scala 26:31]
+  wire  intsource_1_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_1_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsource_2_clock; // @[Crossing.scala 26:31]
+  wire  intsource_2_reset; // @[Crossing.scala 26:31]
+  wire  intsource_2_auto_in_0; // @[Crossing.scala 26:31]
+  wire  intsource_2_auto_out_sync_0; // @[Crossing.scala 26:31]
+  wire  intsink_1_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_1_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_2_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_2_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_3_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_3_auto_out_0; // @[Crossing.scala 94:29]
+  wire  aon_1_auto_intsource_out_sync_0; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_intsource_out_sync_1; // @[MockAONPeriphery.scala 21:23]
+  wire [2:0] aon_1_auto_isolation_in_a_mem_0_opcode; // @[MockAONPeriphery.scala 21:23]
+  wire [2:0] aon_1_auto_isolation_in_a_mem_0_param; // @[MockAONPeriphery.scala 21:23]
+  wire [1:0] aon_1_auto_isolation_in_a_mem_0_size; // @[MockAONPeriphery.scala 21:23]
+  wire [6:0] aon_1_auto_isolation_in_a_mem_0_source; // @[MockAONPeriphery.scala 21:23]
+  wire [28:0] aon_1_auto_isolation_in_a_mem_0_address; // @[MockAONPeriphery.scala 21:23]
+  wire [3:0] aon_1_auto_isolation_in_a_mem_0_mask; // @[MockAONPeriphery.scala 21:23]
+  wire [31:0] aon_1_auto_isolation_in_a_mem_0_data; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_a_mem_0_corrupt; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_a_ridx; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_a_widx; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_a_safe_ridx_valid; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_a_safe_widx_valid; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_a_safe_source_reset_n; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_a_safe_sink_reset_n; // @[MockAONPeriphery.scala 21:23]
+  wire [2:0] aon_1_auto_isolation_in_d_mem_0_opcode; // @[MockAONPeriphery.scala 21:23]
+  wire [1:0] aon_1_auto_isolation_in_d_mem_0_param; // @[MockAONPeriphery.scala 21:23]
+  wire [1:0] aon_1_auto_isolation_in_d_mem_0_size; // @[MockAONPeriphery.scala 21:23]
+  wire [6:0] aon_1_auto_isolation_in_d_mem_0_source; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_mem_0_sink; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_mem_0_denied; // @[MockAONPeriphery.scala 21:23]
+  wire [31:0] aon_1_auto_isolation_in_d_mem_0_data; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_mem_0_corrupt; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_ridx; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_widx; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_safe_ridx_valid; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_safe_widx_valid; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_safe_source_reset_n; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_auto_isolation_in_d_safe_sink_reset_n; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_io_pins_erst_n_i_ival; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_io_pins_lfextclk_i_ival; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_io_rsts_corerst; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_io_rtc; // @[MockAONPeriphery.scala 21:23]
+  wire  aon_1_io_ndreset; // @[MockAONPeriphery.scala 21:23]
+  wire  intsink_4_clock; // @[Crossing.scala 74:29]
+  wire  intsink_4_auto_in_sync_0; // @[Crossing.scala 74:29]
+  wire  intsink_4_auto_in_sync_1; // @[Crossing.scala 74:29]
+  wire  intsink_4_auto_out_0; // @[Crossing.scala 74:29]
+  wire  intsink_4_auto_out_1; // @[Crossing.scala 74:29]
+  wire  uartClockDomainWrapper_auto_uart_0_int_xing_out_sync_0; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_uart_0_control_xing_in_a_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_uart_0_control_xing_in_a_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_opcode; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_param; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_source; // @[UART.scala 242:44]
+  wire [28:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_address; // @[UART.scala 242:44]
+  wire [3:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_mask; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_corrupt; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_uart_0_control_xing_in_d_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_uart_0_control_xing_in_d_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_opcode; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_source; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_uart_0_io_out_txd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_uart_0_io_out_rxd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_clock_in_clock; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_auto_clock_in_reset; // @[UART.scala 242:44]
+  wire  intsink_5_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_5_auto_out_0; // @[Crossing.scala 94:29]
+  wire  uartClockDomainWrapper_1_auto_uart_1_int_xing_out_sync_0; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_opcode; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_param; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_source; // @[UART.scala 242:44]
+  wire [28:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_address; // @[UART.scala 242:44]
+  wire [3:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_mask; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_corrupt; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_opcode; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_source; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_uart_1_io_out_txd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_uart_1_io_out_rxd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_clock_in_clock; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_1_auto_clock_in_reset; // @[UART.scala 242:44]
+  wire  intsink_6_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_6_auto_out_0; // @[Crossing.scala 94:29]
+  wire  uartClockDomainWrapper_2_auto_uart_2_int_xing_out_sync_0; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_opcode; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_param; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_source; // @[UART.scala 242:44]
+  wire [28:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_address; // @[UART.scala 242:44]
+  wire [3:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_mask; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_corrupt; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_opcode; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_source; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_uart_2_io_out_txd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_uart_2_io_out_rxd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_clock_in_clock; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_2_auto_clock_in_reset; // @[UART.scala 242:44]
+  wire  intsink_7_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_7_auto_out_0; // @[Crossing.scala 94:29]
+  wire  uartClockDomainWrapper_3_auto_uart_3_int_xing_out_sync_0; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_opcode; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_param; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_source; // @[UART.scala 242:44]
+  wire [28:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_address; // @[UART.scala 242:44]
+  wire [3:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_mask; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_corrupt; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_opcode; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_source; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_uart_3_io_out_txd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_uart_3_io_out_rxd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_clock_in_clock; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_3_auto_clock_in_reset; // @[UART.scala 242:44]
+  wire  intsink_8_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_8_auto_out_0; // @[Crossing.scala 94:29]
+  wire  uartClockDomainWrapper_4_auto_uart_4_int_xing_out_sync_0; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_opcode; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_param; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_source; // @[UART.scala 242:44]
+  wire [28:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_address; // @[UART.scala 242:44]
+  wire [3:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_mask; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_corrupt; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_ready; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_valid; // @[UART.scala 242:44]
+  wire [2:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_opcode; // @[UART.scala 242:44]
+  wire [1:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_size; // @[UART.scala 242:44]
+  wire [6:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_source; // @[UART.scala 242:44]
+  wire [31:0] uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_data; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_uart_4_io_out_txd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_uart_4_io_out_rxd; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_clock_in_clock; // @[UART.scala 242:44]
+  wire  uartClockDomainWrapper_4_auto_clock_in_reset; // @[UART.scala 242:44]
+  wire  intsink_9_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_9_auto_out_0; // @[Crossing.scala 94:29]
+  wire  qspiClockDomainWrapper_auto_qspi_0_int_xing_out_sync_0; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_ready; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_valid; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_opcode; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_param; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_size; // @[SPI.scala 92:44]
+  wire [8:0] qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_source; // @[SPI.scala 92:44]
+  wire [29:0] qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_address; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_mask; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_corrupt; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_ready; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_valid; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_size; // @[SPI.scala 92:44]
+  wire [8:0] qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_source; // @[SPI.scala 92:44]
+  wire [7:0] qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_data; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_ready; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_valid; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_opcode; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_param; // @[SPI.scala 92:44]
+  wire [1:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_size; // @[SPI.scala 92:44]
+  wire [6:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_source; // @[SPI.scala 92:44]
+  wire [28:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_address; // @[SPI.scala 92:44]
+  wire [3:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_mask; // @[SPI.scala 92:44]
+  wire [31:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_data; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_corrupt; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_ready; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_valid; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_opcode; // @[SPI.scala 92:44]
+  wire [1:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_size; // @[SPI.scala 92:44]
+  wire [6:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_source; // @[SPI.scala 92:44]
+  wire [31:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_data; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_sck; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_i; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_o; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_oe; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_i; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_o; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_oe; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_i; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_o; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_oe; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_i; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_o; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_oe; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_qspi_0_io_out_cs_0; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_clock_in_clock; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_auto_clock_in_reset; // @[SPI.scala 92:44]
+  wire  intsink_10_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_10_auto_out_0; // @[Crossing.scala 94:29]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_int_xing_out_sync_0; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_ready; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_valid; // @[SPI.scala 39:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_opcode; // @[SPI.scala 39:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_param; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_size; // @[SPI.scala 39:44]
+  wire [10:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_source; // @[SPI.scala 39:44]
+  wire [30:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_address; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_mask; // @[SPI.scala 39:44]
+  wire [7:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_data; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_corrupt; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_ready; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_valid; // @[SPI.scala 39:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_opcode; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_size; // @[SPI.scala 39:44]
+  wire [10:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_source; // @[SPI.scala 39:44]
+  wire [7:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_data; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_ready; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_valid; // @[SPI.scala 39:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_opcode; // @[SPI.scala 39:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_param; // @[SPI.scala 39:44]
+  wire [1:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_size; // @[SPI.scala 39:44]
+  wire [6:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_source; // @[SPI.scala 39:44]
+  wire [28:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_address; // @[SPI.scala 39:44]
+  wire [3:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_mask; // @[SPI.scala 39:44]
+  wire [31:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_data; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_corrupt; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_ready; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_valid; // @[SPI.scala 39:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_opcode; // @[SPI.scala 39:44]
+  wire [1:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_size; // @[SPI.scala 39:44]
+  wire [6:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_source; // @[SPI.scala 39:44]
+  wire [31:0] qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_data; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_sck; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_i; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_o; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_oe; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_i; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_o; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_oe; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_i; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_o; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_oe; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_i; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_o; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_oe; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_cs_0; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_clock_in_clock; // @[SPI.scala 39:44]
+  wire  qspiClockDomainWrapper_1_auto_clock_in_reset; // @[SPI.scala 39:44]
+  wire  intsink_11_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_11_auto_out_0; // @[Crossing.scala 94:29]
+  wire  spiClockDomainWrapper_auto_spi_0_int_xing_out_sync_0; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_control_xing_in_a_ready; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_control_xing_in_a_valid; // @[SPI.scala 35:43]
+  wire [2:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_opcode; // @[SPI.scala 35:43]
+  wire [2:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_param; // @[SPI.scala 35:43]
+  wire [1:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_size; // @[SPI.scala 35:43]
+  wire [6:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_source; // @[SPI.scala 35:43]
+  wire [28:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_address; // @[SPI.scala 35:43]
+  wire [3:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_mask; // @[SPI.scala 35:43]
+  wire [31:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_data; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_corrupt; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_control_xing_in_d_ready; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_control_xing_in_d_valid; // @[SPI.scala 35:43]
+  wire [2:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_opcode; // @[SPI.scala 35:43]
+  wire [1:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_size; // @[SPI.scala 35:43]
+  wire [6:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_source; // @[SPI.scala 35:43]
+  wire [31:0] spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_data; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_sck; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_0_i; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_0_o; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_0_oe; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_1_i; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_1_o; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_1_oe; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_2_i; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_2_o; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_2_oe; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_3_i; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_3_o; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_dq_3_oe; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_cs_0; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_spi_0_io_out_cs_1; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_clock_in_clock; // @[SPI.scala 35:43]
+  wire  spiClockDomainWrapper_auto_clock_in_reset; // @[SPI.scala 35:43]
+  wire  intsink_12_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_12_auto_out_0; // @[Crossing.scala 94:29]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_0; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_1; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_2; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_3; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_4; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_5; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_6; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_7; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_8; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_9; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_10; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_11; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_12; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_13; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_14; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_15; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_16; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_17; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_18; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_19; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_20; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_21; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_22; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_23; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_24; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_25; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_26; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_27; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_28; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_29; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_30; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_31; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_ready; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_valid; // @[GPIO.scala 281:44]
+  wire [2:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_opcode; // @[GPIO.scala 281:44]
+  wire [2:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_param; // @[GPIO.scala 281:44]
+  wire [1:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_size; // @[GPIO.scala 281:44]
+  wire [6:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_source; // @[GPIO.scala 281:44]
+  wire [28:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_address; // @[GPIO.scala 281:44]
+  wire [3:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_mask; // @[GPIO.scala 281:44]
+  wire [31:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_data; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_corrupt; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_ready; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_valid; // @[GPIO.scala 281:44]
+  wire [2:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_opcode; // @[GPIO.scala 281:44]
+  wire [1:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_size; // @[GPIO.scala 281:44]
+  wire [6:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_source; // @[GPIO.scala 281:44]
+  wire [31:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_data; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_0_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_1_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_12_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_12_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_13_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_13_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_14_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_14_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_15_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_15_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_16_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_17_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_18_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_19_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_20_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_21_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_22_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_23_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_24_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_12_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_13_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_14_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_15_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_16_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_17_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_18_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_19_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_20_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_21_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_22_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_23_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_ie; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_i_ival; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_o_oval; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_o_oe; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_clock_in_clock; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_clock_in_reset; // @[GPIO.scala 281:44]
+  wire  intsink_13_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_1; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_2; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_3; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_4; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_5; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_6; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_7; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_8; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_9; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_10; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_11; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_12; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_13; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_14; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_15; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_16; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_17; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_18; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_19; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_20; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_21; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_22; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_23; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_24; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_25; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_26; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_27; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_28; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_29; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_30; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_in_sync_31; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_1; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_2; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_3; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_4; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_5; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_6; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_7; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_8; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_9; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_10; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_11; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_12; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_13; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_14; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_15; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_16; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_17; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_18; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_19; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_20; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_21; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_22; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_23; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_24; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_25; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_26; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_27; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_28; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_29; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_30; // @[Crossing.scala 94:29]
+  wire  intsink_13_auto_out_31; // @[Crossing.scala 94:29]
+  wire  pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_0; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_1; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_2; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_3; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_ready; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_valid; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_opcode; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_param; // @[PWM.scala 134:43]
+  wire [1:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_size; // @[PWM.scala 134:43]
+  wire [6:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_source; // @[PWM.scala 134:43]
+  wire [28:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_address; // @[PWM.scala 134:43]
+  wire [3:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_mask; // @[PWM.scala 134:43]
+  wire [31:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_data; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_corrupt; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_ready; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_valid; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_opcode; // @[PWM.scala 134:43]
+  wire [1:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_size; // @[PWM.scala 134:43]
+  wire [6:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_source; // @[PWM.scala 134:43]
+  wire [31:0] pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_data; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_0; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_1; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_2; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_3; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_clock_in_clock; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_auto_clock_in_reset; // @[PWM.scala 134:43]
+  wire  intsink_14_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_14_auto_in_sync_1; // @[Crossing.scala 94:29]
+  wire  intsink_14_auto_in_sync_2; // @[Crossing.scala 94:29]
+  wire  intsink_14_auto_in_sync_3; // @[Crossing.scala 94:29]
+  wire  intsink_14_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_14_auto_out_1; // @[Crossing.scala 94:29]
+  wire  intsink_14_auto_out_2; // @[Crossing.scala 94:29]
+  wire  intsink_14_auto_out_3; // @[Crossing.scala 94:29]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_0; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_1; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_2; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_3; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_ready; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_valid; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_opcode; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_param; // @[PWM.scala 134:43]
+  wire [1:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_size; // @[PWM.scala 134:43]
+  wire [6:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_source; // @[PWM.scala 134:43]
+  wire [28:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_address; // @[PWM.scala 134:43]
+  wire [3:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_mask; // @[PWM.scala 134:43]
+  wire [31:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_data; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_corrupt; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_ready; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_valid; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_opcode; // @[PWM.scala 134:43]
+  wire [1:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_size; // @[PWM.scala 134:43]
+  wire [6:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_source; // @[PWM.scala 134:43]
+  wire [31:0] pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_data; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_0; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_1; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_2; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_3; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_clock_in_clock; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_1_auto_clock_in_reset; // @[PWM.scala 134:43]
+  wire  intsink_15_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_15_auto_in_sync_1; // @[Crossing.scala 94:29]
+  wire  intsink_15_auto_in_sync_2; // @[Crossing.scala 94:29]
+  wire  intsink_15_auto_in_sync_3; // @[Crossing.scala 94:29]
+  wire  intsink_15_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_15_auto_out_1; // @[Crossing.scala 94:29]
+  wire  intsink_15_auto_out_2; // @[Crossing.scala 94:29]
+  wire  intsink_15_auto_out_3; // @[Crossing.scala 94:29]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_0; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_1; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_2; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_3; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_ready; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_valid; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_opcode; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_param; // @[PWM.scala 134:43]
+  wire [1:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_size; // @[PWM.scala 134:43]
+  wire [6:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_source; // @[PWM.scala 134:43]
+  wire [28:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_address; // @[PWM.scala 134:43]
+  wire [3:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_mask; // @[PWM.scala 134:43]
+  wire [31:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_data; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_corrupt; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_ready; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_valid; // @[PWM.scala 134:43]
+  wire [2:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_opcode; // @[PWM.scala 134:43]
+  wire [1:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_size; // @[PWM.scala 134:43]
+  wire [6:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_source; // @[PWM.scala 134:43]
+  wire [31:0] pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_data; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_0; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_1; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_2; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_3; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_clock_in_clock; // @[PWM.scala 134:43]
+  wire  pwmClockDomainWrapper_2_auto_clock_in_reset; // @[PWM.scala 134:43]
+  wire  intsink_16_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_16_auto_in_sync_1; // @[Crossing.scala 94:29]
+  wire  intsink_16_auto_in_sync_2; // @[Crossing.scala 94:29]
+  wire  intsink_16_auto_in_sync_3; // @[Crossing.scala 94:29]
+  wire  intsink_16_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_16_auto_out_1; // @[Crossing.scala 94:29]
+  wire  intsink_16_auto_out_2; // @[Crossing.scala 94:29]
+  wire  intsink_16_auto_out_3; // @[Crossing.scala 94:29]
+  wire  i2cClockDomainWrapper_auto_i2c_0_int_xing_out_sync_0; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_ready; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_valid; // @[I2C.scala 596:43]
+  wire [2:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_opcode; // @[I2C.scala 596:43]
+  wire [2:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_param; // @[I2C.scala 596:43]
+  wire [1:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_size; // @[I2C.scala 596:43]
+  wire [6:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_source; // @[I2C.scala 596:43]
+  wire [28:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_address; // @[I2C.scala 596:43]
+  wire [3:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_mask; // @[I2C.scala 596:43]
+  wire [31:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_data; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_corrupt; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_ready; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_valid; // @[I2C.scala 596:43]
+  wire [2:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_opcode; // @[I2C.scala 596:43]
+  wire [1:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_size; // @[I2C.scala 596:43]
+  wire [6:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_source; // @[I2C.scala 596:43]
+  wire [31:0] i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_data; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_io_out_scl_in; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_io_out_scl_oe; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_io_out_sda_in; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_i2c_0_io_out_sda_oe; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_clock_in_clock; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_auto_clock_in_reset; // @[I2C.scala 596:43]
+  wire  intsink_17_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_17_auto_out_0; // @[Crossing.scala 94:29]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_int_xing_out_sync_0; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_ready; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_valid; // @[I2C.scala 596:43]
+  wire [2:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_opcode; // @[I2C.scala 596:43]
+  wire [2:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_param; // @[I2C.scala 596:43]
+  wire [1:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_size; // @[I2C.scala 596:43]
+  wire [6:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_source; // @[I2C.scala 596:43]
+  wire [28:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_address; // @[I2C.scala 596:43]
+  wire [3:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_mask; // @[I2C.scala 596:43]
+  wire [31:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_data; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_corrupt; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_ready; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_valid; // @[I2C.scala 596:43]
+  wire [2:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_opcode; // @[I2C.scala 596:43]
+  wire [1:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_size; // @[I2C.scala 596:43]
+  wire [6:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_source; // @[I2C.scala 596:43]
+  wire [31:0] i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_data; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_io_out_scl_in; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_io_out_scl_oe; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_io_out_sda_in; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_i2c_1_io_out_sda_oe; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_clock_in_clock; // @[I2C.scala 596:43]
+  wire  i2cClockDomainWrapper_1_auto_clock_in_reset; // @[I2C.scala 596:43]
+  wire  intsink_18_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_18_auto_out_0; // @[Crossing.scala 94:29]
+  wire  bootROMDomainWrapper_auto_bootrom_in_a_ready; // @[BootROM.scala 70:42]
+  wire  bootROMDomainWrapper_auto_bootrom_in_a_valid; // @[BootROM.scala 70:42]
+  wire [2:0] bootROMDomainWrapper_auto_bootrom_in_a_bits_opcode; // @[BootROM.scala 70:42]
+  wire [2:0] bootROMDomainWrapper_auto_bootrom_in_a_bits_param; // @[BootROM.scala 70:42]
+  wire [1:0] bootROMDomainWrapper_auto_bootrom_in_a_bits_size; // @[BootROM.scala 70:42]
+  wire [6:0] bootROMDomainWrapper_auto_bootrom_in_a_bits_source; // @[BootROM.scala 70:42]
+  wire [16:0] bootROMDomainWrapper_auto_bootrom_in_a_bits_address; // @[BootROM.scala 70:42]
+  wire [3:0] bootROMDomainWrapper_auto_bootrom_in_a_bits_mask; // @[BootROM.scala 70:42]
+  wire  bootROMDomainWrapper_auto_bootrom_in_a_bits_corrupt; // @[BootROM.scala 70:42]
+  wire  bootROMDomainWrapper_auto_bootrom_in_d_ready; // @[BootROM.scala 70:42]
+  wire  bootROMDomainWrapper_auto_bootrom_in_d_valid; // @[BootROM.scala 70:42]
+  wire [1:0] bootROMDomainWrapper_auto_bootrom_in_d_bits_size; // @[BootROM.scala 70:42]
+  wire [6:0] bootROMDomainWrapper_auto_bootrom_in_d_bits_source; // @[BootROM.scala 70:42]
+  wire [31:0] bootROMDomainWrapper_auto_bootrom_in_d_bits_data; // @[BootROM.scala 70:42]
+  wire  bootROMDomainWrapper_auto_clock_in_clock; // @[BootROM.scala 70:42]
+  wire  bootROMDomainWrapper_auto_clock_in_reset; // @[BootROM.scala 70:42]
+  wire  dtm_io_jtag_clock; // @[Periphery.scala 161:21]
+  wire  dtm_io_jtag_reset; // @[Periphery.scala 161:21]
+  wire  dtm_io_dmi_req_ready; // @[Periphery.scala 161:21]
+  wire  dtm_io_dmi_req_valid; // @[Periphery.scala 161:21]
+  wire [6:0] dtm_io_dmi_req_bits_addr; // @[Periphery.scala 161:21]
+  wire [31:0] dtm_io_dmi_req_bits_data; // @[Periphery.scala 161:21]
+  wire [1:0] dtm_io_dmi_req_bits_op; // @[Periphery.scala 161:21]
+  wire  dtm_io_dmi_resp_ready; // @[Periphery.scala 161:21]
+  wire  dtm_io_dmi_resp_valid; // @[Periphery.scala 161:21]
+  wire [31:0] dtm_io_dmi_resp_bits_data; // @[Periphery.scala 161:21]
+  wire [1:0] dtm_io_dmi_resp_bits_resp; // @[Periphery.scala 161:21]
+  wire  dtm_io_jtag_TMS; // @[Periphery.scala 161:21]
+  wire  dtm_io_jtag_TDI; // @[Periphery.scala 161:21]
+  wire  dtm_io_jtag_TDO_data; // @[Periphery.scala 161:21]
+  wire  dtm_io_jtag_TDO_driven; // @[Periphery.scala 161:21]
+  wire  rtc_sync_rtc_clock; // @[ShiftReg.scala 45:23]
+  wire  rtc_sync_rtc_io_d; // @[ShiftReg.scala 45:23]
+  wire  rtc_sync_rtc_io_q; // @[ShiftReg.scala 45:23]
+  reg  rtc_last; // @[MockAONPeriphery.scala 46:21]
+  wire  rtc_sync = rtc_sync_rtc_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  rtc_tick_x2 = rtc_sync & ~rtc_last; // @[MockAONPeriphery.scala 47:57]
+  reg  rtc_tick; // @[MockAONPeriphery.scala 47:21]
+  InterruptBusWrapper ibus ( // @[BaseSubsystem.scala 50:24]
+    .auto_int_bus_int_in_14_0(ibus_auto_int_bus_int_in_14_0),
+    .auto_int_bus_int_in_13_0(ibus_auto_int_bus_int_in_13_0),
+    .auto_int_bus_int_in_12_0(ibus_auto_int_bus_int_in_12_0),
+    .auto_int_bus_int_in_12_1(ibus_auto_int_bus_int_in_12_1),
+    .auto_int_bus_int_in_12_2(ibus_auto_int_bus_int_in_12_2),
+    .auto_int_bus_int_in_12_3(ibus_auto_int_bus_int_in_12_3),
+    .auto_int_bus_int_in_11_0(ibus_auto_int_bus_int_in_11_0),
+    .auto_int_bus_int_in_11_1(ibus_auto_int_bus_int_in_11_1),
+    .auto_int_bus_int_in_11_2(ibus_auto_int_bus_int_in_11_2),
+    .auto_int_bus_int_in_11_3(ibus_auto_int_bus_int_in_11_3),
+    .auto_int_bus_int_in_10_0(ibus_auto_int_bus_int_in_10_0),
+    .auto_int_bus_int_in_10_1(ibus_auto_int_bus_int_in_10_1),
+    .auto_int_bus_int_in_10_2(ibus_auto_int_bus_int_in_10_2),
+    .auto_int_bus_int_in_10_3(ibus_auto_int_bus_int_in_10_3),
+    .auto_int_bus_int_in_9_0(ibus_auto_int_bus_int_in_9_0),
+    .auto_int_bus_int_in_9_1(ibus_auto_int_bus_int_in_9_1),
+    .auto_int_bus_int_in_9_2(ibus_auto_int_bus_int_in_9_2),
+    .auto_int_bus_int_in_9_3(ibus_auto_int_bus_int_in_9_3),
+    .auto_int_bus_int_in_9_4(ibus_auto_int_bus_int_in_9_4),
+    .auto_int_bus_int_in_9_5(ibus_auto_int_bus_int_in_9_5),
+    .auto_int_bus_int_in_9_6(ibus_auto_int_bus_int_in_9_6),
+    .auto_int_bus_int_in_9_7(ibus_auto_int_bus_int_in_9_7),
+    .auto_int_bus_int_in_9_8(ibus_auto_int_bus_int_in_9_8),
+    .auto_int_bus_int_in_9_9(ibus_auto_int_bus_int_in_9_9),
+    .auto_int_bus_int_in_9_10(ibus_auto_int_bus_int_in_9_10),
+    .auto_int_bus_int_in_9_11(ibus_auto_int_bus_int_in_9_11),
+    .auto_int_bus_int_in_9_12(ibus_auto_int_bus_int_in_9_12),
+    .auto_int_bus_int_in_9_13(ibus_auto_int_bus_int_in_9_13),
+    .auto_int_bus_int_in_9_14(ibus_auto_int_bus_int_in_9_14),
+    .auto_int_bus_int_in_9_15(ibus_auto_int_bus_int_in_9_15),
+    .auto_int_bus_int_in_9_16(ibus_auto_int_bus_int_in_9_16),
+    .auto_int_bus_int_in_9_17(ibus_auto_int_bus_int_in_9_17),
+    .auto_int_bus_int_in_9_18(ibus_auto_int_bus_int_in_9_18),
+    .auto_int_bus_int_in_9_19(ibus_auto_int_bus_int_in_9_19),
+    .auto_int_bus_int_in_9_20(ibus_auto_int_bus_int_in_9_20),
+    .auto_int_bus_int_in_9_21(ibus_auto_int_bus_int_in_9_21),
+    .auto_int_bus_int_in_9_22(ibus_auto_int_bus_int_in_9_22),
+    .auto_int_bus_int_in_9_23(ibus_auto_int_bus_int_in_9_23),
+    .auto_int_bus_int_in_9_24(ibus_auto_int_bus_int_in_9_24),
+    .auto_int_bus_int_in_9_25(ibus_auto_int_bus_int_in_9_25),
+    .auto_int_bus_int_in_9_26(ibus_auto_int_bus_int_in_9_26),
+    .auto_int_bus_int_in_9_27(ibus_auto_int_bus_int_in_9_27),
+    .auto_int_bus_int_in_9_28(ibus_auto_int_bus_int_in_9_28),
+    .auto_int_bus_int_in_9_29(ibus_auto_int_bus_int_in_9_29),
+    .auto_int_bus_int_in_9_30(ibus_auto_int_bus_int_in_9_30),
+    .auto_int_bus_int_in_9_31(ibus_auto_int_bus_int_in_9_31),
+    .auto_int_bus_int_in_8_0(ibus_auto_int_bus_int_in_8_0),
+    .auto_int_bus_int_in_7_0(ibus_auto_int_bus_int_in_7_0),
+    .auto_int_bus_int_in_6_0(ibus_auto_int_bus_int_in_6_0),
+    .auto_int_bus_int_in_5_0(ibus_auto_int_bus_int_in_5_0),
+    .auto_int_bus_int_in_4_0(ibus_auto_int_bus_int_in_4_0),
+    .auto_int_bus_int_in_3_0(ibus_auto_int_bus_int_in_3_0),
+    .auto_int_bus_int_in_2_0(ibus_auto_int_bus_int_in_2_0),
+    .auto_int_bus_int_in_1_0(ibus_auto_int_bus_int_in_1_0),
+    .auto_int_bus_int_in_0_0(ibus_auto_int_bus_int_in_0_0),
+    .auto_int_bus_int_in_0_1(ibus_auto_int_bus_int_in_0_1),
+    .auto_int_bus_int_out_0(ibus_auto_int_bus_int_out_0),
+    .auto_int_bus_int_out_1(ibus_auto_int_bus_int_out_1),
+    .auto_int_bus_int_out_2(ibus_auto_int_bus_int_out_2),
+    .auto_int_bus_int_out_3(ibus_auto_int_bus_int_out_3),
+    .auto_int_bus_int_out_4(ibus_auto_int_bus_int_out_4),
+    .auto_int_bus_int_out_5(ibus_auto_int_bus_int_out_5),
+    .auto_int_bus_int_out_6(ibus_auto_int_bus_int_out_6),
+    .auto_int_bus_int_out_7(ibus_auto_int_bus_int_out_7),
+    .auto_int_bus_int_out_8(ibus_auto_int_bus_int_out_8),
+    .auto_int_bus_int_out_9(ibus_auto_int_bus_int_out_9),
+    .auto_int_bus_int_out_10(ibus_auto_int_bus_int_out_10),
+    .auto_int_bus_int_out_11(ibus_auto_int_bus_int_out_11),
+    .auto_int_bus_int_out_12(ibus_auto_int_bus_int_out_12),
+    .auto_int_bus_int_out_13(ibus_auto_int_bus_int_out_13),
+    .auto_int_bus_int_out_14(ibus_auto_int_bus_int_out_14),
+    .auto_int_bus_int_out_15(ibus_auto_int_bus_int_out_15),
+    .auto_int_bus_int_out_16(ibus_auto_int_bus_int_out_16),
+    .auto_int_bus_int_out_17(ibus_auto_int_bus_int_out_17),
+    .auto_int_bus_int_out_18(ibus_auto_int_bus_int_out_18),
+    .auto_int_bus_int_out_19(ibus_auto_int_bus_int_out_19),
+    .auto_int_bus_int_out_20(ibus_auto_int_bus_int_out_20),
+    .auto_int_bus_int_out_21(ibus_auto_int_bus_int_out_21),
+    .auto_int_bus_int_out_22(ibus_auto_int_bus_int_out_22),
+    .auto_int_bus_int_out_23(ibus_auto_int_bus_int_out_23),
+    .auto_int_bus_int_out_24(ibus_auto_int_bus_int_out_24),
+    .auto_int_bus_int_out_25(ibus_auto_int_bus_int_out_25),
+    .auto_int_bus_int_out_26(ibus_auto_int_bus_int_out_26),
+    .auto_int_bus_int_out_27(ibus_auto_int_bus_int_out_27),
+    .auto_int_bus_int_out_28(ibus_auto_int_bus_int_out_28),
+    .auto_int_bus_int_out_29(ibus_auto_int_bus_int_out_29),
+    .auto_int_bus_int_out_30(ibus_auto_int_bus_int_out_30),
+    .auto_int_bus_int_out_31(ibus_auto_int_bus_int_out_31),
+    .auto_int_bus_int_out_32(ibus_auto_int_bus_int_out_32),
+    .auto_int_bus_int_out_33(ibus_auto_int_bus_int_out_33),
+    .auto_int_bus_int_out_34(ibus_auto_int_bus_int_out_34),
+    .auto_int_bus_int_out_35(ibus_auto_int_bus_int_out_35),
+    .auto_int_bus_int_out_36(ibus_auto_int_bus_int_out_36),
+    .auto_int_bus_int_out_37(ibus_auto_int_bus_int_out_37),
+    .auto_int_bus_int_out_38(ibus_auto_int_bus_int_out_38),
+    .auto_int_bus_int_out_39(ibus_auto_int_bus_int_out_39),
+    .auto_int_bus_int_out_40(ibus_auto_int_bus_int_out_40),
+    .auto_int_bus_int_out_41(ibus_auto_int_bus_int_out_41),
+    .auto_int_bus_int_out_42(ibus_auto_int_bus_int_out_42),
+    .auto_int_bus_int_out_43(ibus_auto_int_bus_int_out_43),
+    .auto_int_bus_int_out_44(ibus_auto_int_bus_int_out_44),
+    .auto_int_bus_int_out_45(ibus_auto_int_bus_int_out_45),
+    .auto_int_bus_int_out_46(ibus_auto_int_bus_int_out_46),
+    .auto_int_bus_int_out_47(ibus_auto_int_bus_int_out_47),
+    .auto_int_bus_int_out_48(ibus_auto_int_bus_int_out_48),
+    .auto_int_bus_int_out_49(ibus_auto_int_bus_int_out_49),
+    .auto_int_bus_int_out_50(ibus_auto_int_bus_int_out_50),
+    .auto_int_bus_int_out_51(ibus_auto_int_bus_int_out_51),
+    .auto_int_bus_int_out_52(ibus_auto_int_bus_int_out_52),
+    .auto_int_bus_int_out_53(ibus_auto_int_bus_int_out_53),
+    .auto_int_bus_int_out_54(ibus_auto_int_bus_int_out_54),
+    .auto_int_bus_int_out_55(ibus_auto_int_bus_int_out_55)
+  );
+  SimpleClockGroupSource dummyClockGroupSourceNode ( // @[ClockGroup.scala 79:81]
+    .clock(dummyClockGroupSourceNode_clock),
+    .reset(dummyClockGroupSourceNode_reset),
+    .auto_out_member_subsystem_sbus_5_clock(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_5_clock),
+    .auto_out_member_subsystem_sbus_5_reset(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_5_reset),
+    .auto_out_member_subsystem_sbus_4_clock(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_4_clock),
+    .auto_out_member_subsystem_sbus_4_reset(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_4_reset),
+    .auto_out_member_subsystem_sbus_3_clock(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_3_clock),
+    .auto_out_member_subsystem_sbus_3_reset(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_3_reset),
+    .auto_out_member_subsystem_sbus_2_clock(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_2_clock),
+    .auto_out_member_subsystem_sbus_2_reset(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_2_reset),
+    .auto_out_member_subsystem_sbus_1_clock(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_1_clock),
+    .auto_out_member_subsystem_sbus_1_reset(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_1_reset),
+    .auto_out_member_subsystem_sbus_0_clock(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_0_clock),
+    .auto_out_member_subsystem_sbus_0_reset(dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_0_reset)
+  );
+  SystemBus subsystem_sbus ( // @[SystemBus.scala 24:26]
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_ready(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_ready),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_valid(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_valid),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_opcode(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_opcode),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_param(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_param),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_size(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_size),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_source(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_source),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_address(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_address),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_mask(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_mask),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_data(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_data),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_corrupt(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_corrupt),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_b_ready(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_ready),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_b_valid(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_valid),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_param(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_param),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_address(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_address),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_ready(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_ready),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_valid(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_valid),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_opcode(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_opcode),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_param(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_param),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_size(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_size),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_source(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_source),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_address(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_address),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_data(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_data),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_corrupt(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_corrupt),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_ready(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_ready),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_valid(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_valid),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_opcode(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_opcode),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_param(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_param),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_size(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_size),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_source(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_source),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_sink(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_sink),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_denied(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_denied),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_data(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_data),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_corrupt(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_corrupt),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_e_valid(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_e_valid),
+    .auto_coupler_from_tile_tl_master_clock_xing_in_e_bits_sink(
+      subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_e_bits_sink),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_ready(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_ready),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_valid(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_valid),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_opcode(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_param(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_param),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_size(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_size),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_source(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_source),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_address(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_address),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_mask(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_mask),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_data(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_data),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_corrupt(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_corrupt),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_b_ready(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_ready),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_b_valid(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_valid),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_param(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_param),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_address(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_address),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_ready(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_ready),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_valid(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_valid),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_opcode(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_param(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_param),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_size(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_size),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_source(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_source),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_address(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_address),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_data(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_data),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_corrupt(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_corrupt),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_d_ready(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_ready),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_d_valid(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_valid),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_opcode(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_param(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_param),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_size(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_size),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_source(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_source),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_sink(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_sink),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_data(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_data),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_e_valid(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_e_valid),
+    .auto_coupler_to_bus_named_subsystem_l2_widget_out_e_bits_sink(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_e_bits_sink),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_ready(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_ready),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_valid(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_valid),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_opcode(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_param(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_param),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_size(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_size),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_source(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_source),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_address(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_address),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_mask(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_mask),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_data(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_data),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_corrupt(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_corrupt),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_ready(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_ready),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_valid(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_valid),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_opcode(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_param(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_param),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_size(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_size),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_source(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_source),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_sink(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_sink),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_denied(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_denied),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_data(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_data),
+    .auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_corrupt(
+      subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_corrupt),
+    .auto_fixedClockNode_out_1_clock(subsystem_sbus_auto_fixedClockNode_out_1_clock),
+    .auto_fixedClockNode_out_1_reset(subsystem_sbus_auto_fixedClockNode_out_1_reset),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_clock),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_reset),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_clock),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_reset),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_clock),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_reset),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_clock),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_reset),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_clock),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_reset),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_clock),
+    .auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_reset),
+    .auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_clock),
+    .auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_reset),
+    .auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_clock),
+    .auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_reset),
+    .auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_clock),
+    .auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_reset),
+    .auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_clock),
+    .auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_reset),
+    .auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_clock(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_clock),
+    .auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_reset(
+      subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_reset)
+  );
+  PeripheryBus subsystem_pbus ( // @[PeripheryBus.scala 31:26]
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_ready),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_valid),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_ready),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_valid),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_data),
+    .auto_fixedClockNode_out_13_clock(subsystem_pbus_auto_fixedClockNode_out_13_clock),
+    .auto_fixedClockNode_out_13_reset(subsystem_pbus_auto_fixedClockNode_out_13_reset),
+    .auto_fixedClockNode_out_12_clock(subsystem_pbus_auto_fixedClockNode_out_12_clock),
+    .auto_fixedClockNode_out_12_reset(subsystem_pbus_auto_fixedClockNode_out_12_reset),
+    .auto_fixedClockNode_out_11_clock(subsystem_pbus_auto_fixedClockNode_out_11_clock),
+    .auto_fixedClockNode_out_11_reset(subsystem_pbus_auto_fixedClockNode_out_11_reset),
+    .auto_fixedClockNode_out_10_clock(subsystem_pbus_auto_fixedClockNode_out_10_clock),
+    .auto_fixedClockNode_out_10_reset(subsystem_pbus_auto_fixedClockNode_out_10_reset),
+    .auto_fixedClockNode_out_9_clock(subsystem_pbus_auto_fixedClockNode_out_9_clock),
+    .auto_fixedClockNode_out_9_reset(subsystem_pbus_auto_fixedClockNode_out_9_reset),
+    .auto_fixedClockNode_out_8_clock(subsystem_pbus_auto_fixedClockNode_out_8_clock),
+    .auto_fixedClockNode_out_8_reset(subsystem_pbus_auto_fixedClockNode_out_8_reset),
+    .auto_fixedClockNode_out_7_clock(subsystem_pbus_auto_fixedClockNode_out_7_clock),
+    .auto_fixedClockNode_out_7_reset(subsystem_pbus_auto_fixedClockNode_out_7_reset),
+    .auto_fixedClockNode_out_6_clock(subsystem_pbus_auto_fixedClockNode_out_6_clock),
+    .auto_fixedClockNode_out_6_reset(subsystem_pbus_auto_fixedClockNode_out_6_reset),
+    .auto_fixedClockNode_out_5_clock(subsystem_pbus_auto_fixedClockNode_out_5_clock),
+    .auto_fixedClockNode_out_5_reset(subsystem_pbus_auto_fixedClockNode_out_5_reset),
+    .auto_fixedClockNode_out_4_clock(subsystem_pbus_auto_fixedClockNode_out_4_clock),
+    .auto_fixedClockNode_out_4_reset(subsystem_pbus_auto_fixedClockNode_out_4_reset),
+    .auto_fixedClockNode_out_3_clock(subsystem_pbus_auto_fixedClockNode_out_3_clock),
+    .auto_fixedClockNode_out_3_reset(subsystem_pbus_auto_fixedClockNode_out_3_reset),
+    .auto_fixedClockNode_out_2_clock(subsystem_pbus_auto_fixedClockNode_out_2_clock),
+    .auto_fixedClockNode_out_2_reset(subsystem_pbus_auto_fixedClockNode_out_2_reset),
+    .auto_fixedClockNode_out_1_clock(subsystem_pbus_auto_fixedClockNode_out_1_clock),
+    .auto_fixedClockNode_out_1_reset(subsystem_pbus_auto_fixedClockNode_out_1_reset),
+    .auto_fixedClockNode_out_0_clock(subsystem_pbus_auto_fixedClockNode_out_0_clock),
+    .auto_fixedClockNode_out_0_reset(subsystem_pbus_auto_fixedClockNode_out_0_reset),
+    .auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_clock(
+      subsystem_pbus_auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_clock),
+    .auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_reset(
+      subsystem_pbus_auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_reset),
+    .auto_bus_xing_in_a_ready(subsystem_pbus_auto_bus_xing_in_a_ready),
+    .auto_bus_xing_in_a_valid(subsystem_pbus_auto_bus_xing_in_a_valid),
+    .auto_bus_xing_in_a_bits_opcode(subsystem_pbus_auto_bus_xing_in_a_bits_opcode),
+    .auto_bus_xing_in_a_bits_param(subsystem_pbus_auto_bus_xing_in_a_bits_param),
+    .auto_bus_xing_in_a_bits_size(subsystem_pbus_auto_bus_xing_in_a_bits_size),
+    .auto_bus_xing_in_a_bits_source(subsystem_pbus_auto_bus_xing_in_a_bits_source),
+    .auto_bus_xing_in_a_bits_address(subsystem_pbus_auto_bus_xing_in_a_bits_address),
+    .auto_bus_xing_in_a_bits_mask(subsystem_pbus_auto_bus_xing_in_a_bits_mask),
+    .auto_bus_xing_in_a_bits_data(subsystem_pbus_auto_bus_xing_in_a_bits_data),
+    .auto_bus_xing_in_a_bits_corrupt(subsystem_pbus_auto_bus_xing_in_a_bits_corrupt),
+    .auto_bus_xing_in_d_ready(subsystem_pbus_auto_bus_xing_in_d_ready),
+    .auto_bus_xing_in_d_valid(subsystem_pbus_auto_bus_xing_in_d_valid),
+    .auto_bus_xing_in_d_bits_opcode(subsystem_pbus_auto_bus_xing_in_d_bits_opcode),
+    .auto_bus_xing_in_d_bits_param(subsystem_pbus_auto_bus_xing_in_d_bits_param),
+    .auto_bus_xing_in_d_bits_size(subsystem_pbus_auto_bus_xing_in_d_bits_size),
+    .auto_bus_xing_in_d_bits_source(subsystem_pbus_auto_bus_xing_in_d_bits_source),
+    .auto_bus_xing_in_d_bits_sink(subsystem_pbus_auto_bus_xing_in_d_bits_sink),
+    .auto_bus_xing_in_d_bits_denied(subsystem_pbus_auto_bus_xing_in_d_bits_denied),
+    .auto_bus_xing_in_d_bits_data(subsystem_pbus_auto_bus_xing_in_d_bits_data),
+    .auto_bus_xing_in_d_bits_corrupt(subsystem_pbus_auto_bus_xing_in_d_bits_corrupt)
+  );
+  FrontBus subsystem_fbus ( // @[FrontBus.scala 22:26]
+    .auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_clock(
+      subsystem_fbus_auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_clock),
+    .auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_reset(
+      subsystem_fbus_auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_reset)
+  );
+  PeripheryBus_1 subsystem_cbus ( // @[PeripheryBus.scala 31:26]
+    .auto_coupler_to_bootrom_fragmenter_out_a_ready(subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_ready),
+    .auto_coupler_to_bootrom_fragmenter_out_a_valid(subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_valid),
+    .auto_coupler_to_bootrom_fragmenter_out_a_bits_opcode(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_opcode),
+    .auto_coupler_to_bootrom_fragmenter_out_a_bits_param(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_param),
+    .auto_coupler_to_bootrom_fragmenter_out_a_bits_size(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_size),
+    .auto_coupler_to_bootrom_fragmenter_out_a_bits_source(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_source),
+    .auto_coupler_to_bootrom_fragmenter_out_a_bits_address(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_address),
+    .auto_coupler_to_bootrom_fragmenter_out_a_bits_mask(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_mask),
+    .auto_coupler_to_bootrom_fragmenter_out_a_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_corrupt),
+    .auto_coupler_to_bootrom_fragmenter_out_d_ready(subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_ready),
+    .auto_coupler_to_bootrom_fragmenter_out_d_valid(subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_valid),
+    .auto_coupler_to_bootrom_fragmenter_out_d_bits_size(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_size),
+    .auto_coupler_to_bootrom_fragmenter_out_d_bits_source(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_source),
+    .auto_coupler_to_bootrom_fragmenter_out_d_bits_data(
+      subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_data),
+    .auto_coupler_to_aon_asource_out_a_mem_0_opcode(subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_opcode),
+    .auto_coupler_to_aon_asource_out_a_mem_0_param(subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_param),
+    .auto_coupler_to_aon_asource_out_a_mem_0_size(subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_size),
+    .auto_coupler_to_aon_asource_out_a_mem_0_source(subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_source),
+    .auto_coupler_to_aon_asource_out_a_mem_0_address(subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_address),
+    .auto_coupler_to_aon_asource_out_a_mem_0_mask(subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_mask),
+    .auto_coupler_to_aon_asource_out_a_mem_0_data(subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_data),
+    .auto_coupler_to_aon_asource_out_a_mem_0_corrupt(subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_corrupt),
+    .auto_coupler_to_aon_asource_out_a_ridx(subsystem_cbus_auto_coupler_to_aon_asource_out_a_ridx),
+    .auto_coupler_to_aon_asource_out_a_widx(subsystem_cbus_auto_coupler_to_aon_asource_out_a_widx),
+    .auto_coupler_to_aon_asource_out_a_safe_ridx_valid(subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_ridx_valid)
+      ,
+    .auto_coupler_to_aon_asource_out_a_safe_widx_valid(subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_widx_valid)
+      ,
+    .auto_coupler_to_aon_asource_out_a_safe_source_reset_n(
+      subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_source_reset_n),
+    .auto_coupler_to_aon_asource_out_a_safe_sink_reset_n(
+      subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_sink_reset_n),
+    .auto_coupler_to_aon_asource_out_d_mem_0_opcode(subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_opcode),
+    .auto_coupler_to_aon_asource_out_d_mem_0_param(subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_param),
+    .auto_coupler_to_aon_asource_out_d_mem_0_size(subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_size),
+    .auto_coupler_to_aon_asource_out_d_mem_0_source(subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_source),
+    .auto_coupler_to_aon_asource_out_d_mem_0_sink(subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_sink),
+    .auto_coupler_to_aon_asource_out_d_mem_0_denied(subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_denied),
+    .auto_coupler_to_aon_asource_out_d_mem_0_data(subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_data),
+    .auto_coupler_to_aon_asource_out_d_mem_0_corrupt(subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_corrupt),
+    .auto_coupler_to_aon_asource_out_d_ridx(subsystem_cbus_auto_coupler_to_aon_asource_out_d_ridx),
+    .auto_coupler_to_aon_asource_out_d_widx(subsystem_cbus_auto_coupler_to_aon_asource_out_d_widx),
+    .auto_coupler_to_aon_asource_out_d_safe_ridx_valid(subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_ridx_valid)
+      ,
+    .auto_coupler_to_aon_asource_out_d_safe_widx_valid(subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_widx_valid)
+      ,
+    .auto_coupler_to_aon_asource_out_d_safe_source_reset_n(
+      subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_source_reset_n),
+    .auto_coupler_to_aon_asource_out_d_safe_sink_reset_n(
+      subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_sink_reset_n),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_ready(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_ready),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_valid(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_valid),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_opcode(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_opcode),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_param(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_param),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_size(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_size),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_source(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_source),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_address(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_address),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_mask(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_mask),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_data(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_data),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_corrupt),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_ready(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_ready),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_valid(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_valid),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_opcode(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_opcode),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_param(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_param),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_size(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_size),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_source(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_source),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_sink(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_sink),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_denied(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_denied),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_data(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_data),
+    .auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_corrupt),
+    .auto_coupler_to_debug_fragmenter_out_a_ready(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_ready),
+    .auto_coupler_to_debug_fragmenter_out_a_valid(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_valid),
+    .auto_coupler_to_debug_fragmenter_out_a_bits_opcode(
+      subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_opcode),
+    .auto_coupler_to_debug_fragmenter_out_a_bits_param(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_param)
+      ,
+    .auto_coupler_to_debug_fragmenter_out_a_bits_size(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_size),
+    .auto_coupler_to_debug_fragmenter_out_a_bits_source(
+      subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_source),
+    .auto_coupler_to_debug_fragmenter_out_a_bits_address(
+      subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_address),
+    .auto_coupler_to_debug_fragmenter_out_a_bits_mask(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_mask),
+    .auto_coupler_to_debug_fragmenter_out_a_bits_data(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_data),
+    .auto_coupler_to_debug_fragmenter_out_a_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_corrupt),
+    .auto_coupler_to_debug_fragmenter_out_d_ready(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_ready),
+    .auto_coupler_to_debug_fragmenter_out_d_valid(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_valid),
+    .auto_coupler_to_debug_fragmenter_out_d_bits_opcode(
+      subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_opcode),
+    .auto_coupler_to_debug_fragmenter_out_d_bits_size(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_size),
+    .auto_coupler_to_debug_fragmenter_out_d_bits_source(
+      subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_source),
+    .auto_coupler_to_debug_fragmenter_out_d_bits_data(subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_data),
+    .auto_coupler_to_clint_fragmenter_out_a_ready(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_ready),
+    .auto_coupler_to_clint_fragmenter_out_a_valid(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_valid),
+    .auto_coupler_to_clint_fragmenter_out_a_bits_opcode(
+      subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_opcode),
+    .auto_coupler_to_clint_fragmenter_out_a_bits_param(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_param)
+      ,
+    .auto_coupler_to_clint_fragmenter_out_a_bits_size(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_size),
+    .auto_coupler_to_clint_fragmenter_out_a_bits_source(
+      subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_source),
+    .auto_coupler_to_clint_fragmenter_out_a_bits_address(
+      subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_address),
+    .auto_coupler_to_clint_fragmenter_out_a_bits_mask(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_mask),
+    .auto_coupler_to_clint_fragmenter_out_a_bits_data(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_data),
+    .auto_coupler_to_clint_fragmenter_out_a_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_corrupt),
+    .auto_coupler_to_clint_fragmenter_out_d_ready(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_ready),
+    .auto_coupler_to_clint_fragmenter_out_d_valid(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_valid),
+    .auto_coupler_to_clint_fragmenter_out_d_bits_opcode(
+      subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_opcode),
+    .auto_coupler_to_clint_fragmenter_out_d_bits_size(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_size),
+    .auto_coupler_to_clint_fragmenter_out_d_bits_source(
+      subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_source),
+    .auto_coupler_to_clint_fragmenter_out_d_bits_data(subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_data),
+    .auto_coupler_to_plic_fragmenter_out_a_ready(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_ready),
+    .auto_coupler_to_plic_fragmenter_out_a_valid(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_valid),
+    .auto_coupler_to_plic_fragmenter_out_a_bits_opcode(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_opcode)
+      ,
+    .auto_coupler_to_plic_fragmenter_out_a_bits_param(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_param),
+    .auto_coupler_to_plic_fragmenter_out_a_bits_size(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_size),
+    .auto_coupler_to_plic_fragmenter_out_a_bits_source(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_source)
+      ,
+    .auto_coupler_to_plic_fragmenter_out_a_bits_address(
+      subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_address),
+    .auto_coupler_to_plic_fragmenter_out_a_bits_mask(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_mask),
+    .auto_coupler_to_plic_fragmenter_out_a_bits_data(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_data),
+    .auto_coupler_to_plic_fragmenter_out_a_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_corrupt),
+    .auto_coupler_to_plic_fragmenter_out_d_ready(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_ready),
+    .auto_coupler_to_plic_fragmenter_out_d_valid(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_valid),
+    .auto_coupler_to_plic_fragmenter_out_d_bits_opcode(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_opcode)
+      ,
+    .auto_coupler_to_plic_fragmenter_out_d_bits_size(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_size),
+    .auto_coupler_to_plic_fragmenter_out_d_bits_source(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_source)
+      ,
+    .auto_coupler_to_plic_fragmenter_out_d_bits_data(subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_data),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_ready(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_ready),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_valid(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_valid),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_opcode(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_param(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_param),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_size(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_size),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_source(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_source),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_address(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_address),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_mask(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_mask),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_data(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_data),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_corrupt),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_ready(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_ready),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_valid(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_valid),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_opcode(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_param(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_param),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_size(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_size),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_source(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_source),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_sink(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_sink),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_denied(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_denied),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_data(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_data),
+    .auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_corrupt),
+    .auto_fixedClockNode_out_2_clock(subsystem_cbus_auto_fixedClockNode_out_2_clock),
+    .auto_fixedClockNode_out_2_reset(subsystem_cbus_auto_fixedClockNode_out_2_reset),
+    .auto_fixedClockNode_out_0_clock(subsystem_cbus_auto_fixedClockNode_out_0_clock),
+    .auto_fixedClockNode_out_0_reset(subsystem_cbus_auto_fixedClockNode_out_0_reset),
+    .auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_clock(
+      subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_clock),
+    .auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_reset(
+      subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_reset),
+    .auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_clock(
+      subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_clock),
+    .auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_reset(
+      subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_reset),
+    .auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_clock(
+      subsystem_cbus_auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_clock),
+    .auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_reset(
+      subsystem_cbus_auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_reset),
+    .auto_bus_xing_in_a_ready(subsystem_cbus_auto_bus_xing_in_a_ready),
+    .auto_bus_xing_in_a_valid(subsystem_cbus_auto_bus_xing_in_a_valid),
+    .auto_bus_xing_in_a_bits_opcode(subsystem_cbus_auto_bus_xing_in_a_bits_opcode),
+    .auto_bus_xing_in_a_bits_param(subsystem_cbus_auto_bus_xing_in_a_bits_param),
+    .auto_bus_xing_in_a_bits_size(subsystem_cbus_auto_bus_xing_in_a_bits_size),
+    .auto_bus_xing_in_a_bits_source(subsystem_cbus_auto_bus_xing_in_a_bits_source),
+    .auto_bus_xing_in_a_bits_address(subsystem_cbus_auto_bus_xing_in_a_bits_address),
+    .auto_bus_xing_in_a_bits_mask(subsystem_cbus_auto_bus_xing_in_a_bits_mask),
+    .auto_bus_xing_in_a_bits_data(subsystem_cbus_auto_bus_xing_in_a_bits_data),
+    .auto_bus_xing_in_a_bits_corrupt(subsystem_cbus_auto_bus_xing_in_a_bits_corrupt),
+    .auto_bus_xing_in_d_ready(subsystem_cbus_auto_bus_xing_in_d_ready),
+    .auto_bus_xing_in_d_valid(subsystem_cbus_auto_bus_xing_in_d_valid),
+    .auto_bus_xing_in_d_bits_opcode(subsystem_cbus_auto_bus_xing_in_d_bits_opcode),
+    .auto_bus_xing_in_d_bits_param(subsystem_cbus_auto_bus_xing_in_d_bits_param),
+    .auto_bus_xing_in_d_bits_size(subsystem_cbus_auto_bus_xing_in_d_bits_size),
+    .auto_bus_xing_in_d_bits_source(subsystem_cbus_auto_bus_xing_in_d_bits_source),
+    .auto_bus_xing_in_d_bits_sink(subsystem_cbus_auto_bus_xing_in_d_bits_sink),
+    .auto_bus_xing_in_d_bits_denied(subsystem_cbus_auto_bus_xing_in_d_bits_denied),
+    .auto_bus_xing_in_d_bits_data(subsystem_cbus_auto_bus_xing_in_d_bits_data),
+    .auto_bus_xing_in_d_bits_corrupt(subsystem_cbus_auto_bus_xing_in_d_bits_corrupt),
+    .clock(subsystem_cbus_clock),
+    .reset(subsystem_cbus_reset)
+  );
+  MemoryBus subsystem_mbus ( // @[MemoryBus.scala 25:26]
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_ready(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_ready),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_valid(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_valid),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_opcode(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_param(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_size(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_source(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_address(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_mask(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_data(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_corrupt(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_ready(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_ready),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_valid(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_valid),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_opcode(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_size(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_source(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_data(
+      subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_data),
+    .auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_clock(
+      subsystem_mbus_auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_clock),
+    .auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_reset(
+      subsystem_mbus_auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_reset),
+    .auto_bus_xing_in_a_ready(subsystem_mbus_auto_bus_xing_in_a_ready),
+    .auto_bus_xing_in_a_valid(subsystem_mbus_auto_bus_xing_in_a_valid),
+    .auto_bus_xing_in_a_bits_opcode(subsystem_mbus_auto_bus_xing_in_a_bits_opcode),
+    .auto_bus_xing_in_a_bits_param(subsystem_mbus_auto_bus_xing_in_a_bits_param),
+    .auto_bus_xing_in_a_bits_size(subsystem_mbus_auto_bus_xing_in_a_bits_size),
+    .auto_bus_xing_in_a_bits_source(subsystem_mbus_auto_bus_xing_in_a_bits_source),
+    .auto_bus_xing_in_a_bits_address(subsystem_mbus_auto_bus_xing_in_a_bits_address),
+    .auto_bus_xing_in_a_bits_mask(subsystem_mbus_auto_bus_xing_in_a_bits_mask),
+    .auto_bus_xing_in_a_bits_data(subsystem_mbus_auto_bus_xing_in_a_bits_data),
+    .auto_bus_xing_in_d_ready(subsystem_mbus_auto_bus_xing_in_d_ready),
+    .auto_bus_xing_in_d_valid(subsystem_mbus_auto_bus_xing_in_d_valid),
+    .auto_bus_xing_in_d_bits_opcode(subsystem_mbus_auto_bus_xing_in_d_bits_opcode),
+    .auto_bus_xing_in_d_bits_size(subsystem_mbus_auto_bus_xing_in_d_bits_size),
+    .auto_bus_xing_in_d_bits_source(subsystem_mbus_auto_bus_xing_in_d_bits_source),
+    .auto_bus_xing_in_d_bits_data(subsystem_mbus_auto_bus_xing_in_d_bits_data)
+  );
+  CoherenceManagerWrapper subsystem_l2_wrapper ( // @[BankedL2Params.scala 47:31]
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_ready(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_ready),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_valid(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_valid),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_opcode(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_param(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_param),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_size(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_size),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_source(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_source),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_address(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_address),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_mask(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_mask),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_data(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_data),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_ready(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_ready),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_valid(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_valid),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_opcode(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_opcode),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_size(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_size),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_source(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_source),
+    .auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_data(
+      subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_data),
+    .auto_coherent_jbar_in_a_ready(subsystem_l2_wrapper_auto_coherent_jbar_in_a_ready),
+    .auto_coherent_jbar_in_a_valid(subsystem_l2_wrapper_auto_coherent_jbar_in_a_valid),
+    .auto_coherent_jbar_in_a_bits_opcode(subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_opcode),
+    .auto_coherent_jbar_in_a_bits_param(subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_param),
+    .auto_coherent_jbar_in_a_bits_size(subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_size),
+    .auto_coherent_jbar_in_a_bits_source(subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_source),
+    .auto_coherent_jbar_in_a_bits_address(subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_address),
+    .auto_coherent_jbar_in_a_bits_mask(subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_mask),
+    .auto_coherent_jbar_in_a_bits_data(subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_data),
+    .auto_coherent_jbar_in_a_bits_corrupt(subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_corrupt),
+    .auto_coherent_jbar_in_b_ready(subsystem_l2_wrapper_auto_coherent_jbar_in_b_ready),
+    .auto_coherent_jbar_in_b_valid(subsystem_l2_wrapper_auto_coherent_jbar_in_b_valid),
+    .auto_coherent_jbar_in_b_bits_param(subsystem_l2_wrapper_auto_coherent_jbar_in_b_bits_param),
+    .auto_coherent_jbar_in_b_bits_address(subsystem_l2_wrapper_auto_coherent_jbar_in_b_bits_address),
+    .auto_coherent_jbar_in_c_ready(subsystem_l2_wrapper_auto_coherent_jbar_in_c_ready),
+    .auto_coherent_jbar_in_c_valid(subsystem_l2_wrapper_auto_coherent_jbar_in_c_valid),
+    .auto_coherent_jbar_in_c_bits_opcode(subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_opcode),
+    .auto_coherent_jbar_in_c_bits_param(subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_param),
+    .auto_coherent_jbar_in_c_bits_size(subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_size),
+    .auto_coherent_jbar_in_c_bits_source(subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_source),
+    .auto_coherent_jbar_in_c_bits_address(subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_address),
+    .auto_coherent_jbar_in_c_bits_data(subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_data),
+    .auto_coherent_jbar_in_c_bits_corrupt(subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_corrupt),
+    .auto_coherent_jbar_in_d_ready(subsystem_l2_wrapper_auto_coherent_jbar_in_d_ready),
+    .auto_coherent_jbar_in_d_valid(subsystem_l2_wrapper_auto_coherent_jbar_in_d_valid),
+    .auto_coherent_jbar_in_d_bits_opcode(subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_opcode),
+    .auto_coherent_jbar_in_d_bits_param(subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_param),
+    .auto_coherent_jbar_in_d_bits_size(subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_size),
+    .auto_coherent_jbar_in_d_bits_source(subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_source),
+    .auto_coherent_jbar_in_d_bits_sink(subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_sink),
+    .auto_coherent_jbar_in_d_bits_data(subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_data),
+    .auto_coherent_jbar_in_e_valid(subsystem_l2_wrapper_auto_coherent_jbar_in_e_valid),
+    .auto_coherent_jbar_in_e_bits_sink(subsystem_l2_wrapper_auto_coherent_jbar_in_e_bits_sink),
+    .auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_clock(
+      subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_clock),
+    .auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_reset(
+      subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_reset),
+    .auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_clock(
+      subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_clock),
+    .auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_reset(
+      subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_reset),
+    .auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_clock(
+      subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_clock),
+    .auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_reset(
+      subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_reset)
+  );
+  TilePRCIDomain tile_prci_domain ( // @[HasTiles.scala 252:38]
+    .auto_intsink_in_sync_0(tile_prci_domain_auto_intsink_in_sync_0),
+    .auto_tile_reset_domain_tile_hartid_in(tile_prci_domain_auto_tile_reset_domain_tile_hartid_in),
+    .auto_int_out_clock_xing_out_2_sync_0(tile_prci_domain_auto_int_out_clock_xing_out_2_sync_0),
+    .auto_int_out_clock_xing_out_1_sync_0(tile_prci_domain_auto_int_out_clock_xing_out_1_sync_0),
+    .auto_int_out_clock_xing_out_0_sync_0(tile_prci_domain_auto_int_out_clock_xing_out_0_sync_0),
+    .auto_int_in_clock_xing_in_2_sync_0(tile_prci_domain_auto_int_in_clock_xing_in_2_sync_0),
+    .auto_int_in_clock_xing_in_1_sync_0(tile_prci_domain_auto_int_in_clock_xing_in_1_sync_0),
+    .auto_int_in_clock_xing_in_0_sync_0(tile_prci_domain_auto_int_in_clock_xing_in_0_sync_0),
+    .auto_int_in_clock_xing_in_0_sync_1(tile_prci_domain_auto_int_in_clock_xing_in_0_sync_1),
+    .auto_tl_slave_clock_xing_in_a_ready(tile_prci_domain_auto_tl_slave_clock_xing_in_a_ready),
+    .auto_tl_slave_clock_xing_in_a_valid(tile_prci_domain_auto_tl_slave_clock_xing_in_a_valid),
+    .auto_tl_slave_clock_xing_in_a_bits_opcode(tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_opcode),
+    .auto_tl_slave_clock_xing_in_a_bits_param(tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_param),
+    .auto_tl_slave_clock_xing_in_a_bits_size(tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_size),
+    .auto_tl_slave_clock_xing_in_a_bits_source(tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_source),
+    .auto_tl_slave_clock_xing_in_a_bits_address(tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_address),
+    .auto_tl_slave_clock_xing_in_a_bits_mask(tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_mask),
+    .auto_tl_slave_clock_xing_in_a_bits_data(tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_data),
+    .auto_tl_slave_clock_xing_in_a_bits_corrupt(tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_corrupt),
+    .auto_tl_slave_clock_xing_in_d_ready(tile_prci_domain_auto_tl_slave_clock_xing_in_d_ready),
+    .auto_tl_slave_clock_xing_in_d_valid(tile_prci_domain_auto_tl_slave_clock_xing_in_d_valid),
+    .auto_tl_slave_clock_xing_in_d_bits_opcode(tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_opcode),
+    .auto_tl_slave_clock_xing_in_d_bits_param(tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_param),
+    .auto_tl_slave_clock_xing_in_d_bits_size(tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_size),
+    .auto_tl_slave_clock_xing_in_d_bits_source(tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_source),
+    .auto_tl_slave_clock_xing_in_d_bits_sink(tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_sink),
+    .auto_tl_slave_clock_xing_in_d_bits_denied(tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_denied),
+    .auto_tl_slave_clock_xing_in_d_bits_data(tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_data),
+    .auto_tl_slave_clock_xing_in_d_bits_corrupt(tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_corrupt),
+    .auto_tl_master_clock_xing_out_a_ready(tile_prci_domain_auto_tl_master_clock_xing_out_a_ready),
+    .auto_tl_master_clock_xing_out_a_valid(tile_prci_domain_auto_tl_master_clock_xing_out_a_valid),
+    .auto_tl_master_clock_xing_out_a_bits_opcode(tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_opcode),
+    .auto_tl_master_clock_xing_out_a_bits_param(tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_param),
+    .auto_tl_master_clock_xing_out_a_bits_size(tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_size),
+    .auto_tl_master_clock_xing_out_a_bits_source(tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_source),
+    .auto_tl_master_clock_xing_out_a_bits_address(tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_address),
+    .auto_tl_master_clock_xing_out_a_bits_mask(tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_mask),
+    .auto_tl_master_clock_xing_out_a_bits_data(tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_data),
+    .auto_tl_master_clock_xing_out_a_bits_corrupt(tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_corrupt),
+    .auto_tl_master_clock_xing_out_b_ready(tile_prci_domain_auto_tl_master_clock_xing_out_b_ready),
+    .auto_tl_master_clock_xing_out_b_valid(tile_prci_domain_auto_tl_master_clock_xing_out_b_valid),
+    .auto_tl_master_clock_xing_out_b_bits_param(tile_prci_domain_auto_tl_master_clock_xing_out_b_bits_param),
+    .auto_tl_master_clock_xing_out_b_bits_address(tile_prci_domain_auto_tl_master_clock_xing_out_b_bits_address),
+    .auto_tl_master_clock_xing_out_c_ready(tile_prci_domain_auto_tl_master_clock_xing_out_c_ready),
+    .auto_tl_master_clock_xing_out_c_valid(tile_prci_domain_auto_tl_master_clock_xing_out_c_valid),
+    .auto_tl_master_clock_xing_out_c_bits_opcode(tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_opcode),
+    .auto_tl_master_clock_xing_out_c_bits_param(tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_param),
+    .auto_tl_master_clock_xing_out_c_bits_size(tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_size),
+    .auto_tl_master_clock_xing_out_c_bits_source(tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_source),
+    .auto_tl_master_clock_xing_out_c_bits_address(tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_address),
+    .auto_tl_master_clock_xing_out_c_bits_data(tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_data),
+    .auto_tl_master_clock_xing_out_c_bits_corrupt(tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_corrupt),
+    .auto_tl_master_clock_xing_out_d_ready(tile_prci_domain_auto_tl_master_clock_xing_out_d_ready),
+    .auto_tl_master_clock_xing_out_d_valid(tile_prci_domain_auto_tl_master_clock_xing_out_d_valid),
+    .auto_tl_master_clock_xing_out_d_bits_opcode(tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_opcode),
+    .auto_tl_master_clock_xing_out_d_bits_param(tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_param),
+    .auto_tl_master_clock_xing_out_d_bits_size(tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_size),
+    .auto_tl_master_clock_xing_out_d_bits_source(tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_source),
+    .auto_tl_master_clock_xing_out_d_bits_sink(tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_sink),
+    .auto_tl_master_clock_xing_out_d_bits_denied(tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_denied),
+    .auto_tl_master_clock_xing_out_d_bits_data(tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_data),
+    .auto_tl_master_clock_xing_out_d_bits_corrupt(tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_corrupt),
+    .auto_tl_master_clock_xing_out_e_valid(tile_prci_domain_auto_tl_master_clock_xing_out_e_valid),
+    .auto_tl_master_clock_xing_out_e_bits_sink(tile_prci_domain_auto_tl_master_clock_xing_out_e_bits_sink),
+    .auto_tap_clock_in_clock(tile_prci_domain_auto_tap_clock_in_clock),
+    .auto_tap_clock_in_reset(tile_prci_domain_auto_tap_clock_in_reset), // <no_sram>
+    .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr), // <no_sram>
+    .tag_array_ext_RW0_en(tag_array_ext_RW0_en), // <no_sram>
+    .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk), // <no_sram>
+    .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode), // <no_sram>
+    .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata), // <no_sram>
+    .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask), // <no_sram>
+    .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+    .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+    .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+    .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+    .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+    .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+    .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask), // <no_sram>
+    .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+  );
+  ClockSinkDomain plicDomainWrapper ( // @[Plic.scala 359:39]
+    .auto_plic_int_in_0(plicDomainWrapper_auto_plic_int_in_0),
+    .auto_plic_int_in_1(plicDomainWrapper_auto_plic_int_in_1),
+    .auto_plic_int_in_2(plicDomainWrapper_auto_plic_int_in_2),
+    .auto_plic_int_in_3(plicDomainWrapper_auto_plic_int_in_3),
+    .auto_plic_int_in_4(plicDomainWrapper_auto_plic_int_in_4),
+    .auto_plic_int_in_5(plicDomainWrapper_auto_plic_int_in_5),
+    .auto_plic_int_in_6(plicDomainWrapper_auto_plic_int_in_6),
+    .auto_plic_int_in_7(plicDomainWrapper_auto_plic_int_in_7),
+    .auto_plic_int_in_8(plicDomainWrapper_auto_plic_int_in_8),
+    .auto_plic_int_in_9(plicDomainWrapper_auto_plic_int_in_9),
+    .auto_plic_int_in_10(plicDomainWrapper_auto_plic_int_in_10),
+    .auto_plic_int_in_11(plicDomainWrapper_auto_plic_int_in_11),
+    .auto_plic_int_in_12(plicDomainWrapper_auto_plic_int_in_12),
+    .auto_plic_int_in_13(plicDomainWrapper_auto_plic_int_in_13),
+    .auto_plic_int_in_14(plicDomainWrapper_auto_plic_int_in_14),
+    .auto_plic_int_in_15(plicDomainWrapper_auto_plic_int_in_15),
+    .auto_plic_int_in_16(plicDomainWrapper_auto_plic_int_in_16),
+    .auto_plic_int_in_17(plicDomainWrapper_auto_plic_int_in_17),
+    .auto_plic_int_in_18(plicDomainWrapper_auto_plic_int_in_18),
+    .auto_plic_int_in_19(plicDomainWrapper_auto_plic_int_in_19),
+    .auto_plic_int_in_20(plicDomainWrapper_auto_plic_int_in_20),
+    .auto_plic_int_in_21(plicDomainWrapper_auto_plic_int_in_21),
+    .auto_plic_int_in_22(plicDomainWrapper_auto_plic_int_in_22),
+    .auto_plic_int_in_23(plicDomainWrapper_auto_plic_int_in_23),
+    .auto_plic_int_in_24(plicDomainWrapper_auto_plic_int_in_24),
+    .auto_plic_int_in_25(plicDomainWrapper_auto_plic_int_in_25),
+    .auto_plic_int_in_26(plicDomainWrapper_auto_plic_int_in_26),
+    .auto_plic_int_in_27(plicDomainWrapper_auto_plic_int_in_27),
+    .auto_plic_int_in_28(plicDomainWrapper_auto_plic_int_in_28),
+    .auto_plic_int_in_29(plicDomainWrapper_auto_plic_int_in_29),
+    .auto_plic_int_in_30(plicDomainWrapper_auto_plic_int_in_30),
+    .auto_plic_int_in_31(plicDomainWrapper_auto_plic_int_in_31),
+    .auto_plic_int_in_32(plicDomainWrapper_auto_plic_int_in_32),
+    .auto_plic_int_in_33(plicDomainWrapper_auto_plic_int_in_33),
+    .auto_plic_int_in_34(plicDomainWrapper_auto_plic_int_in_34),
+    .auto_plic_int_in_35(plicDomainWrapper_auto_plic_int_in_35),
+    .auto_plic_int_in_36(plicDomainWrapper_auto_plic_int_in_36),
+    .auto_plic_int_in_37(plicDomainWrapper_auto_plic_int_in_37),
+    .auto_plic_int_in_38(plicDomainWrapper_auto_plic_int_in_38),
+    .auto_plic_int_in_39(plicDomainWrapper_auto_plic_int_in_39),
+    .auto_plic_int_in_40(plicDomainWrapper_auto_plic_int_in_40),
+    .auto_plic_int_in_41(plicDomainWrapper_auto_plic_int_in_41),
+    .auto_plic_int_in_42(plicDomainWrapper_auto_plic_int_in_42),
+    .auto_plic_int_in_43(plicDomainWrapper_auto_plic_int_in_43),
+    .auto_plic_int_in_44(plicDomainWrapper_auto_plic_int_in_44),
+    .auto_plic_int_in_45(plicDomainWrapper_auto_plic_int_in_45),
+    .auto_plic_int_in_46(plicDomainWrapper_auto_plic_int_in_46),
+    .auto_plic_int_in_47(plicDomainWrapper_auto_plic_int_in_47),
+    .auto_plic_int_in_48(plicDomainWrapper_auto_plic_int_in_48),
+    .auto_plic_int_in_49(plicDomainWrapper_auto_plic_int_in_49),
+    .auto_plic_int_in_50(plicDomainWrapper_auto_plic_int_in_50),
+    .auto_plic_int_in_51(plicDomainWrapper_auto_plic_int_in_51),
+    .auto_plic_int_in_52(plicDomainWrapper_auto_plic_int_in_52),
+    .auto_plic_int_in_53(plicDomainWrapper_auto_plic_int_in_53),
+    .auto_plic_int_in_54(plicDomainWrapper_auto_plic_int_in_54),
+    .auto_plic_int_in_55(plicDomainWrapper_auto_plic_int_in_55),
+    .auto_plic_int_out_1_0(plicDomainWrapper_auto_plic_int_out_1_0),
+    .auto_plic_int_out_0_0(plicDomainWrapper_auto_plic_int_out_0_0),
+    .auto_plic_in_a_ready(plicDomainWrapper_auto_plic_in_a_ready),
+    .auto_plic_in_a_valid(plicDomainWrapper_auto_plic_in_a_valid),
+    .auto_plic_in_a_bits_opcode(plicDomainWrapper_auto_plic_in_a_bits_opcode),
+    .auto_plic_in_a_bits_param(plicDomainWrapper_auto_plic_in_a_bits_param),
+    .auto_plic_in_a_bits_size(plicDomainWrapper_auto_plic_in_a_bits_size),
+    .auto_plic_in_a_bits_source(plicDomainWrapper_auto_plic_in_a_bits_source),
+    .auto_plic_in_a_bits_address(plicDomainWrapper_auto_plic_in_a_bits_address),
+    .auto_plic_in_a_bits_mask(plicDomainWrapper_auto_plic_in_a_bits_mask),
+    .auto_plic_in_a_bits_data(plicDomainWrapper_auto_plic_in_a_bits_data),
+    .auto_plic_in_a_bits_corrupt(plicDomainWrapper_auto_plic_in_a_bits_corrupt),
+    .auto_plic_in_d_ready(plicDomainWrapper_auto_plic_in_d_ready),
+    .auto_plic_in_d_valid(plicDomainWrapper_auto_plic_in_d_valid),
+    .auto_plic_in_d_bits_opcode(plicDomainWrapper_auto_plic_in_d_bits_opcode),
+    .auto_plic_in_d_bits_size(plicDomainWrapper_auto_plic_in_d_bits_size),
+    .auto_plic_in_d_bits_source(plicDomainWrapper_auto_plic_in_d_bits_source),
+    .auto_plic_in_d_bits_data(plicDomainWrapper_auto_plic_in_d_bits_data),
+    .auto_clock_in_clock(plicDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(plicDomainWrapper_auto_clock_in_reset)
+  );
+  CLINT clint ( // @[CLINT.scala 109:27]
+    .clock(clint_clock),
+    .reset(clint_reset),
+    .auto_int_out_0(clint_auto_int_out_0),
+    .auto_int_out_1(clint_auto_int_out_1),
+    .auto_in_a_ready(clint_auto_in_a_ready),
+    .auto_in_a_valid(clint_auto_in_a_valid),
+    .auto_in_a_bits_opcode(clint_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(clint_auto_in_a_bits_param),
+    .auto_in_a_bits_size(clint_auto_in_a_bits_size),
+    .auto_in_a_bits_source(clint_auto_in_a_bits_source),
+    .auto_in_a_bits_address(clint_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(clint_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(clint_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(clint_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(clint_auto_in_d_ready),
+    .auto_in_d_valid(clint_auto_in_d_valid),
+    .auto_in_d_bits_opcode(clint_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(clint_auto_in_d_bits_size),
+    .auto_in_d_bits_source(clint_auto_in_d_bits_source),
+    .auto_in_d_bits_data(clint_auto_in_d_bits_data),
+    .io_rtcTick(clint_io_rtcTick)
+  );
+  TLDebugModule debug_1 ( // @[Periphery.scala 84:27]
+    .auto_dmInner_dmInner_tl_in_a_ready(debug_1_auto_dmInner_dmInner_tl_in_a_ready),
+    .auto_dmInner_dmInner_tl_in_a_valid(debug_1_auto_dmInner_dmInner_tl_in_a_valid),
+    .auto_dmInner_dmInner_tl_in_a_bits_opcode(debug_1_auto_dmInner_dmInner_tl_in_a_bits_opcode),
+    .auto_dmInner_dmInner_tl_in_a_bits_param(debug_1_auto_dmInner_dmInner_tl_in_a_bits_param),
+    .auto_dmInner_dmInner_tl_in_a_bits_size(debug_1_auto_dmInner_dmInner_tl_in_a_bits_size),
+    .auto_dmInner_dmInner_tl_in_a_bits_source(debug_1_auto_dmInner_dmInner_tl_in_a_bits_source),
+    .auto_dmInner_dmInner_tl_in_a_bits_address(debug_1_auto_dmInner_dmInner_tl_in_a_bits_address),
+    .auto_dmInner_dmInner_tl_in_a_bits_mask(debug_1_auto_dmInner_dmInner_tl_in_a_bits_mask),
+    .auto_dmInner_dmInner_tl_in_a_bits_data(debug_1_auto_dmInner_dmInner_tl_in_a_bits_data),
+    .auto_dmInner_dmInner_tl_in_a_bits_corrupt(debug_1_auto_dmInner_dmInner_tl_in_a_bits_corrupt),
+    .auto_dmInner_dmInner_tl_in_d_ready(debug_1_auto_dmInner_dmInner_tl_in_d_ready),
+    .auto_dmInner_dmInner_tl_in_d_valid(debug_1_auto_dmInner_dmInner_tl_in_d_valid),
+    .auto_dmInner_dmInner_tl_in_d_bits_opcode(debug_1_auto_dmInner_dmInner_tl_in_d_bits_opcode),
+    .auto_dmInner_dmInner_tl_in_d_bits_size(debug_1_auto_dmInner_dmInner_tl_in_d_bits_size),
+    .auto_dmInner_dmInner_tl_in_d_bits_source(debug_1_auto_dmInner_dmInner_tl_in_d_bits_source),
+    .auto_dmInner_dmInner_tl_in_d_bits_data(debug_1_auto_dmInner_dmInner_tl_in_d_bits_data),
+    .auto_dmOuter_intsource_out_sync_0(debug_1_auto_dmOuter_intsource_out_sync_0),
+    .io_debug_clock(debug_1_io_debug_clock),
+    .io_ctrl_ndreset(debug_1_io_ctrl_ndreset),
+    .io_dmi_dmi_req_ready(debug_1_io_dmi_dmi_req_ready),
+    .io_dmi_dmi_req_valid(debug_1_io_dmi_dmi_req_valid),
+    .io_dmi_dmi_req_bits_addr(debug_1_io_dmi_dmi_req_bits_addr),
+    .io_dmi_dmi_req_bits_data(debug_1_io_dmi_dmi_req_bits_data),
+    .io_dmi_dmi_req_bits_op(debug_1_io_dmi_dmi_req_bits_op),
+    .io_dmi_dmi_resp_ready(debug_1_io_dmi_dmi_resp_ready),
+    .io_dmi_dmi_resp_valid(debug_1_io_dmi_dmi_resp_valid),
+    .io_dmi_dmi_resp_bits_data(debug_1_io_dmi_dmi_resp_bits_data),
+    .io_dmi_dmi_resp_bits_resp(debug_1_io_dmi_dmi_resp_bits_resp),
+    .io_dmi_dmiClock(debug_1_io_dmi_dmiClock),
+    .io_dmi_dmiReset(debug_1_io_dmi_dmiReset)
+  );
+  BundleBridgeNexus_15 tileHartIdNexusNode ( // @[HasTiles.scala 159:39]
+    .auto_out(tileHartIdNexusNode_auto_out)
+  );
+  IntSyncCrossingSource_5 intsource ( // @[Crossing.scala 26:31]
+    .clock(intsource_clock),
+    .reset(intsource_reset),
+    .auto_in_0(intsource_auto_in_0),
+    .auto_in_1(intsource_auto_in_1),
+    .auto_out_sync_0(intsource_auto_out_sync_0),
+    .auto_out_sync_1(intsource_auto_out_sync_1)
+  );
+  IntSyncCrossingSource_1 intsource_1 ( // @[Crossing.scala 26:31]
+    .clock(intsource_1_clock),
+    .reset(intsource_1_reset),
+    .auto_in_0(intsource_1_auto_in_0),
+    .auto_out_sync_0(intsource_1_auto_out_sync_0)
+  );
+  IntSyncCrossingSource_1 intsource_2 ( // @[Crossing.scala 26:31]
+    .clock(intsource_2_clock),
+    .reset(intsource_2_reset),
+    .auto_in_0(intsource_2_auto_in_0),
+    .auto_out_sync_0(intsource_2_auto_out_sync_0)
+  );
+  IntSyncSyncCrossingSink_1 intsink_1 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_1_auto_in_sync_0),
+    .auto_out_0(intsink_1_auto_out_0)
+  );
+  IntSyncSyncCrossingSink_1 intsink_2 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_2_auto_in_sync_0),
+    .auto_out_0(intsink_2_auto_out_0)
+  );
+  IntSyncSyncCrossingSink_1 intsink_3 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_3_auto_in_sync_0),
+    .auto_out_0(intsink_3_auto_out_0)
+  );
+  MockAONWrapper aon_1 ( // @[MockAONPeriphery.scala 21:23]
+    .auto_intsource_out_sync_0(aon_1_auto_intsource_out_sync_0),
+    .auto_intsource_out_sync_1(aon_1_auto_intsource_out_sync_1),
+    .auto_isolation_in_a_mem_0_opcode(aon_1_auto_isolation_in_a_mem_0_opcode),
+    .auto_isolation_in_a_mem_0_param(aon_1_auto_isolation_in_a_mem_0_param),
+    .auto_isolation_in_a_mem_0_size(aon_1_auto_isolation_in_a_mem_0_size),
+    .auto_isolation_in_a_mem_0_source(aon_1_auto_isolation_in_a_mem_0_source),
+    .auto_isolation_in_a_mem_0_address(aon_1_auto_isolation_in_a_mem_0_address),
+    .auto_isolation_in_a_mem_0_mask(aon_1_auto_isolation_in_a_mem_0_mask),
+    .auto_isolation_in_a_mem_0_data(aon_1_auto_isolation_in_a_mem_0_data),
+    .auto_isolation_in_a_mem_0_corrupt(aon_1_auto_isolation_in_a_mem_0_corrupt),
+    .auto_isolation_in_a_ridx(aon_1_auto_isolation_in_a_ridx),
+    .auto_isolation_in_a_widx(aon_1_auto_isolation_in_a_widx),
+    .auto_isolation_in_a_safe_ridx_valid(aon_1_auto_isolation_in_a_safe_ridx_valid),
+    .auto_isolation_in_a_safe_widx_valid(aon_1_auto_isolation_in_a_safe_widx_valid),
+    .auto_isolation_in_a_safe_source_reset_n(aon_1_auto_isolation_in_a_safe_source_reset_n),
+    .auto_isolation_in_a_safe_sink_reset_n(aon_1_auto_isolation_in_a_safe_sink_reset_n),
+    .auto_isolation_in_d_mem_0_opcode(aon_1_auto_isolation_in_d_mem_0_opcode),
+    .auto_isolation_in_d_mem_0_param(aon_1_auto_isolation_in_d_mem_0_param),
+    .auto_isolation_in_d_mem_0_size(aon_1_auto_isolation_in_d_mem_0_size),
+    .auto_isolation_in_d_mem_0_source(aon_1_auto_isolation_in_d_mem_0_source),
+    .auto_isolation_in_d_mem_0_sink(aon_1_auto_isolation_in_d_mem_0_sink),
+    .auto_isolation_in_d_mem_0_denied(aon_1_auto_isolation_in_d_mem_0_denied),
+    .auto_isolation_in_d_mem_0_data(aon_1_auto_isolation_in_d_mem_0_data),
+    .auto_isolation_in_d_mem_0_corrupt(aon_1_auto_isolation_in_d_mem_0_corrupt),
+    .auto_isolation_in_d_ridx(aon_1_auto_isolation_in_d_ridx),
+    .auto_isolation_in_d_widx(aon_1_auto_isolation_in_d_widx),
+    .auto_isolation_in_d_safe_ridx_valid(aon_1_auto_isolation_in_d_safe_ridx_valid),
+    .auto_isolation_in_d_safe_widx_valid(aon_1_auto_isolation_in_d_safe_widx_valid),
+    .auto_isolation_in_d_safe_source_reset_n(aon_1_auto_isolation_in_d_safe_source_reset_n),
+    .auto_isolation_in_d_safe_sink_reset_n(aon_1_auto_isolation_in_d_safe_sink_reset_n),
+    .io_pins_erst_n_i_ival(aon_1_io_pins_erst_n_i_ival),
+    .io_pins_lfextclk_i_ival(aon_1_io_pins_lfextclk_i_ival),
+    .io_rsts_corerst(aon_1_io_rsts_corerst),
+    .io_rtc(aon_1_io_rtc),
+    .io_ndreset(aon_1_io_ndreset)
+  );
+  IntSyncAsyncCrossingSink_1 intsink_4 ( // @[Crossing.scala 74:29]
+    .clock(intsink_4_clock),
+    .auto_in_sync_0(intsink_4_auto_in_sync_0),
+    .auto_in_sync_1(intsink_4_auto_in_sync_1),
+    .auto_out_0(intsink_4_auto_out_0),
+    .auto_out_1(intsink_4_auto_out_1)
+  );
+  ClockSinkDomain_1 uartClockDomainWrapper ( // @[UART.scala 242:44]
+    .auto_uart_0_int_xing_out_sync_0(uartClockDomainWrapper_auto_uart_0_int_xing_out_sync_0),
+    .auto_uart_0_control_xing_in_a_ready(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_ready),
+    .auto_uart_0_control_xing_in_a_valid(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_valid),
+    .auto_uart_0_control_xing_in_a_bits_opcode(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_opcode),
+    .auto_uart_0_control_xing_in_a_bits_param(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_param),
+    .auto_uart_0_control_xing_in_a_bits_size(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_size),
+    .auto_uart_0_control_xing_in_a_bits_source(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_source),
+    .auto_uart_0_control_xing_in_a_bits_address(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_address),
+    .auto_uart_0_control_xing_in_a_bits_mask(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_mask),
+    .auto_uart_0_control_xing_in_a_bits_data(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_data),
+    .auto_uart_0_control_xing_in_a_bits_corrupt(uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_corrupt),
+    .auto_uart_0_control_xing_in_d_ready(uartClockDomainWrapper_auto_uart_0_control_xing_in_d_ready),
+    .auto_uart_0_control_xing_in_d_valid(uartClockDomainWrapper_auto_uart_0_control_xing_in_d_valid),
+    .auto_uart_0_control_xing_in_d_bits_opcode(uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_opcode),
+    .auto_uart_0_control_xing_in_d_bits_size(uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_size),
+    .auto_uart_0_control_xing_in_d_bits_source(uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_source),
+    .auto_uart_0_control_xing_in_d_bits_data(uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_data),
+    .auto_uart_0_io_out_txd(uartClockDomainWrapper_auto_uart_0_io_out_txd),
+    .auto_uart_0_io_out_rxd(uartClockDomainWrapper_auto_uart_0_io_out_rxd),
+    .auto_clock_in_clock(uartClockDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(uartClockDomainWrapper_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_5 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_5_auto_in_sync_0),
+    .auto_out_0(intsink_5_auto_out_0)
+  );
+  ClockSinkDomain_2 uartClockDomainWrapper_1 ( // @[UART.scala 242:44]
+    .auto_uart_1_int_xing_out_sync_0(uartClockDomainWrapper_1_auto_uart_1_int_xing_out_sync_0),
+    .auto_uart_1_control_xing_in_a_ready(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_ready),
+    .auto_uart_1_control_xing_in_a_valid(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_valid),
+    .auto_uart_1_control_xing_in_a_bits_opcode(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_opcode),
+    .auto_uart_1_control_xing_in_a_bits_param(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_param),
+    .auto_uart_1_control_xing_in_a_bits_size(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_size),
+    .auto_uart_1_control_xing_in_a_bits_source(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_source),
+    .auto_uart_1_control_xing_in_a_bits_address(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_address),
+    .auto_uart_1_control_xing_in_a_bits_mask(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_mask),
+    .auto_uart_1_control_xing_in_a_bits_data(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_data),
+    .auto_uart_1_control_xing_in_a_bits_corrupt(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_corrupt),
+    .auto_uart_1_control_xing_in_d_ready(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_ready),
+    .auto_uart_1_control_xing_in_d_valid(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_valid),
+    .auto_uart_1_control_xing_in_d_bits_opcode(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_opcode),
+    .auto_uart_1_control_xing_in_d_bits_size(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_size),
+    .auto_uart_1_control_xing_in_d_bits_source(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_source),
+    .auto_uart_1_control_xing_in_d_bits_data(uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_data),
+    .auto_uart_1_io_out_txd(uartClockDomainWrapper_1_auto_uart_1_io_out_txd),
+    .auto_uart_1_io_out_rxd(uartClockDomainWrapper_1_auto_uart_1_io_out_rxd),
+    .auto_clock_in_clock(uartClockDomainWrapper_1_auto_clock_in_clock),
+    .auto_clock_in_reset(uartClockDomainWrapper_1_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_6 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_6_auto_in_sync_0),
+    .auto_out_0(intsink_6_auto_out_0)
+  );
+  ClockSinkDomain_3 uartClockDomainWrapper_2 ( // @[UART.scala 242:44]
+    .auto_uart_2_int_xing_out_sync_0(uartClockDomainWrapper_2_auto_uart_2_int_xing_out_sync_0),
+    .auto_uart_2_control_xing_in_a_ready(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_ready),
+    .auto_uart_2_control_xing_in_a_valid(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_valid),
+    .auto_uart_2_control_xing_in_a_bits_opcode(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_opcode),
+    .auto_uart_2_control_xing_in_a_bits_param(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_param),
+    .auto_uart_2_control_xing_in_a_bits_size(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_size),
+    .auto_uart_2_control_xing_in_a_bits_source(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_source),
+    .auto_uart_2_control_xing_in_a_bits_address(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_address),
+    .auto_uart_2_control_xing_in_a_bits_mask(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_mask),
+    .auto_uart_2_control_xing_in_a_bits_data(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_data),
+    .auto_uart_2_control_xing_in_a_bits_corrupt(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_corrupt),
+    .auto_uart_2_control_xing_in_d_ready(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_ready),
+    .auto_uart_2_control_xing_in_d_valid(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_valid),
+    .auto_uart_2_control_xing_in_d_bits_opcode(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_opcode),
+    .auto_uart_2_control_xing_in_d_bits_size(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_size),
+    .auto_uart_2_control_xing_in_d_bits_source(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_source),
+    .auto_uart_2_control_xing_in_d_bits_data(uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_data),
+    .auto_uart_2_io_out_txd(uartClockDomainWrapper_2_auto_uart_2_io_out_txd),
+    .auto_uart_2_io_out_rxd(uartClockDomainWrapper_2_auto_uart_2_io_out_rxd),
+    .auto_clock_in_clock(uartClockDomainWrapper_2_auto_clock_in_clock),
+    .auto_clock_in_reset(uartClockDomainWrapper_2_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_7 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_7_auto_in_sync_0),
+    .auto_out_0(intsink_7_auto_out_0)
+  );
+  ClockSinkDomain_4 uartClockDomainWrapper_3 ( // @[UART.scala 242:44]
+    .auto_uart_3_int_xing_out_sync_0(uartClockDomainWrapper_3_auto_uart_3_int_xing_out_sync_0),
+    .auto_uart_3_control_xing_in_a_ready(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_ready),
+    .auto_uart_3_control_xing_in_a_valid(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_valid),
+    .auto_uart_3_control_xing_in_a_bits_opcode(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_opcode),
+    .auto_uart_3_control_xing_in_a_bits_param(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_param),
+    .auto_uart_3_control_xing_in_a_bits_size(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_size),
+    .auto_uart_3_control_xing_in_a_bits_source(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_source),
+    .auto_uart_3_control_xing_in_a_bits_address(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_address),
+    .auto_uart_3_control_xing_in_a_bits_mask(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_mask),
+    .auto_uart_3_control_xing_in_a_bits_data(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_data),
+    .auto_uart_3_control_xing_in_a_bits_corrupt(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_corrupt),
+    .auto_uart_3_control_xing_in_d_ready(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_ready),
+    .auto_uart_3_control_xing_in_d_valid(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_valid),
+    .auto_uart_3_control_xing_in_d_bits_opcode(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_opcode),
+    .auto_uart_3_control_xing_in_d_bits_size(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_size),
+    .auto_uart_3_control_xing_in_d_bits_source(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_source),
+    .auto_uart_3_control_xing_in_d_bits_data(uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_data),
+    .auto_uart_3_io_out_txd(uartClockDomainWrapper_3_auto_uart_3_io_out_txd),
+    .auto_uart_3_io_out_rxd(uartClockDomainWrapper_3_auto_uart_3_io_out_rxd),
+    .auto_clock_in_clock(uartClockDomainWrapper_3_auto_clock_in_clock),
+    .auto_clock_in_reset(uartClockDomainWrapper_3_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_8 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_8_auto_in_sync_0),
+    .auto_out_0(intsink_8_auto_out_0)
+  );
+  ClockSinkDomain_5 uartClockDomainWrapper_4 ( // @[UART.scala 242:44]
+    .auto_uart_4_int_xing_out_sync_0(uartClockDomainWrapper_4_auto_uart_4_int_xing_out_sync_0),
+    .auto_uart_4_control_xing_in_a_ready(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_ready),
+    .auto_uart_4_control_xing_in_a_valid(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_valid),
+    .auto_uart_4_control_xing_in_a_bits_opcode(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_opcode),
+    .auto_uart_4_control_xing_in_a_bits_param(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_param),
+    .auto_uart_4_control_xing_in_a_bits_size(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_size),
+    .auto_uart_4_control_xing_in_a_bits_source(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_source),
+    .auto_uart_4_control_xing_in_a_bits_address(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_address),
+    .auto_uart_4_control_xing_in_a_bits_mask(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_mask),
+    .auto_uart_4_control_xing_in_a_bits_data(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_data),
+    .auto_uart_4_control_xing_in_a_bits_corrupt(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_corrupt),
+    .auto_uart_4_control_xing_in_d_ready(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_ready),
+    .auto_uart_4_control_xing_in_d_valid(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_valid),
+    .auto_uart_4_control_xing_in_d_bits_opcode(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_opcode),
+    .auto_uart_4_control_xing_in_d_bits_size(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_size),
+    .auto_uart_4_control_xing_in_d_bits_source(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_source),
+    .auto_uart_4_control_xing_in_d_bits_data(uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_data),
+    .auto_uart_4_io_out_txd(uartClockDomainWrapper_4_auto_uart_4_io_out_txd),
+    .auto_uart_4_io_out_rxd(uartClockDomainWrapper_4_auto_uart_4_io_out_rxd),
+    .auto_clock_in_clock(uartClockDomainWrapper_4_auto_clock_in_clock),
+    .auto_clock_in_reset(uartClockDomainWrapper_4_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_9 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_9_auto_in_sync_0),
+    .auto_out_0(intsink_9_auto_out_0)
+  );
+  ClockSinkDomain_6 qspiClockDomainWrapper ( // @[SPI.scala 92:44]
+    .auto_qspi_0_int_xing_out_sync_0(qspiClockDomainWrapper_auto_qspi_0_int_xing_out_sync_0),
+    .auto_qspi_0_mem_xing_in_a_ready(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_ready),
+    .auto_qspi_0_mem_xing_in_a_valid(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_valid),
+    .auto_qspi_0_mem_xing_in_a_bits_opcode(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_opcode),
+    .auto_qspi_0_mem_xing_in_a_bits_param(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_param),
+    .auto_qspi_0_mem_xing_in_a_bits_size(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_size),
+    .auto_qspi_0_mem_xing_in_a_bits_source(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_source),
+    .auto_qspi_0_mem_xing_in_a_bits_address(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_address),
+    .auto_qspi_0_mem_xing_in_a_bits_mask(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_mask),
+    .auto_qspi_0_mem_xing_in_a_bits_corrupt(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_corrupt),
+    .auto_qspi_0_mem_xing_in_d_ready(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_ready),
+    .auto_qspi_0_mem_xing_in_d_valid(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_valid),
+    .auto_qspi_0_mem_xing_in_d_bits_size(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_size),
+    .auto_qspi_0_mem_xing_in_d_bits_source(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_source),
+    .auto_qspi_0_mem_xing_in_d_bits_data(qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_data),
+    .auto_qspi_0_control_xing_in_a_ready(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_ready),
+    .auto_qspi_0_control_xing_in_a_valid(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_valid),
+    .auto_qspi_0_control_xing_in_a_bits_opcode(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_opcode),
+    .auto_qspi_0_control_xing_in_a_bits_param(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_param),
+    .auto_qspi_0_control_xing_in_a_bits_size(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_size),
+    .auto_qspi_0_control_xing_in_a_bits_source(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_source),
+    .auto_qspi_0_control_xing_in_a_bits_address(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_address),
+    .auto_qspi_0_control_xing_in_a_bits_mask(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_mask),
+    .auto_qspi_0_control_xing_in_a_bits_data(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_data),
+    .auto_qspi_0_control_xing_in_a_bits_corrupt(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_corrupt),
+    .auto_qspi_0_control_xing_in_d_ready(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_ready),
+    .auto_qspi_0_control_xing_in_d_valid(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_valid),
+    .auto_qspi_0_control_xing_in_d_bits_opcode(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_opcode),
+    .auto_qspi_0_control_xing_in_d_bits_size(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_size),
+    .auto_qspi_0_control_xing_in_d_bits_source(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_source),
+    .auto_qspi_0_control_xing_in_d_bits_data(qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_data),
+    .auto_qspi_0_io_out_sck(qspiClockDomainWrapper_auto_qspi_0_io_out_sck),
+    .auto_qspi_0_io_out_dq_0_i(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_i),
+    .auto_qspi_0_io_out_dq_0_o(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_o),
+    .auto_qspi_0_io_out_dq_0_oe(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_oe),
+    .auto_qspi_0_io_out_dq_1_i(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_i),
+    .auto_qspi_0_io_out_dq_1_o(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_o),
+    .auto_qspi_0_io_out_dq_1_oe(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_oe),
+    .auto_qspi_0_io_out_dq_2_i(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_i),
+    .auto_qspi_0_io_out_dq_2_o(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_o),
+    .auto_qspi_0_io_out_dq_2_oe(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_oe),
+    .auto_qspi_0_io_out_dq_3_i(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_i),
+    .auto_qspi_0_io_out_dq_3_o(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_o),
+    .auto_qspi_0_io_out_dq_3_oe(qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_oe),
+    .auto_qspi_0_io_out_cs_0(qspiClockDomainWrapper_auto_qspi_0_io_out_cs_0),
+    .auto_clock_in_clock(qspiClockDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(qspiClockDomainWrapper_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_10 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_10_auto_in_sync_0),
+    .auto_out_0(intsink_10_auto_out_0)
+  );
+  ClockSinkDomain_7 qspiClockDomainWrapper_1 ( // @[SPI.scala 39:44]
+    .auto_qspi_ram_0_int_xing_out_sync_0(qspiClockDomainWrapper_1_auto_qspi_ram_0_int_xing_out_sync_0),
+    .auto_qspi_ram_0_mem_xing_in_a_ready(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_ready),
+    .auto_qspi_ram_0_mem_xing_in_a_valid(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_valid),
+    .auto_qspi_ram_0_mem_xing_in_a_bits_opcode(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_opcode),
+    .auto_qspi_ram_0_mem_xing_in_a_bits_param(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_param),
+    .auto_qspi_ram_0_mem_xing_in_a_bits_size(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_size),
+    .auto_qspi_ram_0_mem_xing_in_a_bits_source(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_source),
+    .auto_qspi_ram_0_mem_xing_in_a_bits_address(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_address),
+    .auto_qspi_ram_0_mem_xing_in_a_bits_mask(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_mask),
+    .auto_qspi_ram_0_mem_xing_in_a_bits_data(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_data),
+    .auto_qspi_ram_0_mem_xing_in_a_bits_corrupt(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_corrupt),
+    .auto_qspi_ram_0_mem_xing_in_d_ready(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_ready),
+    .auto_qspi_ram_0_mem_xing_in_d_valid(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_valid),
+    .auto_qspi_ram_0_mem_xing_in_d_bits_opcode(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_opcode),
+    .auto_qspi_ram_0_mem_xing_in_d_bits_size(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_size),
+    .auto_qspi_ram_0_mem_xing_in_d_bits_source(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_source),
+    .auto_qspi_ram_0_mem_xing_in_d_bits_data(qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_data),
+    .auto_qspi_ram_0_control_xing_in_a_ready(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_ready),
+    .auto_qspi_ram_0_control_xing_in_a_valid(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_valid),
+    .auto_qspi_ram_0_control_xing_in_a_bits_opcode(
+      qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_opcode),
+    .auto_qspi_ram_0_control_xing_in_a_bits_param(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_param)
+      ,
+    .auto_qspi_ram_0_control_xing_in_a_bits_size(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_size),
+    .auto_qspi_ram_0_control_xing_in_a_bits_source(
+      qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_source),
+    .auto_qspi_ram_0_control_xing_in_a_bits_address(
+      qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_address),
+    .auto_qspi_ram_0_control_xing_in_a_bits_mask(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_mask),
+    .auto_qspi_ram_0_control_xing_in_a_bits_data(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_data),
+    .auto_qspi_ram_0_control_xing_in_a_bits_corrupt(
+      qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_corrupt),
+    .auto_qspi_ram_0_control_xing_in_d_ready(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_ready),
+    .auto_qspi_ram_0_control_xing_in_d_valid(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_valid),
+    .auto_qspi_ram_0_control_xing_in_d_bits_opcode(
+      qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_opcode),
+    .auto_qspi_ram_0_control_xing_in_d_bits_size(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_size),
+    .auto_qspi_ram_0_control_xing_in_d_bits_source(
+      qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_source),
+    .auto_qspi_ram_0_control_xing_in_d_bits_data(qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_data),
+    .auto_qspi_ram_0_io_out_sck(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_sck),
+    .auto_qspi_ram_0_io_out_dq_0_i(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_i),
+    .auto_qspi_ram_0_io_out_dq_0_o(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_o),
+    .auto_qspi_ram_0_io_out_dq_0_oe(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_oe),
+    .auto_qspi_ram_0_io_out_dq_1_i(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_i),
+    .auto_qspi_ram_0_io_out_dq_1_o(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_o),
+    .auto_qspi_ram_0_io_out_dq_1_oe(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_oe),
+    .auto_qspi_ram_0_io_out_dq_2_i(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_i),
+    .auto_qspi_ram_0_io_out_dq_2_o(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_o),
+    .auto_qspi_ram_0_io_out_dq_2_oe(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_oe),
+    .auto_qspi_ram_0_io_out_dq_3_i(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_i),
+    .auto_qspi_ram_0_io_out_dq_3_o(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_o),
+    .auto_qspi_ram_0_io_out_dq_3_oe(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_oe),
+    .auto_qspi_ram_0_io_out_cs_0(qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_cs_0),
+    .auto_clock_in_clock(qspiClockDomainWrapper_1_auto_clock_in_clock),
+    .auto_clock_in_reset(qspiClockDomainWrapper_1_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_11 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_11_auto_in_sync_0),
+    .auto_out_0(intsink_11_auto_out_0)
+  );
+  ClockSinkDomain_8 spiClockDomainWrapper ( // @[SPI.scala 35:43]
+    .auto_spi_0_int_xing_out_sync_0(spiClockDomainWrapper_auto_spi_0_int_xing_out_sync_0),
+    .auto_spi_0_control_xing_in_a_ready(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_ready),
+    .auto_spi_0_control_xing_in_a_valid(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_valid),
+    .auto_spi_0_control_xing_in_a_bits_opcode(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_opcode),
+    .auto_spi_0_control_xing_in_a_bits_param(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_param),
+    .auto_spi_0_control_xing_in_a_bits_size(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_size),
+    .auto_spi_0_control_xing_in_a_bits_source(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_source),
+    .auto_spi_0_control_xing_in_a_bits_address(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_address),
+    .auto_spi_0_control_xing_in_a_bits_mask(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_mask),
+    .auto_spi_0_control_xing_in_a_bits_data(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_data),
+    .auto_spi_0_control_xing_in_a_bits_corrupt(spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_corrupt),
+    .auto_spi_0_control_xing_in_d_ready(spiClockDomainWrapper_auto_spi_0_control_xing_in_d_ready),
+    .auto_spi_0_control_xing_in_d_valid(spiClockDomainWrapper_auto_spi_0_control_xing_in_d_valid),
+    .auto_spi_0_control_xing_in_d_bits_opcode(spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_opcode),
+    .auto_spi_0_control_xing_in_d_bits_size(spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_size),
+    .auto_spi_0_control_xing_in_d_bits_source(spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_source),
+    .auto_spi_0_control_xing_in_d_bits_data(spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_data),
+    .auto_spi_0_io_out_sck(spiClockDomainWrapper_auto_spi_0_io_out_sck),
+    .auto_spi_0_io_out_dq_0_i(spiClockDomainWrapper_auto_spi_0_io_out_dq_0_i),
+    .auto_spi_0_io_out_dq_0_o(spiClockDomainWrapper_auto_spi_0_io_out_dq_0_o),
+    .auto_spi_0_io_out_dq_0_oe(spiClockDomainWrapper_auto_spi_0_io_out_dq_0_oe),
+    .auto_spi_0_io_out_dq_1_i(spiClockDomainWrapper_auto_spi_0_io_out_dq_1_i),
+    .auto_spi_0_io_out_dq_1_o(spiClockDomainWrapper_auto_spi_0_io_out_dq_1_o),
+    .auto_spi_0_io_out_dq_1_oe(spiClockDomainWrapper_auto_spi_0_io_out_dq_1_oe),
+    .auto_spi_0_io_out_dq_2_i(spiClockDomainWrapper_auto_spi_0_io_out_dq_2_i),
+    .auto_spi_0_io_out_dq_2_o(spiClockDomainWrapper_auto_spi_0_io_out_dq_2_o),
+    .auto_spi_0_io_out_dq_2_oe(spiClockDomainWrapper_auto_spi_0_io_out_dq_2_oe),
+    .auto_spi_0_io_out_dq_3_i(spiClockDomainWrapper_auto_spi_0_io_out_dq_3_i),
+    .auto_spi_0_io_out_dq_3_o(spiClockDomainWrapper_auto_spi_0_io_out_dq_3_o),
+    .auto_spi_0_io_out_dq_3_oe(spiClockDomainWrapper_auto_spi_0_io_out_dq_3_oe),
+    .auto_spi_0_io_out_cs_0(spiClockDomainWrapper_auto_spi_0_io_out_cs_0),
+    .auto_spi_0_io_out_cs_1(spiClockDomainWrapper_auto_spi_0_io_out_cs_1),
+    .auto_clock_in_clock(spiClockDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(spiClockDomainWrapper_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_12 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_12_auto_in_sync_0),
+    .auto_out_0(intsink_12_auto_out_0)
+  );
+  ClockSinkDomain_9 gpioClockDomainWrapper ( // @[GPIO.scala 281:44]
+    .auto_gpio_0_int_xing_out_sync_0(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_0),
+    .auto_gpio_0_int_xing_out_sync_1(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_1),
+    .auto_gpio_0_int_xing_out_sync_2(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_2),
+    .auto_gpio_0_int_xing_out_sync_3(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_3),
+    .auto_gpio_0_int_xing_out_sync_4(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_4),
+    .auto_gpio_0_int_xing_out_sync_5(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_5),
+    .auto_gpio_0_int_xing_out_sync_6(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_6),
+    .auto_gpio_0_int_xing_out_sync_7(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_7),
+    .auto_gpio_0_int_xing_out_sync_8(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_8),
+    .auto_gpio_0_int_xing_out_sync_9(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_9),
+    .auto_gpio_0_int_xing_out_sync_10(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_10),
+    .auto_gpio_0_int_xing_out_sync_11(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_11),
+    .auto_gpio_0_int_xing_out_sync_12(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_12),
+    .auto_gpio_0_int_xing_out_sync_13(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_13),
+    .auto_gpio_0_int_xing_out_sync_14(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_14),
+    .auto_gpio_0_int_xing_out_sync_15(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_15),
+    .auto_gpio_0_int_xing_out_sync_16(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_16),
+    .auto_gpio_0_int_xing_out_sync_17(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_17),
+    .auto_gpio_0_int_xing_out_sync_18(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_18),
+    .auto_gpio_0_int_xing_out_sync_19(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_19),
+    .auto_gpio_0_int_xing_out_sync_20(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_20),
+    .auto_gpio_0_int_xing_out_sync_21(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_21),
+    .auto_gpio_0_int_xing_out_sync_22(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_22),
+    .auto_gpio_0_int_xing_out_sync_23(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_23),
+    .auto_gpio_0_int_xing_out_sync_24(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_24),
+    .auto_gpio_0_int_xing_out_sync_25(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_25),
+    .auto_gpio_0_int_xing_out_sync_26(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_26),
+    .auto_gpio_0_int_xing_out_sync_27(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_27),
+    .auto_gpio_0_int_xing_out_sync_28(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_28),
+    .auto_gpio_0_int_xing_out_sync_29(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_29),
+    .auto_gpio_0_int_xing_out_sync_30(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_30),
+    .auto_gpio_0_int_xing_out_sync_31(gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_31),
+    .auto_gpio_0_control_xing_in_a_ready(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_ready),
+    .auto_gpio_0_control_xing_in_a_valid(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_valid),
+    .auto_gpio_0_control_xing_in_a_bits_opcode(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_opcode),
+    .auto_gpio_0_control_xing_in_a_bits_param(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_param),
+    .auto_gpio_0_control_xing_in_a_bits_size(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_size),
+    .auto_gpio_0_control_xing_in_a_bits_source(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_source),
+    .auto_gpio_0_control_xing_in_a_bits_address(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_address),
+    .auto_gpio_0_control_xing_in_a_bits_mask(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_mask),
+    .auto_gpio_0_control_xing_in_a_bits_data(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_data),
+    .auto_gpio_0_control_xing_in_a_bits_corrupt(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_corrupt),
+    .auto_gpio_0_control_xing_in_d_ready(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_ready),
+    .auto_gpio_0_control_xing_in_d_valid(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_valid),
+    .auto_gpio_0_control_xing_in_d_bits_opcode(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_opcode),
+    .auto_gpio_0_control_xing_in_d_bits_size(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_size),
+    .auto_gpio_0_control_xing_in_d_bits_source(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_source),
+    .auto_gpio_0_control_xing_in_d_bits_data(gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_data),
+    .auto_gpio_0_iof_out_iof_0_0_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_0_o_oval),
+    .auto_gpio_0_iof_out_iof_0_1_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_1_o_oval),
+    .auto_gpio_0_iof_out_iof_0_2_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_i_ival),
+    .auto_gpio_0_iof_out_iof_0_2_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_oval),
+    .auto_gpio_0_iof_out_iof_0_2_o_oe(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_oe),
+    .auto_gpio_0_iof_out_iof_0_2_o_ie(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_ie),
+    .auto_gpio_0_iof_out_iof_0_3_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_i_ival),
+    .auto_gpio_0_iof_out_iof_0_3_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_oval),
+    .auto_gpio_0_iof_out_iof_0_3_o_oe(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_oe),
+    .auto_gpio_0_iof_out_iof_0_3_o_ie(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_ie),
+    .auto_gpio_0_iof_out_iof_0_4_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_i_ival),
+    .auto_gpio_0_iof_out_iof_0_4_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_oval),
+    .auto_gpio_0_iof_out_iof_0_4_o_oe(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_oe),
+    .auto_gpio_0_iof_out_iof_0_4_o_ie(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_ie),
+    .auto_gpio_0_iof_out_iof_0_5_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_i_ival),
+    .auto_gpio_0_iof_out_iof_0_5_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_oval),
+    .auto_gpio_0_iof_out_iof_0_5_o_oe(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_oe),
+    .auto_gpio_0_iof_out_iof_0_5_o_ie(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_ie),
+    .auto_gpio_0_iof_out_iof_0_12_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_12_i_ival),
+    .auto_gpio_0_iof_out_iof_0_12_o_oe(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_12_o_oe),
+    .auto_gpio_0_iof_out_iof_0_13_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_13_i_ival),
+    .auto_gpio_0_iof_out_iof_0_13_o_oe(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_13_o_oe),
+    .auto_gpio_0_iof_out_iof_0_14_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_14_i_ival),
+    .auto_gpio_0_iof_out_iof_0_14_o_oe(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_14_o_oe),
+    .auto_gpio_0_iof_out_iof_0_15_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_15_i_ival),
+    .auto_gpio_0_iof_out_iof_0_15_o_oe(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_15_o_oe),
+    .auto_gpio_0_iof_out_iof_0_16_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_16_i_ival),
+    .auto_gpio_0_iof_out_iof_0_17_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_17_o_oval),
+    .auto_gpio_0_iof_out_iof_0_18_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_18_i_ival),
+    .auto_gpio_0_iof_out_iof_0_19_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_19_o_oval),
+    .auto_gpio_0_iof_out_iof_0_20_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_20_i_ival),
+    .auto_gpio_0_iof_out_iof_0_21_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_21_o_oval),
+    .auto_gpio_0_iof_out_iof_0_22_i_ival(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_22_i_ival),
+    .auto_gpio_0_iof_out_iof_0_23_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_23_o_oval),
+    .auto_gpio_0_iof_out_iof_0_24_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_24_o_oval),
+    .auto_gpio_0_iof_out_iof_1_12_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_12_o_oval),
+    .auto_gpio_0_iof_out_iof_1_13_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_13_o_oval),
+    .auto_gpio_0_iof_out_iof_1_14_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_14_o_oval),
+    .auto_gpio_0_iof_out_iof_1_15_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_15_o_oval),
+    .auto_gpio_0_iof_out_iof_1_16_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_16_o_oval),
+    .auto_gpio_0_iof_out_iof_1_17_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_17_o_oval),
+    .auto_gpio_0_iof_out_iof_1_18_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_18_o_oval),
+    .auto_gpio_0_iof_out_iof_1_19_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_19_o_oval),
+    .auto_gpio_0_iof_out_iof_1_20_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_20_o_oval),
+    .auto_gpio_0_iof_out_iof_1_21_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_21_o_oval),
+    .auto_gpio_0_iof_out_iof_1_22_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_22_o_oval),
+    .auto_gpio_0_iof_out_iof_1_23_o_oval(gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_23_o_oval),
+    .auto_gpio_0_io_out_pins_0_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_i_ival),
+    .auto_gpio_0_io_out_pins_0_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_oval),
+    .auto_gpio_0_io_out_pins_0_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_oe),
+    .auto_gpio_0_io_out_pins_0_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_ie),
+    .auto_gpio_0_io_out_pins_1_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_i_ival),
+    .auto_gpio_0_io_out_pins_1_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_oval),
+    .auto_gpio_0_io_out_pins_1_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_oe),
+    .auto_gpio_0_io_out_pins_1_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_ie),
+    .auto_gpio_0_io_out_pins_2_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_i_ival),
+    .auto_gpio_0_io_out_pins_2_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_oval),
+    .auto_gpio_0_io_out_pins_2_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_oe),
+    .auto_gpio_0_io_out_pins_2_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_ie),
+    .auto_gpio_0_io_out_pins_3_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_i_ival),
+    .auto_gpio_0_io_out_pins_3_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_oval),
+    .auto_gpio_0_io_out_pins_3_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_oe),
+    .auto_gpio_0_io_out_pins_3_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_ie),
+    .auto_gpio_0_io_out_pins_4_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_i_ival),
+    .auto_gpio_0_io_out_pins_4_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_oval),
+    .auto_gpio_0_io_out_pins_4_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_oe),
+    .auto_gpio_0_io_out_pins_4_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_ie),
+    .auto_gpio_0_io_out_pins_5_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_i_ival),
+    .auto_gpio_0_io_out_pins_5_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_oval),
+    .auto_gpio_0_io_out_pins_5_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_oe),
+    .auto_gpio_0_io_out_pins_5_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_ie),
+    .auto_gpio_0_io_out_pins_6_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_i_ival),
+    .auto_gpio_0_io_out_pins_6_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_o_oval),
+    .auto_gpio_0_io_out_pins_6_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_o_oe),
+    .auto_gpio_0_io_out_pins_7_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_i_ival),
+    .auto_gpio_0_io_out_pins_7_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_o_oval),
+    .auto_gpio_0_io_out_pins_7_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_o_oe),
+    .auto_gpio_0_io_out_pins_8_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_i_ival),
+    .auto_gpio_0_io_out_pins_8_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_o_oval),
+    .auto_gpio_0_io_out_pins_8_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_o_oe),
+    .auto_gpio_0_io_out_pins_9_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_i_ival),
+    .auto_gpio_0_io_out_pins_9_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_o_oval),
+    .auto_gpio_0_io_out_pins_9_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_o_oe),
+    .auto_gpio_0_io_out_pins_10_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_i_ival),
+    .auto_gpio_0_io_out_pins_10_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_o_oval),
+    .auto_gpio_0_io_out_pins_10_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_o_oe),
+    .auto_gpio_0_io_out_pins_11_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_i_ival),
+    .auto_gpio_0_io_out_pins_11_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_o_oval),
+    .auto_gpio_0_io_out_pins_11_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_o_oe),
+    .auto_gpio_0_io_out_pins_12_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_i_ival),
+    .auto_gpio_0_io_out_pins_12_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_oval),
+    .auto_gpio_0_io_out_pins_12_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_oe),
+    .auto_gpio_0_io_out_pins_12_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_ie),
+    .auto_gpio_0_io_out_pins_13_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_i_ival),
+    .auto_gpio_0_io_out_pins_13_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_oval),
+    .auto_gpio_0_io_out_pins_13_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_oe),
+    .auto_gpio_0_io_out_pins_13_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_ie),
+    .auto_gpio_0_io_out_pins_14_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_i_ival),
+    .auto_gpio_0_io_out_pins_14_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_oval),
+    .auto_gpio_0_io_out_pins_14_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_oe),
+    .auto_gpio_0_io_out_pins_14_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_ie),
+    .auto_gpio_0_io_out_pins_15_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_i_ival),
+    .auto_gpio_0_io_out_pins_15_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_oval),
+    .auto_gpio_0_io_out_pins_15_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_oe),
+    .auto_gpio_0_io_out_pins_15_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_ie),
+    .auto_gpio_0_io_out_pins_16_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_i_ival),
+    .auto_gpio_0_io_out_pins_16_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_oval),
+    .auto_gpio_0_io_out_pins_16_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_oe),
+    .auto_gpio_0_io_out_pins_16_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_ie),
+    .auto_gpio_0_io_out_pins_17_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_i_ival),
+    .auto_gpio_0_io_out_pins_17_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_oval),
+    .auto_gpio_0_io_out_pins_17_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_oe),
+    .auto_gpio_0_io_out_pins_17_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_ie),
+    .auto_gpio_0_io_out_pins_18_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_i_ival),
+    .auto_gpio_0_io_out_pins_18_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_oval),
+    .auto_gpio_0_io_out_pins_18_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_oe),
+    .auto_gpio_0_io_out_pins_18_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_ie),
+    .auto_gpio_0_io_out_pins_19_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_i_ival),
+    .auto_gpio_0_io_out_pins_19_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_oval),
+    .auto_gpio_0_io_out_pins_19_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_oe),
+    .auto_gpio_0_io_out_pins_19_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_ie),
+    .auto_gpio_0_io_out_pins_20_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_i_ival),
+    .auto_gpio_0_io_out_pins_20_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_oval),
+    .auto_gpio_0_io_out_pins_20_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_oe),
+    .auto_gpio_0_io_out_pins_20_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_ie),
+    .auto_gpio_0_io_out_pins_21_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_i_ival),
+    .auto_gpio_0_io_out_pins_21_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_oval),
+    .auto_gpio_0_io_out_pins_21_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_oe),
+    .auto_gpio_0_io_out_pins_21_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_ie),
+    .auto_gpio_0_io_out_pins_22_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_i_ival),
+    .auto_gpio_0_io_out_pins_22_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_oval),
+    .auto_gpio_0_io_out_pins_22_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_oe),
+    .auto_gpio_0_io_out_pins_22_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_ie),
+    .auto_gpio_0_io_out_pins_23_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_i_ival),
+    .auto_gpio_0_io_out_pins_23_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_oval),
+    .auto_gpio_0_io_out_pins_23_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_oe),
+    .auto_gpio_0_io_out_pins_23_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_ie),
+    .auto_gpio_0_io_out_pins_24_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_i_ival),
+    .auto_gpio_0_io_out_pins_24_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_oval),
+    .auto_gpio_0_io_out_pins_24_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_oe),
+    .auto_gpio_0_io_out_pins_24_o_ie(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_ie),
+    .auto_gpio_0_io_out_pins_25_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_i_ival),
+    .auto_gpio_0_io_out_pins_25_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_o_oval),
+    .auto_gpio_0_io_out_pins_25_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_o_oe),
+    .auto_gpio_0_io_out_pins_26_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_i_ival),
+    .auto_gpio_0_io_out_pins_26_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_o_oval),
+    .auto_gpio_0_io_out_pins_26_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_o_oe),
+    .auto_gpio_0_io_out_pins_27_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_i_ival),
+    .auto_gpio_0_io_out_pins_27_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_o_oval),
+    .auto_gpio_0_io_out_pins_27_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_o_oe),
+    .auto_gpio_0_io_out_pins_28_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_i_ival),
+    .auto_gpio_0_io_out_pins_28_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_o_oval),
+    .auto_gpio_0_io_out_pins_28_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_o_oe),
+    .auto_gpio_0_io_out_pins_29_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_i_ival),
+    .auto_gpio_0_io_out_pins_29_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_o_oval),
+    .auto_gpio_0_io_out_pins_29_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_o_oe),
+    .auto_gpio_0_io_out_pins_30_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_i_ival),
+    .auto_gpio_0_io_out_pins_30_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_o_oval),
+    .auto_gpio_0_io_out_pins_30_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_o_oe),
+    .auto_gpio_0_io_out_pins_31_i_ival(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_i_ival),
+    .auto_gpio_0_io_out_pins_31_o_oval(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_o_oval),
+    .auto_gpio_0_io_out_pins_31_o_oe(gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_o_oe),
+    .auto_clock_in_clock(gpioClockDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(gpioClockDomainWrapper_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_15 intsink_13 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_13_auto_in_sync_0),
+    .auto_in_sync_1(intsink_13_auto_in_sync_1),
+    .auto_in_sync_2(intsink_13_auto_in_sync_2),
+    .auto_in_sync_3(intsink_13_auto_in_sync_3),
+    .auto_in_sync_4(intsink_13_auto_in_sync_4),
+    .auto_in_sync_5(intsink_13_auto_in_sync_5),
+    .auto_in_sync_6(intsink_13_auto_in_sync_6),
+    .auto_in_sync_7(intsink_13_auto_in_sync_7),
+    .auto_in_sync_8(intsink_13_auto_in_sync_8),
+    .auto_in_sync_9(intsink_13_auto_in_sync_9),
+    .auto_in_sync_10(intsink_13_auto_in_sync_10),
+    .auto_in_sync_11(intsink_13_auto_in_sync_11),
+    .auto_in_sync_12(intsink_13_auto_in_sync_12),
+    .auto_in_sync_13(intsink_13_auto_in_sync_13),
+    .auto_in_sync_14(intsink_13_auto_in_sync_14),
+    .auto_in_sync_15(intsink_13_auto_in_sync_15),
+    .auto_in_sync_16(intsink_13_auto_in_sync_16),
+    .auto_in_sync_17(intsink_13_auto_in_sync_17),
+    .auto_in_sync_18(intsink_13_auto_in_sync_18),
+    .auto_in_sync_19(intsink_13_auto_in_sync_19),
+    .auto_in_sync_20(intsink_13_auto_in_sync_20),
+    .auto_in_sync_21(intsink_13_auto_in_sync_21),
+    .auto_in_sync_22(intsink_13_auto_in_sync_22),
+    .auto_in_sync_23(intsink_13_auto_in_sync_23),
+    .auto_in_sync_24(intsink_13_auto_in_sync_24),
+    .auto_in_sync_25(intsink_13_auto_in_sync_25),
+    .auto_in_sync_26(intsink_13_auto_in_sync_26),
+    .auto_in_sync_27(intsink_13_auto_in_sync_27),
+    .auto_in_sync_28(intsink_13_auto_in_sync_28),
+    .auto_in_sync_29(intsink_13_auto_in_sync_29),
+    .auto_in_sync_30(intsink_13_auto_in_sync_30),
+    .auto_in_sync_31(intsink_13_auto_in_sync_31),
+    .auto_out_0(intsink_13_auto_out_0),
+    .auto_out_1(intsink_13_auto_out_1),
+    .auto_out_2(intsink_13_auto_out_2),
+    .auto_out_3(intsink_13_auto_out_3),
+    .auto_out_4(intsink_13_auto_out_4),
+    .auto_out_5(intsink_13_auto_out_5),
+    .auto_out_6(intsink_13_auto_out_6),
+    .auto_out_7(intsink_13_auto_out_7),
+    .auto_out_8(intsink_13_auto_out_8),
+    .auto_out_9(intsink_13_auto_out_9),
+    .auto_out_10(intsink_13_auto_out_10),
+    .auto_out_11(intsink_13_auto_out_11),
+    .auto_out_12(intsink_13_auto_out_12),
+    .auto_out_13(intsink_13_auto_out_13),
+    .auto_out_14(intsink_13_auto_out_14),
+    .auto_out_15(intsink_13_auto_out_15),
+    .auto_out_16(intsink_13_auto_out_16),
+    .auto_out_17(intsink_13_auto_out_17),
+    .auto_out_18(intsink_13_auto_out_18),
+    .auto_out_19(intsink_13_auto_out_19),
+    .auto_out_20(intsink_13_auto_out_20),
+    .auto_out_21(intsink_13_auto_out_21),
+    .auto_out_22(intsink_13_auto_out_22),
+    .auto_out_23(intsink_13_auto_out_23),
+    .auto_out_24(intsink_13_auto_out_24),
+    .auto_out_25(intsink_13_auto_out_25),
+    .auto_out_26(intsink_13_auto_out_26),
+    .auto_out_27(intsink_13_auto_out_27),
+    .auto_out_28(intsink_13_auto_out_28),
+    .auto_out_29(intsink_13_auto_out_29),
+    .auto_out_30(intsink_13_auto_out_30),
+    .auto_out_31(intsink_13_auto_out_31)
+  );
+  ClockSinkDomain_10 pwmClockDomainWrapper ( // @[PWM.scala 134:43]
+    .auto_pwm_0_int_xing_out_sync_0(pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_0),
+    .auto_pwm_0_int_xing_out_sync_1(pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_1),
+    .auto_pwm_0_int_xing_out_sync_2(pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_2),
+    .auto_pwm_0_int_xing_out_sync_3(pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_3),
+    .auto_pwm_0_control_xing_in_a_ready(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_ready),
+    .auto_pwm_0_control_xing_in_a_valid(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_valid),
+    .auto_pwm_0_control_xing_in_a_bits_opcode(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_opcode),
+    .auto_pwm_0_control_xing_in_a_bits_param(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_param),
+    .auto_pwm_0_control_xing_in_a_bits_size(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_size),
+    .auto_pwm_0_control_xing_in_a_bits_source(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_source),
+    .auto_pwm_0_control_xing_in_a_bits_address(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_address),
+    .auto_pwm_0_control_xing_in_a_bits_mask(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_mask),
+    .auto_pwm_0_control_xing_in_a_bits_data(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_data),
+    .auto_pwm_0_control_xing_in_a_bits_corrupt(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_corrupt),
+    .auto_pwm_0_control_xing_in_d_ready(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_ready),
+    .auto_pwm_0_control_xing_in_d_valid(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_valid),
+    .auto_pwm_0_control_xing_in_d_bits_opcode(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_opcode),
+    .auto_pwm_0_control_xing_in_d_bits_size(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_size),
+    .auto_pwm_0_control_xing_in_d_bits_source(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_source),
+    .auto_pwm_0_control_xing_in_d_bits_data(pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_data),
+    .auto_pwm_0_io_out_gpio_0(pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_0),
+    .auto_pwm_0_io_out_gpio_1(pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_1),
+    .auto_pwm_0_io_out_gpio_2(pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_2),
+    .auto_pwm_0_io_out_gpio_3(pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_3),
+    .auto_clock_in_clock(pwmClockDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(pwmClockDomainWrapper_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_16 intsink_14 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_14_auto_in_sync_0),
+    .auto_in_sync_1(intsink_14_auto_in_sync_1),
+    .auto_in_sync_2(intsink_14_auto_in_sync_2),
+    .auto_in_sync_3(intsink_14_auto_in_sync_3),
+    .auto_out_0(intsink_14_auto_out_0),
+    .auto_out_1(intsink_14_auto_out_1),
+    .auto_out_2(intsink_14_auto_out_2),
+    .auto_out_3(intsink_14_auto_out_3)
+  );
+  ClockSinkDomain_11 pwmClockDomainWrapper_1 ( // @[PWM.scala 134:43]
+    .auto_pwm_1_int_xing_out_sync_0(pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_0),
+    .auto_pwm_1_int_xing_out_sync_1(pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_1),
+    .auto_pwm_1_int_xing_out_sync_2(pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_2),
+    .auto_pwm_1_int_xing_out_sync_3(pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_3),
+    .auto_pwm_1_control_xing_in_a_ready(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_ready),
+    .auto_pwm_1_control_xing_in_a_valid(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_valid),
+    .auto_pwm_1_control_xing_in_a_bits_opcode(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_opcode),
+    .auto_pwm_1_control_xing_in_a_bits_param(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_param),
+    .auto_pwm_1_control_xing_in_a_bits_size(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_size),
+    .auto_pwm_1_control_xing_in_a_bits_source(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_source),
+    .auto_pwm_1_control_xing_in_a_bits_address(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_address),
+    .auto_pwm_1_control_xing_in_a_bits_mask(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_mask),
+    .auto_pwm_1_control_xing_in_a_bits_data(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_data),
+    .auto_pwm_1_control_xing_in_a_bits_corrupt(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_corrupt),
+    .auto_pwm_1_control_xing_in_d_ready(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_ready),
+    .auto_pwm_1_control_xing_in_d_valid(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_valid),
+    .auto_pwm_1_control_xing_in_d_bits_opcode(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_opcode),
+    .auto_pwm_1_control_xing_in_d_bits_size(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_size),
+    .auto_pwm_1_control_xing_in_d_bits_source(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_source),
+    .auto_pwm_1_control_xing_in_d_bits_data(pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_data),
+    .auto_pwm_1_io_out_gpio_0(pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_0),
+    .auto_pwm_1_io_out_gpio_1(pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_1),
+    .auto_pwm_1_io_out_gpio_2(pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_2),
+    .auto_pwm_1_io_out_gpio_3(pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_3),
+    .auto_clock_in_clock(pwmClockDomainWrapper_1_auto_clock_in_clock),
+    .auto_clock_in_reset(pwmClockDomainWrapper_1_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_16 intsink_15 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_15_auto_in_sync_0),
+    .auto_in_sync_1(intsink_15_auto_in_sync_1),
+    .auto_in_sync_2(intsink_15_auto_in_sync_2),
+    .auto_in_sync_3(intsink_15_auto_in_sync_3),
+    .auto_out_0(intsink_15_auto_out_0),
+    .auto_out_1(intsink_15_auto_out_1),
+    .auto_out_2(intsink_15_auto_out_2),
+    .auto_out_3(intsink_15_auto_out_3)
+  );
+  ClockSinkDomain_12 pwmClockDomainWrapper_2 ( // @[PWM.scala 134:43]
+    .auto_pwm_2_int_xing_out_sync_0(pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_0),
+    .auto_pwm_2_int_xing_out_sync_1(pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_1),
+    .auto_pwm_2_int_xing_out_sync_2(pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_2),
+    .auto_pwm_2_int_xing_out_sync_3(pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_3),
+    .auto_pwm_2_control_xing_in_a_ready(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_ready),
+    .auto_pwm_2_control_xing_in_a_valid(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_valid),
+    .auto_pwm_2_control_xing_in_a_bits_opcode(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_opcode),
+    .auto_pwm_2_control_xing_in_a_bits_param(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_param),
+    .auto_pwm_2_control_xing_in_a_bits_size(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_size),
+    .auto_pwm_2_control_xing_in_a_bits_source(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_source),
+    .auto_pwm_2_control_xing_in_a_bits_address(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_address),
+    .auto_pwm_2_control_xing_in_a_bits_mask(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_mask),
+    .auto_pwm_2_control_xing_in_a_bits_data(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_data),
+    .auto_pwm_2_control_xing_in_a_bits_corrupt(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_corrupt),
+    .auto_pwm_2_control_xing_in_d_ready(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_ready),
+    .auto_pwm_2_control_xing_in_d_valid(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_valid),
+    .auto_pwm_2_control_xing_in_d_bits_opcode(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_opcode),
+    .auto_pwm_2_control_xing_in_d_bits_size(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_size),
+    .auto_pwm_2_control_xing_in_d_bits_source(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_source),
+    .auto_pwm_2_control_xing_in_d_bits_data(pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_data),
+    .auto_pwm_2_io_out_gpio_0(pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_0),
+    .auto_pwm_2_io_out_gpio_1(pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_1),
+    .auto_pwm_2_io_out_gpio_2(pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_2),
+    .auto_pwm_2_io_out_gpio_3(pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_3),
+    .auto_clock_in_clock(pwmClockDomainWrapper_2_auto_clock_in_clock),
+    .auto_clock_in_reset(pwmClockDomainWrapper_2_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_16 intsink_16 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_16_auto_in_sync_0),
+    .auto_in_sync_1(intsink_16_auto_in_sync_1),
+    .auto_in_sync_2(intsink_16_auto_in_sync_2),
+    .auto_in_sync_3(intsink_16_auto_in_sync_3),
+    .auto_out_0(intsink_16_auto_out_0),
+    .auto_out_1(intsink_16_auto_out_1),
+    .auto_out_2(intsink_16_auto_out_2),
+    .auto_out_3(intsink_16_auto_out_3)
+  );
+  ClockSinkDomain_13 i2cClockDomainWrapper ( // @[I2C.scala 596:43]
+    .auto_i2c_0_int_xing_out_sync_0(i2cClockDomainWrapper_auto_i2c_0_int_xing_out_sync_0),
+    .auto_i2c_0_control_xing_in_a_ready(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_ready),
+    .auto_i2c_0_control_xing_in_a_valid(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_valid),
+    .auto_i2c_0_control_xing_in_a_bits_opcode(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_opcode),
+    .auto_i2c_0_control_xing_in_a_bits_param(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_param),
+    .auto_i2c_0_control_xing_in_a_bits_size(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_size),
+    .auto_i2c_0_control_xing_in_a_bits_source(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_source),
+    .auto_i2c_0_control_xing_in_a_bits_address(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_address),
+    .auto_i2c_0_control_xing_in_a_bits_mask(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_mask),
+    .auto_i2c_0_control_xing_in_a_bits_data(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_data),
+    .auto_i2c_0_control_xing_in_a_bits_corrupt(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_corrupt),
+    .auto_i2c_0_control_xing_in_d_ready(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_ready),
+    .auto_i2c_0_control_xing_in_d_valid(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_valid),
+    .auto_i2c_0_control_xing_in_d_bits_opcode(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_opcode),
+    .auto_i2c_0_control_xing_in_d_bits_size(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_size),
+    .auto_i2c_0_control_xing_in_d_bits_source(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_source),
+    .auto_i2c_0_control_xing_in_d_bits_data(i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_data),
+    .auto_i2c_0_io_out_scl_in(i2cClockDomainWrapper_auto_i2c_0_io_out_scl_in),
+    .auto_i2c_0_io_out_scl_oe(i2cClockDomainWrapper_auto_i2c_0_io_out_scl_oe),
+    .auto_i2c_0_io_out_sda_in(i2cClockDomainWrapper_auto_i2c_0_io_out_sda_in),
+    .auto_i2c_0_io_out_sda_oe(i2cClockDomainWrapper_auto_i2c_0_io_out_sda_oe),
+    .auto_clock_in_clock(i2cClockDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(i2cClockDomainWrapper_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_17 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_17_auto_in_sync_0),
+    .auto_out_0(intsink_17_auto_out_0)
+  );
+  ClockSinkDomain_14 i2cClockDomainWrapper_1 ( // @[I2C.scala 596:43]
+    .auto_i2c_1_int_xing_out_sync_0(i2cClockDomainWrapper_1_auto_i2c_1_int_xing_out_sync_0),
+    .auto_i2c_1_control_xing_in_a_ready(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_ready),
+    .auto_i2c_1_control_xing_in_a_valid(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_valid),
+    .auto_i2c_1_control_xing_in_a_bits_opcode(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_opcode),
+    .auto_i2c_1_control_xing_in_a_bits_param(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_param),
+    .auto_i2c_1_control_xing_in_a_bits_size(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_size),
+    .auto_i2c_1_control_xing_in_a_bits_source(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_source),
+    .auto_i2c_1_control_xing_in_a_bits_address(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_address),
+    .auto_i2c_1_control_xing_in_a_bits_mask(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_mask),
+    .auto_i2c_1_control_xing_in_a_bits_data(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_data),
+    .auto_i2c_1_control_xing_in_a_bits_corrupt(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_corrupt),
+    .auto_i2c_1_control_xing_in_d_ready(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_ready),
+    .auto_i2c_1_control_xing_in_d_valid(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_valid),
+    .auto_i2c_1_control_xing_in_d_bits_opcode(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_opcode),
+    .auto_i2c_1_control_xing_in_d_bits_size(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_size),
+    .auto_i2c_1_control_xing_in_d_bits_source(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_source),
+    .auto_i2c_1_control_xing_in_d_bits_data(i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_data),
+    .auto_i2c_1_io_out_scl_in(i2cClockDomainWrapper_1_auto_i2c_1_io_out_scl_in),
+    .auto_i2c_1_io_out_scl_oe(i2cClockDomainWrapper_1_auto_i2c_1_io_out_scl_oe),
+    .auto_i2c_1_io_out_sda_in(i2cClockDomainWrapper_1_auto_i2c_1_io_out_sda_in),
+    .auto_i2c_1_io_out_sda_oe(i2cClockDomainWrapper_1_auto_i2c_1_io_out_sda_oe),
+    .auto_clock_in_clock(i2cClockDomainWrapper_1_auto_clock_in_clock),
+    .auto_clock_in_reset(i2cClockDomainWrapper_1_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_1 intsink_18 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_18_auto_in_sync_0),
+    .auto_out_0(intsink_18_auto_out_0)
+  );
+  ClockSinkDomain_15 bootROMDomainWrapper ( // @[BootROM.scala 70:42]
+    .auto_bootrom_in_a_ready(bootROMDomainWrapper_auto_bootrom_in_a_ready),
+    .auto_bootrom_in_a_valid(bootROMDomainWrapper_auto_bootrom_in_a_valid),
+    .auto_bootrom_in_a_bits_opcode(bootROMDomainWrapper_auto_bootrom_in_a_bits_opcode),
+    .auto_bootrom_in_a_bits_param(bootROMDomainWrapper_auto_bootrom_in_a_bits_param),
+    .auto_bootrom_in_a_bits_size(bootROMDomainWrapper_auto_bootrom_in_a_bits_size),
+    .auto_bootrom_in_a_bits_source(bootROMDomainWrapper_auto_bootrom_in_a_bits_source),
+    .auto_bootrom_in_a_bits_address(bootROMDomainWrapper_auto_bootrom_in_a_bits_address),
+    .auto_bootrom_in_a_bits_mask(bootROMDomainWrapper_auto_bootrom_in_a_bits_mask),
+    .auto_bootrom_in_a_bits_corrupt(bootROMDomainWrapper_auto_bootrom_in_a_bits_corrupt),
+    .auto_bootrom_in_d_ready(bootROMDomainWrapper_auto_bootrom_in_d_ready),
+    .auto_bootrom_in_d_valid(bootROMDomainWrapper_auto_bootrom_in_d_valid),
+    .auto_bootrom_in_d_bits_size(bootROMDomainWrapper_auto_bootrom_in_d_bits_size),
+    .auto_bootrom_in_d_bits_source(bootROMDomainWrapper_auto_bootrom_in_d_bits_source),
+    .auto_bootrom_in_d_bits_data(bootROMDomainWrapper_auto_bootrom_in_d_bits_data),
+    .auto_clock_in_clock(bootROMDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(bootROMDomainWrapper_auto_clock_in_reset)
+  );
+  DebugTransportModuleJTAG dtm ( // @[Periphery.scala 161:21]
+    .io_jtag_clock(dtm_io_jtag_clock),
+    .io_jtag_reset(dtm_io_jtag_reset),
+    .io_dmi_req_ready(dtm_io_dmi_req_ready),
+    .io_dmi_req_valid(dtm_io_dmi_req_valid),
+    .io_dmi_req_bits_addr(dtm_io_dmi_req_bits_addr),
+    .io_dmi_req_bits_data(dtm_io_dmi_req_bits_data),
+    .io_dmi_req_bits_op(dtm_io_dmi_req_bits_op),
+    .io_dmi_resp_ready(dtm_io_dmi_resp_ready),
+    .io_dmi_resp_valid(dtm_io_dmi_resp_valid),
+    .io_dmi_resp_bits_data(dtm_io_dmi_resp_bits_data),
+    .io_dmi_resp_bits_resp(dtm_io_dmi_resp_bits_resp),
+    .io_jtag_TMS(dtm_io_jtag_TMS),
+    .io_jtag_TDI(dtm_io_jtag_TDI),
+    .io_jtag_TDO_data(dtm_io_jtag_TDO_data),
+    .io_jtag_TDO_driven(dtm_io_jtag_TDO_driven)
+  );
+  SynchronizerShiftReg_w1_d3 rtc_sync_rtc ( // @[ShiftReg.scala 45:23]
+    .clock(rtc_sync_rtc_clock),
+    .io_d(rtc_sync_rtc_io_d),
+    .io_q(rtc_sync_rtc_io_q)
+  );
+  assign debug_systemjtag_jtag_TDO_data = dtm_io_jtag_TDO_data; // @[Periphery.scala 162:17]
+  assign debug_systemjtag_jtag_TDO_driven = dtm_io_jtag_TDO_driven; // @[Periphery.scala 162:17]
+  assign uart_0_txd = uartClockDomainWrapper_auto_uart_0_io_out_txd; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign uart_1_txd = uartClockDomainWrapper_1_auto_uart_1_io_out_txd; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign uart_2_txd = uartClockDomainWrapper_2_auto_uart_2_io_out_txd; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign uart_3_txd = uartClockDomainWrapper_3_auto_uart_3_io_out_txd; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign uart_4_txd = uartClockDomainWrapper_4_auto_uart_4_io_out_txd; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_sck = spiClockDomainWrapper_auto_spi_0_io_out_sck; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_dq_0_o = spiClockDomainWrapper_auto_spi_0_io_out_dq_0_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_dq_0_oe = spiClockDomainWrapper_auto_spi_0_io_out_dq_0_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_dq_1_o = spiClockDomainWrapper_auto_spi_0_io_out_dq_1_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_dq_1_oe = spiClockDomainWrapper_auto_spi_0_io_out_dq_1_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_dq_2_o = spiClockDomainWrapper_auto_spi_0_io_out_dq_2_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_dq_2_oe = spiClockDomainWrapper_auto_spi_0_io_out_dq_2_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_dq_3_o = spiClockDomainWrapper_auto_spi_0_io_out_dq_3_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_dq_3_oe = spiClockDomainWrapper_auto_spi_0_io_out_dq_3_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_cs_0 = spiClockDomainWrapper_auto_spi_0_io_out_cs_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spi_0_cs_1 = spiClockDomainWrapper_auto_spi_0_io_out_cs_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_0_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_0_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_0_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_1_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_1_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_1_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_2_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_2_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_2_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_3_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_3_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_3_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_4_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_4_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_4_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_5_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_5_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_5_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_6_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_6_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_7_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_7_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_8_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_8_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_9_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_9_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_10_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_10_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_11_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_11_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_12_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_12_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_12_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_13_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_13_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_13_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_14_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_14_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_14_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_15_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_15_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_15_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_16_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_16_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_16_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_17_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_17_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_17_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_18_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_18_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_18_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_19_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_19_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_19_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_20_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_20_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_20_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_21_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_21_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_21_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_22_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_22_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_22_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_23_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_23_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_23_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_24_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_24_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_24_o_ie = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_o_ie; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_25_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_25_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_26_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_26_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_27_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_27_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_28_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_28_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_29_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_29_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_30_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_30_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_31_o_oval = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_o_oval; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpio_0_pins_31_o_oe = gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_o_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_2_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_3_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_4_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_5_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_12_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_12_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_13_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_13_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_14_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_14_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_15_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_15_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_16_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_16_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_18_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_18_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_20_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_20_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign iof_0_iof_0_22_i_ival = gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_22_i_ival; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_0_gpio_0 = pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_0_gpio_1 = pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_0_gpio_2 = pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_0_gpio_3 = pwmClockDomainWrapper_auto_pwm_0_io_out_gpio_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_1_gpio_0 = pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_1_gpio_1 = pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_1_gpio_2 = pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_1_gpio_3 = pwmClockDomainWrapper_1_auto_pwm_1_io_out_gpio_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_2_gpio_0 = pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_2_gpio_1 = pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_2_gpio_2 = pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwm_2_gpio_3 = pwmClockDomainWrapper_2_auto_pwm_2_io_out_gpio_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_sck = qspiClockDomainWrapper_auto_qspi_0_io_out_sck; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_dq_0_o = qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_dq_0_oe = qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_dq_1_o = qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_dq_1_oe = qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_dq_2_o = qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_dq_2_oe = qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_dq_3_o = qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_dq_3_oe = qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_0_cs_0 = qspiClockDomainWrapper_auto_qspi_0_io_out_cs_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_sck = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_sck; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_dq_0_o = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_dq_0_oe = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_dq_1_o = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_dq_1_oe = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_dq_2_o = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_dq_2_oe = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_dq_3_o = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_dq_3_oe = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_ram_0_cs_0 = qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_cs_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign aon_rsts_corerst = aon_1_io_rsts_corerst; // @[MockAONPeriphery.scala 37:7]
+  assign i2c_0_scl_oe = i2cClockDomainWrapper_auto_i2c_0_io_out_scl_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign i2c_0_sda_oe = i2cClockDomainWrapper_auto_i2c_0_io_out_sda_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign i2c_1_scl_oe = i2cClockDomainWrapper_1_auto_i2c_1_io_out_scl_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign i2c_1_sda_oe = i2cClockDomainWrapper_1_auto_i2c_1_io_out_sda_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_14_0 = intsink_18_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_13_0 = intsink_17_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_12_0 = intsink_16_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_12_1 = intsink_16_auto_out_1; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_12_2 = intsink_16_auto_out_2; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_12_3 = intsink_16_auto_out_3; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_11_0 = intsink_15_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_11_1 = intsink_15_auto_out_1; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_11_2 = intsink_15_auto_out_2; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_11_3 = intsink_15_auto_out_3; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_10_0 = intsink_14_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_10_1 = intsink_14_auto_out_1; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_10_2 = intsink_14_auto_out_2; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_10_3 = intsink_14_auto_out_3; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_0 = intsink_13_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_1 = intsink_13_auto_out_1; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_2 = intsink_13_auto_out_2; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_3 = intsink_13_auto_out_3; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_4 = intsink_13_auto_out_4; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_5 = intsink_13_auto_out_5; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_6 = intsink_13_auto_out_6; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_7 = intsink_13_auto_out_7; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_8 = intsink_13_auto_out_8; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_9 = intsink_13_auto_out_9; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_10 = intsink_13_auto_out_10; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_11 = intsink_13_auto_out_11; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_12 = intsink_13_auto_out_12; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_13 = intsink_13_auto_out_13; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_14 = intsink_13_auto_out_14; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_15 = intsink_13_auto_out_15; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_16 = intsink_13_auto_out_16; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_17 = intsink_13_auto_out_17; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_18 = intsink_13_auto_out_18; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_19 = intsink_13_auto_out_19; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_20 = intsink_13_auto_out_20; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_21 = intsink_13_auto_out_21; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_22 = intsink_13_auto_out_22; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_23 = intsink_13_auto_out_23; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_24 = intsink_13_auto_out_24; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_25 = intsink_13_auto_out_25; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_26 = intsink_13_auto_out_26; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_27 = intsink_13_auto_out_27; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_28 = intsink_13_auto_out_28; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_29 = intsink_13_auto_out_29; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_30 = intsink_13_auto_out_30; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_9_31 = intsink_13_auto_out_31; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_8_0 = intsink_12_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_7_0 = intsink_11_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_6_0 = intsink_10_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_5_0 = intsink_9_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_4_0 = intsink_8_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_3_0 = intsink_7_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_2_0 = intsink_6_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_1_0 = intsink_5_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_0_0 = intsink_4_auto_out_0; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_0_1 = intsink_4_auto_out_1; // @[LazyModule.scala 296:16]
+  assign dummyClockGroupSourceNode_clock = clock;
+  assign dummyClockGroupSourceNode_reset = reset;
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_valid =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_opcode =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_param =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_size =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_source =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_address =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_mask =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_data =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_corrupt =
+    tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_ready =
+    tile_prci_domain_auto_tl_master_clock_xing_out_b_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_valid =
+    tile_prci_domain_auto_tl_master_clock_xing_out_c_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_opcode =
+    tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_param =
+    tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_size =
+    tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_source =
+    tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_address =
+    tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_address; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_data =
+    tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_bits_corrupt =
+    tile_prci_domain_auto_tl_master_clock_xing_out_c_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_ready =
+    tile_prci_domain_auto_tl_master_clock_xing_out_d_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_e_valid =
+    tile_prci_domain_auto_tl_master_clock_xing_out_e_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_e_bits_sink =
+    tile_prci_domain_auto_tl_master_clock_xing_out_e_bits_sink; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_ready =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_valid =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_b_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_param =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_b_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_bits_address =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_b_bits_address; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_ready =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_c_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_valid =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_opcode =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_param =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_size =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_source =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_sink =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_bits_data =
+    subsystem_l2_wrapper_auto_coherent_jbar_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_ready =
+    subsystem_cbus_auto_bus_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_valid =
+    subsystem_cbus_auto_bus_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_opcode =
+    subsystem_cbus_auto_bus_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_param =
+    subsystem_cbus_auto_bus_xing_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_size =
+    subsystem_cbus_auto_bus_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_source =
+    subsystem_cbus_auto_bus_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_sink =
+    subsystem_cbus_auto_bus_xing_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_denied =
+    subsystem_cbus_auto_bus_xing_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_data =
+    subsystem_cbus_auto_bus_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_bits_corrupt =
+    subsystem_cbus_auto_bus_xing_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_clock =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_5_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_5_reset =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_5_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_clock =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_4_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_4_reset =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_4_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_clock =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_3_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_3_reset =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_3_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_clock =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_2_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_2_reset =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_2_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_clock =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_1_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_1_reset =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_1_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_clock =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_0_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_reset =
+    dummyClockGroupSourceNode_auto_out_member_subsystem_sbus_0_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_ready =
+    i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_valid =
+    i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_opcode =
+    i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_size =
+    i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_source =
+    i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_bits_data =
+    i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_ready =
+    i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_valid =
+    i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_opcode =
+    i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_size =
+    i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_source =
+    i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_bits_data =
+    i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_ready =
+    pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_valid =
+    pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_opcode =
+    pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_size =
+    pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_source =
+    pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_bits_data =
+    pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_ready =
+    pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_valid =
+    pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_opcode =
+    pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_size =
+    pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_source =
+    pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_bits_data =
+    pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_ready =
+    pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_valid =
+    pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_opcode =
+    pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_size =
+    pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_source =
+    pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_bits_data =
+    pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_ready =
+    gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_valid =
+    gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_opcode =
+    gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_size =
+    gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_source =
+    gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_bits_data =
+    gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_ready =
+    spiClockDomainWrapper_auto_spi_0_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_valid =
+    spiClockDomainWrapper_auto_spi_0_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_opcode =
+    spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_size =
+    spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_source =
+    spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_bits_data =
+    spiClockDomainWrapper_auto_spi_0_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_ready =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_valid =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_opcode =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_size =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_source =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_bits_data =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_ready =
+    qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_valid =
+    qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_size =
+    qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_source =
+    qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_bits_data =
+    qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_ready =
+    qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_valid =
+    qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_opcode =
+    qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_size =
+    qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_source =
+    qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_bits_data =
+    qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_ready =
+    uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_valid =
+    uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_opcode =
+    uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_size =
+    uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_source =
+    uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_bits_data =
+    uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_ready =
+    uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_valid =
+    uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_opcode =
+    uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_size =
+    uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_source =
+    uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_bits_data =
+    uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_ready =
+    uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_valid =
+    uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_opcode =
+    uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_size =
+    uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_source =
+    uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_bits_data =
+    uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_ready =
+    uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_valid =
+    uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_opcode =
+    uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_size =
+    uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_source =
+    uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_bits_data =
+    uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_ready =
+    uartClockDomainWrapper_auto_uart_0_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_valid =
+    uartClockDomainWrapper_auto_uart_0_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_opcode =
+    uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_size =
+    uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_source =
+    uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_data =
+    uartClockDomainWrapper_auto_uart_0_control_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_clock =
+    subsystem_cbus_auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_clock; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_reset =
+    subsystem_cbus_auto_subsystem_cbus_clock_groups_out_member_subsystem_pbus_0_reset; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_valid =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_bits_opcode =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_bits_param =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_bits_size =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_bits_source =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_bits_address =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_bits_mask =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_bits_data =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_a_bits_corrupt =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_bus_xing_in_d_ready =
+    subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_clock =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_reset =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_1_member_subsystem_fbus_0_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_ready = bootROMDomainWrapper_auto_bootrom_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_valid = bootROMDomainWrapper_auto_bootrom_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_size =
+    bootROMDomainWrapper_auto_bootrom_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_source =
+    bootROMDomainWrapper_auto_bootrom_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_data =
+    bootROMDomainWrapper_auto_bootrom_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_a_ridx = aon_1_auto_isolation_in_a_ridx; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_ridx_valid = aon_1_auto_isolation_in_a_safe_ridx_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_sink_reset_n =
+    aon_1_auto_isolation_in_a_safe_sink_reset_n; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_opcode = aon_1_auto_isolation_in_d_mem_0_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_param = aon_1_auto_isolation_in_d_mem_0_param; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_size = aon_1_auto_isolation_in_d_mem_0_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_source = aon_1_auto_isolation_in_d_mem_0_source; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_sink = aon_1_auto_isolation_in_d_mem_0_sink; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_denied = aon_1_auto_isolation_in_d_mem_0_denied; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_data = aon_1_auto_isolation_in_d_mem_0_data; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_mem_0_corrupt = aon_1_auto_isolation_in_d_mem_0_corrupt; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_widx = aon_1_auto_isolation_in_d_widx; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_widx_valid = aon_1_auto_isolation_in_d_safe_widx_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_source_reset_n =
+    aon_1_auto_isolation_in_d_safe_source_reset_n; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_ready =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_valid =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_opcode =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_param =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_size =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_source =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_sink =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_denied =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_data =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_bits_corrupt =
+    tile_prci_domain_auto_tl_slave_clock_xing_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_ready = debug_1_auto_dmInner_dmInner_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_valid = debug_1_auto_dmInner_dmInner_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_opcode =
+    debug_1_auto_dmInner_dmInner_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_size =
+    debug_1_auto_dmInner_dmInner_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_source =
+    debug_1_auto_dmInner_dmInner_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_bits_data =
+    debug_1_auto_dmInner_dmInner_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_ready = clint_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_valid = clint_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_opcode = clint_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_size = clint_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_source = clint_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_bits_data = clint_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_ready = plicDomainWrapper_auto_plic_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_valid = plicDomainWrapper_auto_plic_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_opcode = plicDomainWrapper_auto_plic_in_d_bits_opcode
+    ; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_size = plicDomainWrapper_auto_plic_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_source = plicDomainWrapper_auto_plic_in_d_bits_source
+    ; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_bits_data = plicDomainWrapper_auto_plic_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_ready =
+    subsystem_pbus_auto_bus_xing_in_a_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_valid =
+    subsystem_pbus_auto_bus_xing_in_d_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_opcode =
+    subsystem_pbus_auto_bus_xing_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_param =
+    subsystem_pbus_auto_bus_xing_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_size =
+    subsystem_pbus_auto_bus_xing_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_source =
+    subsystem_pbus_auto_bus_xing_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_sink =
+    subsystem_pbus_auto_bus_xing_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_denied =
+    subsystem_pbus_auto_bus_xing_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_data =
+    subsystem_pbus_auto_bus_xing_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_d_bits_corrupt =
+    subsystem_pbus_auto_bus_xing_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_clock =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_1_reset =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_1_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_clock =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_reset =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_0_member_subsystem_cbus_0_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_valid =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_bits_opcode =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_bits_param =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_bits_size =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_bits_source =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_bits_address =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_bits_mask =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_bits_data =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_a_bits_corrupt =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_bus_xing_in_d_ready =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_ready =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_valid =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_opcode =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_size =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_source =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_bits_data =
+    qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_mbus_auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_clock =
+    subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_clock; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_subsystem_mbus_clock_groups_in_member_subsystem_mbus_0_reset =
+    subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_out_member_subsystem_mbus_0_reset; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_a_valid =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_a_bits_opcode =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_a_bits_param =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_a_bits_size =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_a_bits_source =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_a_bits_address =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_a_bits_mask =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_a_bits_data =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_mbus_auto_bus_xing_in_d_ready =
+    subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_a_ready =
+    subsystem_mbus_auto_bus_xing_in_a_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_valid =
+    subsystem_mbus_auto_bus_xing_in_d_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_opcode =
+    subsystem_mbus_auto_bus_xing_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_size =
+    subsystem_mbus_auto_bus_xing_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_source =
+    subsystem_mbus_auto_bus_xing_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_l2_wrapper_auto_coupler_to_bus_named_subsystem_mbus_bus_xing_out_d_bits_data =
+    subsystem_mbus_auto_bus_xing_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_valid =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_opcode =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_param =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_size =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_source =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_address =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_mask =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_data =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_a_bits_corrupt =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_b_ready =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_b_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_c_valid =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_opcode =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_param =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_size =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_source =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_address =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_address; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_data =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_c_bits_corrupt =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_c_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_d_ready =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_d_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_e_valid =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_e_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_coherent_jbar_in_e_bits_sink =
+    subsystem_sbus_auto_coupler_to_bus_named_subsystem_l2_widget_out_e_bits_sink; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_clock =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_1_reset =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_1_reset; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_clock =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_clock; // @[LazyModule.scala 298:16]
+  assign subsystem_l2_wrapper_auto_subsystem_l2_clock_groups_in_member_subsystem_l2_0_reset =
+    subsystem_sbus_auto_subsystem_sbus_clock_groups_out_2_member_subsystem_l2_0_reset; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_intsink_in_sync_0 = debug_1_auto_dmOuter_intsource_out_sync_0; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tile_reset_domain_tile_hartid_in = tileHartIdNexusNode_auto_out; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_int_in_clock_xing_in_2_sync_0 = intsource_2_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_int_in_clock_xing_in_1_sync_0 = intsource_1_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_int_in_clock_xing_in_0_sync_0 = intsource_auto_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_int_in_clock_xing_in_0_sync_1 = intsource_auto_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_valid =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_opcode =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_param =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_size =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_source =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_address =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_mask =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_data =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_corrupt =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_slave_clock_xing_in_d_ready =
+    subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_a_ready =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_ready; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_b_valid =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_valid; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_b_bits_param =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_param; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_b_bits_address =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_b_bits_address; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_c_ready =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_c_ready; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_valid =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_valid; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_opcode =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_param =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_size =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_source =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_sink =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_denied =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_data =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_corrupt =
+    subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign tile_prci_domain_auto_tap_clock_in_clock = subsystem_sbus_auto_fixedClockNode_out_1_clock; // @[LazyModule.scala 298:16]
+  assign tile_prci_domain_auto_tap_clock_in_reset = subsystem_sbus_auto_fixedClockNode_out_1_reset; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_0 = ibus_auto_int_bus_int_out_0; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_1 = ibus_auto_int_bus_int_out_1; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_2 = ibus_auto_int_bus_int_out_2; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_3 = ibus_auto_int_bus_int_out_3; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_4 = ibus_auto_int_bus_int_out_4; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_5 = ibus_auto_int_bus_int_out_5; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_6 = ibus_auto_int_bus_int_out_6; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_7 = ibus_auto_int_bus_int_out_7; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_8 = ibus_auto_int_bus_int_out_8; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_9 = ibus_auto_int_bus_int_out_9; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_10 = ibus_auto_int_bus_int_out_10; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_11 = ibus_auto_int_bus_int_out_11; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_12 = ibus_auto_int_bus_int_out_12; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_13 = ibus_auto_int_bus_int_out_13; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_14 = ibus_auto_int_bus_int_out_14; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_15 = ibus_auto_int_bus_int_out_15; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_16 = ibus_auto_int_bus_int_out_16; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_17 = ibus_auto_int_bus_int_out_17; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_18 = ibus_auto_int_bus_int_out_18; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_19 = ibus_auto_int_bus_int_out_19; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_20 = ibus_auto_int_bus_int_out_20; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_21 = ibus_auto_int_bus_int_out_21; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_22 = ibus_auto_int_bus_int_out_22; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_23 = ibus_auto_int_bus_int_out_23; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_24 = ibus_auto_int_bus_int_out_24; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_25 = ibus_auto_int_bus_int_out_25; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_26 = ibus_auto_int_bus_int_out_26; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_27 = ibus_auto_int_bus_int_out_27; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_28 = ibus_auto_int_bus_int_out_28; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_29 = ibus_auto_int_bus_int_out_29; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_30 = ibus_auto_int_bus_int_out_30; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_31 = ibus_auto_int_bus_int_out_31; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_32 = ibus_auto_int_bus_int_out_32; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_33 = ibus_auto_int_bus_int_out_33; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_34 = ibus_auto_int_bus_int_out_34; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_35 = ibus_auto_int_bus_int_out_35; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_36 = ibus_auto_int_bus_int_out_36; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_37 = ibus_auto_int_bus_int_out_37; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_38 = ibus_auto_int_bus_int_out_38; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_39 = ibus_auto_int_bus_int_out_39; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_40 = ibus_auto_int_bus_int_out_40; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_41 = ibus_auto_int_bus_int_out_41; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_42 = ibus_auto_int_bus_int_out_42; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_43 = ibus_auto_int_bus_int_out_43; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_44 = ibus_auto_int_bus_int_out_44; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_45 = ibus_auto_int_bus_int_out_45; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_46 = ibus_auto_int_bus_int_out_46; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_47 = ibus_auto_int_bus_int_out_47; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_48 = ibus_auto_int_bus_int_out_48; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_49 = ibus_auto_int_bus_int_out_49; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_50 = ibus_auto_int_bus_int_out_50; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_51 = ibus_auto_int_bus_int_out_51; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_52 = ibus_auto_int_bus_int_out_52; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_53 = ibus_auto_int_bus_int_out_53; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_54 = ibus_auto_int_bus_int_out_54; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_int_in_55 = ibus_auto_int_bus_int_out_55; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_valid = subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_valid; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_bits_opcode = subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_opcode
+    ; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_bits_param = subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_bits_size = subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_bits_source = subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_source
+    ; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_bits_address =
+    subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_bits_mask = subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_bits_data = subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_a_bits_corrupt =
+    subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_plic_in_d_ready = subsystem_cbus_auto_coupler_to_plic_fragmenter_out_d_ready; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_clock_in_clock = subsystem_cbus_auto_fixedClockNode_out_0_clock; // @[LazyModule.scala 298:16]
+  assign plicDomainWrapper_auto_clock_in_reset = subsystem_cbus_auto_fixedClockNode_out_0_reset; // @[LazyModule.scala 298:16]
+  assign clint_clock = subsystem_cbus_clock; // @[CLINT.scala 115:26]
+  assign clint_reset = subsystem_cbus_reset; // @[CLINT.scala 116:26]
+  assign clint_auto_in_a_valid = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_valid; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_a_bits_opcode = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_a_bits_param = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_a_bits_size = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_a_bits_source = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_a_bits_address = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_a_bits_mask = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_a_bits_data = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_a_bits_corrupt = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign clint_auto_in_d_ready = subsystem_cbus_auto_coupler_to_clint_fragmenter_out_d_ready; // @[LazyModule.scala 298:16]
+  assign clint_io_rtcTick = rtc_tick; // @[MockAONPeriphery.scala 50:29]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_valid = subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_valid; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_bits_opcode =
+    subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_bits_param =
+    subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_bits_size =
+    subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_bits_source =
+    subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_bits_address =
+    subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_bits_mask =
+    subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_bits_data =
+    subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_a_bits_corrupt =
+    subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign debug_1_auto_dmInner_dmInner_tl_in_d_ready = subsystem_cbus_auto_coupler_to_debug_fragmenter_out_d_ready; // @[LazyModule.scala 298:16]
+  assign debug_1_io_debug_clock = debug_clock; // @[Periphery.scala 144:38]
+  assign debug_1_io_dmi_dmi_req_valid = dtm_io_dmi_req_valid; // @[Periphery.scala 174:40]
+  assign debug_1_io_dmi_dmi_req_bits_addr = dtm_io_dmi_req_bits_addr; // @[Periphery.scala 174:40]
+  assign debug_1_io_dmi_dmi_req_bits_data = dtm_io_dmi_req_bits_data; // @[Periphery.scala 174:40]
+  assign debug_1_io_dmi_dmi_req_bits_op = dtm_io_dmi_req_bits_op; // @[Periphery.scala 174:40]
+  assign debug_1_io_dmi_dmi_resp_ready = dtm_io_dmi_resp_ready; // @[Periphery.scala 174:40]
+  assign debug_1_io_dmi_dmiClock = debug_systemjtag_jtag_TCK; // @[Periphery.scala 175:45]
+  assign debug_1_io_dmi_dmiReset = debug_systemjtag_reset; // @[Periphery.scala 176:45]
+  assign intsource_clock = clock;
+  assign intsource_reset = reset;
+  assign intsource_auto_in_0 = clint_auto_int_out_0; // @[LazyModule.scala 298:16]
+  assign intsource_auto_in_1 = clint_auto_int_out_1; // @[LazyModule.scala 298:16]
+  assign intsource_1_clock = clock;
+  assign intsource_1_reset = reset;
+  assign intsource_1_auto_in_0 = plicDomainWrapper_auto_plic_int_out_0_0; // @[LazyModule.scala 298:16]
+  assign intsource_2_clock = clock;
+  assign intsource_2_reset = reset;
+  assign intsource_2_auto_in_0 = plicDomainWrapper_auto_plic_int_out_1_0; // @[LazyModule.scala 298:16]
+  assign intsink_1_auto_in_sync_0 = tile_prci_domain_auto_int_out_clock_xing_out_0_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_2_auto_in_sync_0 = tile_prci_domain_auto_int_out_clock_xing_out_1_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_3_auto_in_sync_0 = tile_prci_domain_auto_int_out_clock_xing_out_2_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign aon_1_auto_isolation_in_a_mem_0_opcode = subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_opcode; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_mem_0_param = subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_param; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_mem_0_size = subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_size; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_mem_0_source = subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_source; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_mem_0_address = subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_address; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_mem_0_mask = subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_mask; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_mem_0_data = subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_data; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_mem_0_corrupt = subsystem_cbus_auto_coupler_to_aon_asource_out_a_mem_0_corrupt; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_widx = subsystem_cbus_auto_coupler_to_aon_asource_out_a_widx; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_safe_widx_valid = subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_widx_valid; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_a_safe_source_reset_n =
+    subsystem_cbus_auto_coupler_to_aon_asource_out_a_safe_source_reset_n; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_d_ridx = subsystem_cbus_auto_coupler_to_aon_asource_out_d_ridx; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_d_safe_ridx_valid = subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_ridx_valid; // @[LazyModule.scala 298:16]
+  assign aon_1_auto_isolation_in_d_safe_sink_reset_n =
+    subsystem_cbus_auto_coupler_to_aon_asource_out_d_safe_sink_reset_n; // @[LazyModule.scala 298:16]
+  assign aon_1_io_pins_erst_n_i_ival = aon_pins_erst_n_i_ival; // @[MockAONPeriphery.scala 37:7]
+  assign aon_1_io_pins_lfextclk_i_ival = aon_pins_lfextclk_i_ival; // @[MockAONPeriphery.scala 37:7]
+  assign aon_1_io_ndreset = debug_1_io_ctrl_ndreset; // @[MockAONPeriphery.scala 53:31]
+  assign intsink_4_clock = clock;
+  assign intsink_4_auto_in_sync_0 = aon_1_auto_intsource_out_sync_0; // @[LazyModule.scala 298:16]
+  assign intsink_4_auto_in_sync_1 = aon_1_auto_intsource_out_sync_1; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_uart_0_io_out_rxd = uart_0_rxd; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign uartClockDomainWrapper_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_0_clock; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_0_reset; // @[LazyModule.scala 298:16]
+  assign intsink_5_auto_in_sync_0 = uartClockDomainWrapper_auto_uart_0_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_uart_1_io_out_rxd = uart_1_rxd; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign uartClockDomainWrapper_1_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_1_clock; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_1_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_1_reset; // @[LazyModule.scala 298:16]
+  assign intsink_6_auto_in_sync_0 = uartClockDomainWrapper_1_auto_uart_1_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_uart_2_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_uart_2_io_out_rxd = uart_2_rxd; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign uartClockDomainWrapper_2_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_2_clock; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_2_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_2_reset; // @[LazyModule.scala 298:16]
+  assign intsink_7_auto_in_sync_0 = uartClockDomainWrapper_2_auto_uart_2_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_uart_3_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_uart_3_io_out_rxd = uart_3_rxd; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign uartClockDomainWrapper_3_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_3_clock; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_3_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_3_reset; // @[LazyModule.scala 298:16]
+  assign intsink_8_auto_in_sync_0 = uartClockDomainWrapper_3_auto_uart_3_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_uart_4_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_uart_4_io_out_rxd = uart_4_rxd; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign uartClockDomainWrapper_4_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_4_clock; // @[LazyModule.scala 298:16]
+  assign uartClockDomainWrapper_4_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_4_reset; // @[LazyModule.scala 298:16]
+  assign intsink_9_auto_in_sync_0 = uartClockDomainWrapper_4_auto_uart_4_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_mem_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_mem_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_qspi_0_io_out_dq_0_i = qspi_0_dq_0_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_auto_qspi_0_io_out_dq_1_i = qspi_0_dq_1_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_auto_qspi_0_io_out_dq_2_i = qspi_0_dq_2_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_auto_qspi_0_io_out_dq_3_i = qspi_0_dq_3_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_5_clock; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_5_reset; // @[LazyModule.scala 298:16]
+  assign intsink_10_auto_in_sync_0 = qspiClockDomainWrapper_auto_qspi_0_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_valid =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_opcode =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_param =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_size =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_source =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_address =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_mask =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_data =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_a_bits_corrupt =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_mem_xing_in_d_ready =
+    subsystem_mbus_auto_coupler_to_device_named_qspi_ram_0_mem_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_ram_0_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_0_i = qspi_ram_0_dq_0_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_1_i = qspi_ram_0_dq_1_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_2_i = qspi_ram_0_dq_2_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_1_auto_qspi_ram_0_io_out_dq_3_i = qspi_ram_0_dq_3_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_1_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_6_clock; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_6_reset; // @[LazyModule.scala 298:16]
+  assign intsink_11_auto_in_sync_0 = qspiClockDomainWrapper_1_auto_qspi_ram_0_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_spi_0_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_spi_0_io_out_dq_0_i = spi_0_dq_0_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign spiClockDomainWrapper_auto_spi_0_io_out_dq_1_i = spi_0_dq_1_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign spiClockDomainWrapper_auto_spi_0_io_out_dq_2_i = spi_0_dq_2_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign spiClockDomainWrapper_auto_spi_0_io_out_dq_3_i = spi_0_dq_3_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign spiClockDomainWrapper_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_7_clock; // @[LazyModule.scala 298:16]
+  assign spiClockDomainWrapper_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_7_reset; // @[LazyModule.scala 298:16]
+  assign intsink_12_auto_in_sync_0 = spiClockDomainWrapper_auto_spi_0_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_0_o_oval = iof_0_iof_0_0_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_1_o_oval = iof_0_iof_0_1_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_oval = iof_0_iof_0_2_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_oe = iof_0_iof_0_2_o_oe; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_2_o_ie = iof_0_iof_0_2_o_ie; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_oval = iof_0_iof_0_3_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_oe = iof_0_iof_0_3_o_oe; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_3_o_ie = iof_0_iof_0_3_o_ie; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_oval = iof_0_iof_0_4_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_oe = iof_0_iof_0_4_o_oe; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_4_o_ie = iof_0_iof_0_4_o_ie; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_oval = iof_0_iof_0_5_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_oe = iof_0_iof_0_5_o_oe; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_5_o_ie = iof_0_iof_0_5_o_ie; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_12_o_oe = iof_0_iof_0_12_o_oe; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_13_o_oe = iof_0_iof_0_13_o_oe; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_14_o_oe = iof_0_iof_0_14_o_oe; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_15_o_oe = iof_0_iof_0_15_o_oe; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_17_o_oval = iof_0_iof_0_17_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_19_o_oval = iof_0_iof_0_19_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_21_o_oval = iof_0_iof_0_21_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_23_o_oval = iof_0_iof_0_23_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_0_24_o_oval = iof_0_iof_0_24_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_12_o_oval = iof_0_iof_1_12_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_13_o_oval = iof_0_iof_1_13_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_14_o_oval = iof_0_iof_1_14_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_15_o_oval = iof_0_iof_1_15_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_16_o_oval = iof_0_iof_1_16_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_17_o_oval = iof_0_iof_1_17_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_18_o_oval = iof_0_iof_1_18_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_19_o_oval = iof_0_iof_1_19_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_20_o_oval = iof_0_iof_1_20_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_21_o_oval = iof_0_iof_1_21_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_22_o_oval = iof_0_iof_1_22_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_iof_out_iof_1_23_o_oval = iof_0_iof_1_23_o_oval; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_0_i_ival = gpio_0_pins_0_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_1_i_ival = gpio_0_pins_1_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_2_i_ival = gpio_0_pins_2_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_3_i_ival = gpio_0_pins_3_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_4_i_ival = gpio_0_pins_4_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_5_i_ival = gpio_0_pins_5_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_6_i_ival = gpio_0_pins_6_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_7_i_ival = gpio_0_pins_7_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_8_i_ival = gpio_0_pins_8_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_9_i_ival = gpio_0_pins_9_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_10_i_ival = gpio_0_pins_10_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_11_i_ival = gpio_0_pins_11_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_12_i_ival = gpio_0_pins_12_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_13_i_ival = gpio_0_pins_13_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_14_i_ival = gpio_0_pins_14_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_15_i_ival = gpio_0_pins_15_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_16_i_ival = gpio_0_pins_16_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_17_i_ival = gpio_0_pins_17_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_18_i_ival = gpio_0_pins_18_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_19_i_ival = gpio_0_pins_19_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_20_i_ival = gpio_0_pins_20_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_21_i_ival = gpio_0_pins_21_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_22_i_ival = gpio_0_pins_22_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_23_i_ival = gpio_0_pins_23_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_24_i_ival = gpio_0_pins_24_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_25_i_ival = gpio_0_pins_25_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_26_i_ival = gpio_0_pins_26_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_27_i_ival = gpio_0_pins_27_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_28_i_ival = gpio_0_pins_28_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_29_i_ival = gpio_0_pins_29_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_30_i_ival = gpio_0_pins_30_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_gpio_0_io_out_pins_31_i_ival = gpio_0_pins_31_i_ival; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign gpioClockDomainWrapper_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_8_clock; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_8_reset; // @[LazyModule.scala 298:16]
+  assign intsink_13_auto_in_sync_0 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_1 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_2 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_3 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_4 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_4; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_5 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_5; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_6 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_6; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_7 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_7; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_8 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_8; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_9 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_9; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_10 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_10; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_11 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_11; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_12 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_12; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_13 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_13; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_14 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_14; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_15 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_15; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_16 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_16; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_17 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_17; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_18 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_18; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_19 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_19; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_20 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_20; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_21 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_21; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_22 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_22; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_23 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_23; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_24 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_24; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_25 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_25; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_26 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_26; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_27 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_27; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_28 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_28; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_29 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_29; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_30 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_30; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_13_auto_in_sync_31 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_31; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_pwm_0_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_0_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_9_clock; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_9_reset; // @[LazyModule.scala 298:16]
+  assign intsink_14_auto_in_sync_0 = pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_14_auto_in_sync_1 = pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_14_auto_in_sync_2 = pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_14_auto_in_sync_3 = pwmClockDomainWrapper_auto_pwm_0_int_xing_out_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_pwm_1_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_1_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_10_clock; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_1_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_10_reset; // @[LazyModule.scala 298:16]
+  assign intsink_15_auto_in_sync_0 = pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_15_auto_in_sync_1 = pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_15_auto_in_sync_2 = pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_15_auto_in_sync_3 = pwmClockDomainWrapper_1_auto_pwm_1_int_xing_out_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_pwm_2_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_pwm_2_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_11_clock; // @[LazyModule.scala 298:16]
+  assign pwmClockDomainWrapper_2_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_11_reset; // @[LazyModule.scala 298:16]
+  assign intsink_16_auto_in_sync_0 = pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_16_auto_in_sync_1 = pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_16_auto_in_sync_2 = pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_16_auto_in_sync_3 = pwmClockDomainWrapper_2_auto_pwm_2_int_xing_out_sync_3; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_0_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_i2c_0_io_out_scl_in = i2c_0_scl_in; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign i2cClockDomainWrapper_auto_i2c_0_io_out_sda_in = i2c_0_sda_in; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign i2cClockDomainWrapper_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_12_clock; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_12_reset; // @[LazyModule.scala 298:16]
+  assign intsink_17_auto_in_sync_0 = i2cClockDomainWrapper_auto_i2c_0_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_i2c_1_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_io_out_scl_in = i2c_1_scl_in; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign i2cClockDomainWrapper_1_auto_i2c_1_io_out_sda_in = i2c_1_sda_in; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign i2cClockDomainWrapper_1_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_13_clock; // @[LazyModule.scala 298:16]
+  assign i2cClockDomainWrapper_1_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_13_reset; // @[LazyModule.scala 298:16]
+  assign intsink_18_auto_in_sync_0 = i2cClockDomainWrapper_1_auto_i2c_1_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_a_valid = subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_valid; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_a_bits_opcode =
+    subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_a_bits_param =
+    subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_a_bits_size =
+    subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_a_bits_source =
+    subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_a_bits_address =
+    subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_a_bits_mask =
+    subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_a_bits_corrupt =
+    subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_bootrom_in_d_ready = subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_ready; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_clock_in_clock = subsystem_cbus_auto_fixedClockNode_out_2_clock; // @[LazyModule.scala 298:16]
+  assign bootROMDomainWrapper_auto_clock_in_reset = subsystem_cbus_auto_fixedClockNode_out_2_reset; // @[LazyModule.scala 298:16]
+  assign dtm_io_jtag_clock = debug_systemjtag_jtag_TCK; // @[Periphery.scala 166:24]
+  assign dtm_io_jtag_reset = debug_systemjtag_reset; // @[Periphery.scala 167:24]
+  assign dtm_io_dmi_req_ready = debug_1_io_dmi_dmi_req_ready; // @[Periphery.scala 174:40]
+  assign dtm_io_dmi_resp_valid = debug_1_io_dmi_dmi_resp_valid; // @[Periphery.scala 174:40]
+  assign dtm_io_dmi_resp_bits_data = debug_1_io_dmi_dmi_resp_bits_data; // @[Periphery.scala 174:40]
+  assign dtm_io_dmi_resp_bits_resp = debug_1_io_dmi_dmi_resp_bits_resp; // @[Periphery.scala 174:40]
+  assign dtm_io_jtag_TMS = debug_systemjtag_jtag_TMS; // @[Periphery.scala 162:17]
+  assign dtm_io_jtag_TDI = debug_systemjtag_jtag_TDI; // @[Periphery.scala 162:17]
+  assign rtc_sync_rtc_clock = clock;
+  assign rtc_sync_rtc_io_d = aon_1_io_rtc; // @[MockAONPeriphery.scala 45:63]
+  always @(posedge clock) begin
+    if (reset) begin // @[MockAONPeriphery.scala 46:21]
+      rtc_last <= 1'h0; // @[MockAONPeriphery.scala 46:21]
+    end else begin
+      rtc_last <= rtc_sync; // @[MockAONPeriphery.scala 46:21]
+    end
+    if (reset) begin // @[MockAONPeriphery.scala 47:21]
+      rtc_tick <= 1'h0; // @[MockAONPeriphery.scala 47:21]
+    end else begin
+      rtc_tick <= rtc_tick_x2; // @[MockAONPeriphery.scala 47:21]
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  rtc_last = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  rtc_tick = _RAND_1[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncResetSynchronizerPrimitiveShiftReg_d20_i0(
+  input   clock,
+  input   reset,
+  output  io_q
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+  reg [31:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+`endif // RANDOMIZE_REG_INIT
+  reg  sync_0; // @[SynchronizerReg.scala 51:87]
+  reg  sync_1; // @[SynchronizerReg.scala 51:87]
+  reg  sync_2; // @[SynchronizerReg.scala 51:87]
+  reg  sync_3; // @[SynchronizerReg.scala 51:87]
+  reg  sync_4; // @[SynchronizerReg.scala 51:87]
+  reg  sync_5; // @[SynchronizerReg.scala 51:87]
+  reg  sync_6; // @[SynchronizerReg.scala 51:87]
+  reg  sync_7; // @[SynchronizerReg.scala 51:87]
+  reg  sync_8; // @[SynchronizerReg.scala 51:87]
+  reg  sync_9; // @[SynchronizerReg.scala 51:87]
+  reg  sync_10; // @[SynchronizerReg.scala 51:87]
+  reg  sync_11; // @[SynchronizerReg.scala 51:87]
+  reg  sync_12; // @[SynchronizerReg.scala 51:87]
+  reg  sync_13; // @[SynchronizerReg.scala 51:87]
+  reg  sync_14; // @[SynchronizerReg.scala 51:87]
+  reg  sync_15; // @[SynchronizerReg.scala 51:87]
+  reg  sync_16; // @[SynchronizerReg.scala 51:87]
+  reg  sync_17; // @[SynchronizerReg.scala 51:87]
+  reg  sync_18; // @[SynchronizerReg.scala 51:87]
+  reg  sync_19; // @[SynchronizerReg.scala 51:87]
+  assign io_q = sync_0; // @[SynchronizerReg.scala 59:8]
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_0 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_0 <= sync_1; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_1 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_1 <= sync_2; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_2 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_2 <= sync_3; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_3 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_3 <= sync_4; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_4 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_4 <= sync_5; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_5 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_5 <= sync_6; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_6 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_6 <= sync_7; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_7 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_7 <= sync_8; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_8 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_8 <= sync_9; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_9 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_9 <= sync_10; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_10 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_10 <= sync_11; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_11 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_11 <= sync_12; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_12 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_12 <= sync_13; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_13 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_13 <= sync_14; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_14 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_14 <= sync_15; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_15 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_15 <= sync_16; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_16 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_16 <= sync_17; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_17 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_17 <= sync_18; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 51:87]
+      sync_18 <= 1'h0; // @[SynchronizerReg.scala 51:87]
+    end else begin
+      sync_18 <= sync_19; // @[SynchronizerReg.scala 57:10]
+    end
+  end
+  always @(posedge clock or posedge reset) begin
+    if (reset) begin // @[SynchronizerReg.scala 54:22]
+      sync_19 <= 1'h0;
+    end else begin
+      sync_19 <= 1'h1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  sync_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sync_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  sync_2 = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  sync_3 = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  sync_4 = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  sync_5 = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  sync_6 = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  sync_7 = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  sync_8 = _RAND_8[0:0];
+  _RAND_9 = {1{`RANDOM}};
+  sync_9 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  sync_10 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  sync_11 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  sync_12 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  sync_13 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  sync_14 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  sync_15 = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  sync_16 = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  sync_17 = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  sync_18 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  sync_19 = _RAND_19[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) begin
+    sync_0 = 1'h0;
+  end
+  if (reset) begin
+    sync_1 = 1'h0;
+  end
+  if (reset) begin
+    sync_2 = 1'h0;
+  end
+  if (reset) begin
+    sync_3 = 1'h0;
+  end
+  if (reset) begin
+    sync_4 = 1'h0;
+  end
+  if (reset) begin
+    sync_5 = 1'h0;
+  end
+  if (reset) begin
+    sync_6 = 1'h0;
+  end
+  if (reset) begin
+    sync_7 = 1'h0;
+  end
+  if (reset) begin
+    sync_8 = 1'h0;
+  end
+  if (reset) begin
+    sync_9 = 1'h0;
+  end
+  if (reset) begin
+    sync_10 = 1'h0;
+  end
+  if (reset) begin
+    sync_11 = 1'h0;
+  end
+  if (reset) begin
+    sync_12 = 1'h0;
+  end
+  if (reset) begin
+    sync_13 = 1'h0;
+  end
+  if (reset) begin
+    sync_14 = 1'h0;
+  end
+  if (reset) begin
+    sync_15 = 1'h0;
+  end
+  if (reset) begin
+    sync_16 = 1'h0;
+  end
+  if (reset) begin
+    sync_17 = 1'h0;
+  end
+  if (reset) begin
+    sync_18 = 1'h0;
+  end
+  if (reset) begin
+    sync_19 = 1'h0;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module AsyncResetSynchronizerShiftReg_w1_d20_i0(
+  input   clock,
+  input   reset,
+  output  io_q
+);
+  wire  output_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_reset; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_q; // @[ShiftReg.scala 45:23]
+  AsyncResetSynchronizerPrimitiveShiftReg_d20_i0 output_chain ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_clock),
+    .reset(output_chain_reset),
+    .io_q(output_chain_io_q)
+  );
+  assign io_q = output_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign output_chain_clock = clock;
+  assign output_chain_reset = reset; // @[SynchronizerReg.scala 86:21]
+endmodule
+module ResetCatchAndSync_d20(
+  input   clock,
+  input   reset,
+  output  io_sync_reset
+);
+  wire  io_sync_reset_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  io_sync_reset_chain_reset; // @[ShiftReg.scala 45:23]
+  wire  io_sync_reset_chain_io_q; // @[ShiftReg.scala 45:23]
+  wire  _io_sync_reset_WIRE = io_sync_reset_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  AsyncResetSynchronizerShiftReg_w1_d20_i0 io_sync_reset_chain ( // @[ShiftReg.scala 45:23]
+    .clock(io_sync_reset_chain_clock),
+    .reset(io_sync_reset_chain_reset),
+    .io_q(io_sync_reset_chain_io_q)
+  );
+  assign io_sync_reset = ~_io_sync_reset_WIRE; // @[ResetCatchAndSync.scala 29:7]
+  assign io_sync_reset_chain_clock = clock;
+  assign io_sync_reset_chain_reset = reset; // @[ResetCatchAndSync.scala 26:27]
+endmodule
+module SyncResetSynchronizerPrimitiveShiftReg_d3_i1(
+  input   clock,
+  input   reset,
+  input   io_d,
+  output  io_q
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  reg  sync_0; // @[SynchronizerReg.scala 51:87]
+  reg  sync_1; // @[SynchronizerReg.scala 51:87]
+  reg  sync_2; // @[SynchronizerReg.scala 51:87]
+  assign io_q = sync_0; // @[SynchronizerReg.scala 59:8]
+  always @(posedge clock) begin
+    sync_0 <= reset | sync_1; // @[SynchronizerReg.scala 51:{87,87} 57:10]
+    sync_1 <= reset | sync_2; // @[SynchronizerReg.scala 51:{87,87} 57:10]
+    sync_2 <= reset | io_d; // @[SynchronizerReg.scala 51:{87,87} 54:14]
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  sync_0 = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  sync_1 = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  sync_2 = _RAND_2[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module SyncResetSynchronizerShiftReg_w1_d3_i1(
+  input   clock,
+  input   reset,
+  input   io_d,
+  output  io_q
+);
+  wire  output_chain_clock; // @[ShiftReg.scala 45:23]
+  wire  output_chain_reset; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_d; // @[ShiftReg.scala 45:23]
+  wire  output_chain_io_q; // @[ShiftReg.scala 45:23]
+  SyncResetSynchronizerPrimitiveShiftReg_d3_i1 output_chain ( // @[ShiftReg.scala 45:23]
+    .clock(output_chain_clock),
+    .reset(output_chain_reset),
+    .io_d(output_chain_io_d),
+    .io_q(output_chain_io_q)
+  );
+  assign io_q = output_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign output_chain_clock = clock;
+  assign output_chain_reset = reset; // @[SynchronizerReg.scala 118:21]
+  assign output_chain_io_d = io_d; // @[SynchronizerReg.scala 119:41]
+endmodule
+module MarmotCaravelPlatform(
+  input   clock,
+  input   io_pins_jtag_TCK_i_ival,
+  input   io_pins_jtag_TMS_i_ival,
+  input   io_pins_jtag_TDI_i_ival,
+  output  io_pins_jtag_TDO_o_oval,
+  output  io_pins_jtag_TDO_o_oe,
+  input   io_pins_gpio_pins_0_i_ival,
+  output  io_pins_gpio_pins_0_o_oval,
+  output  io_pins_gpio_pins_0_o_oe,
+  output  io_pins_gpio_pins_0_o_ie,
+  input   io_pins_gpio_pins_1_i_ival,
+  output  io_pins_gpio_pins_1_o_oval,
+  output  io_pins_gpio_pins_1_o_oe,
+  output  io_pins_gpio_pins_1_o_ie,
+  input   io_pins_gpio_pins_2_i_ival,
+  output  io_pins_gpio_pins_2_o_oval,
+  output  io_pins_gpio_pins_2_o_oe,
+  output  io_pins_gpio_pins_2_o_ie,
+  input   io_pins_gpio_pins_3_i_ival,
+  output  io_pins_gpio_pins_3_o_oval,
+  output  io_pins_gpio_pins_3_o_oe,
+  output  io_pins_gpio_pins_3_o_ie,
+  input   io_pins_gpio_pins_4_i_ival,
+  output  io_pins_gpio_pins_4_o_oval,
+  output  io_pins_gpio_pins_4_o_oe,
+  output  io_pins_gpio_pins_4_o_ie,
+  input   io_pins_gpio_pins_5_i_ival,
+  output  io_pins_gpio_pins_5_o_oval,
+  output  io_pins_gpio_pins_5_o_oe,
+  output  io_pins_gpio_pins_5_o_ie,
+  input   io_pins_gpio_pins_6_i_ival,
+  output  io_pins_gpio_pins_6_o_oval,
+  output  io_pins_gpio_pins_6_o_oe,
+  input   io_pins_gpio_pins_7_i_ival,
+  output  io_pins_gpio_pins_7_o_oval,
+  output  io_pins_gpio_pins_7_o_oe,
+  input   io_pins_gpio_pins_8_i_ival,
+  output  io_pins_gpio_pins_8_o_oval,
+  output  io_pins_gpio_pins_8_o_oe,
+  input   io_pins_gpio_pins_9_i_ival,
+  output  io_pins_gpio_pins_9_o_oval,
+  output  io_pins_gpio_pins_9_o_oe,
+  input   io_pins_gpio_pins_10_i_ival,
+  output  io_pins_gpio_pins_10_o_oval,
+  output  io_pins_gpio_pins_10_o_oe,
+  input   io_pins_gpio_pins_11_i_ival,
+  output  io_pins_gpio_pins_11_o_oval,
+  output  io_pins_gpio_pins_11_o_oe,
+  input   io_pins_gpio_pins_12_i_ival,
+  output  io_pins_gpio_pins_12_o_oval,
+  output  io_pins_gpio_pins_12_o_oe,
+  output  io_pins_gpio_pins_12_o_ie,
+  input   io_pins_gpio_pins_13_i_ival,
+  output  io_pins_gpio_pins_13_o_oval,
+  output  io_pins_gpio_pins_13_o_oe,
+  output  io_pins_gpio_pins_13_o_ie,
+  input   io_pins_gpio_pins_14_i_ival,
+  output  io_pins_gpio_pins_14_o_oval,
+  output  io_pins_gpio_pins_14_o_oe,
+  output  io_pins_gpio_pins_14_o_ie,
+  input   io_pins_gpio_pins_15_i_ival,
+  output  io_pins_gpio_pins_15_o_oval,
+  output  io_pins_gpio_pins_15_o_oe,
+  output  io_pins_gpio_pins_15_o_ie,
+  input   io_pins_gpio_pins_16_i_ival,
+  output  io_pins_gpio_pins_16_o_oval,
+  output  io_pins_gpio_pins_16_o_oe,
+  output  io_pins_gpio_pins_16_o_ie,
+  input   io_pins_gpio_pins_17_i_ival,
+  output  io_pins_gpio_pins_17_o_oval,
+  output  io_pins_gpio_pins_17_o_oe,
+  output  io_pins_gpio_pins_17_o_ie,
+  input   io_pins_gpio_pins_18_i_ival,
+  output  io_pins_gpio_pins_18_o_oval,
+  output  io_pins_gpio_pins_18_o_oe,
+  output  io_pins_gpio_pins_18_o_ie,
+  input   io_pins_gpio_pins_19_i_ival,
+  output  io_pins_gpio_pins_19_o_oval,
+  output  io_pins_gpio_pins_19_o_oe,
+  output  io_pins_gpio_pins_19_o_ie,
+  input   io_pins_gpio_pins_20_i_ival,
+  output  io_pins_gpio_pins_20_o_oval,
+  output  io_pins_gpio_pins_20_o_oe,
+  output  io_pins_gpio_pins_20_o_ie,
+  input   io_pins_gpio_pins_21_i_ival,
+  output  io_pins_gpio_pins_21_o_oval,
+  output  io_pins_gpio_pins_21_o_oe,
+  output  io_pins_gpio_pins_21_o_ie,
+  input   io_pins_gpio_pins_22_i_ival,
+  output  io_pins_gpio_pins_22_o_oval,
+  output  io_pins_gpio_pins_22_o_oe,
+  output  io_pins_gpio_pins_22_o_ie,
+  input   io_pins_gpio_pins_23_i_ival,
+  output  io_pins_gpio_pins_23_o_oval,
+  output  io_pins_gpio_pins_23_o_oe,
+  output  io_pins_gpio_pins_23_o_ie,
+  input   io_pins_gpio_pins_24_i_ival,
+  output  io_pins_gpio_pins_24_o_oval,
+  output  io_pins_gpio_pins_24_o_oe,
+  output  io_pins_gpio_pins_24_o_ie,
+  input   io_pins_gpio_pins_25_i_ival,
+  output  io_pins_gpio_pins_25_o_oval,
+  output  io_pins_gpio_pins_25_o_oe,
+  input   io_pins_gpio_pins_26_i_ival,
+  output  io_pins_gpio_pins_26_o_oval,
+  output  io_pins_gpio_pins_26_o_oe,
+  input   io_pins_gpio_pins_27_i_ival,
+  output  io_pins_gpio_pins_27_o_oval,
+  output  io_pins_gpio_pins_27_o_oe,
+  input   io_pins_gpio_pins_28_i_ival,
+  output  io_pins_gpio_pins_28_o_oval,
+  output  io_pins_gpio_pins_28_o_oe,
+  input   io_pins_gpio_pins_29_i_ival,
+  output  io_pins_gpio_pins_29_o_oval,
+  output  io_pins_gpio_pins_29_o_oe,
+  input   io_pins_gpio_pins_30_i_ival,
+  output  io_pins_gpio_pins_30_o_oval,
+  output  io_pins_gpio_pins_30_o_oe,
+  input   io_pins_gpio_pins_31_i_ival,
+  output  io_pins_gpio_pins_31_o_oval,
+  output  io_pins_gpio_pins_31_o_oe,
+  output  io_pins_qspi_sck_o_oval,
+  input   io_pins_qspi_dq_0_i_ival,
+  output  io_pins_qspi_dq_0_o_oval,
+  output  io_pins_qspi_dq_0_o_oe,
+  output  io_pins_qspi_dq_0_o_ie,
+  input   io_pins_qspi_dq_1_i_ival,
+  output  io_pins_qspi_dq_1_o_oval,
+  output  io_pins_qspi_dq_1_o_oe,
+  output  io_pins_qspi_dq_1_o_ie,
+  input   io_pins_qspi_dq_2_i_ival,
+  output  io_pins_qspi_dq_2_o_oval,
+  output  io_pins_qspi_dq_2_o_oe,
+  output  io_pins_qspi_dq_2_o_ie,
+  input   io_pins_qspi_dq_3_i_ival,
+  output  io_pins_qspi_dq_3_o_oval,
+  output  io_pins_qspi_dq_3_o_oe,
+  output  io_pins_qspi_dq_3_o_ie,
+  output  io_pins_qspi_cs_0_o_oval,
+  output  io_pins_qspi_ram_sck_o_oval,
+  input   io_pins_qspi_ram_dq_0_i_ival,
+  output  io_pins_qspi_ram_dq_0_o_oval,
+  output  io_pins_qspi_ram_dq_0_o_oe,
+  output  io_pins_qspi_ram_dq_0_o_ie,
+  input   io_pins_qspi_ram_dq_1_i_ival,
+  output  io_pins_qspi_ram_dq_1_o_oval,
+  output  io_pins_qspi_ram_dq_1_o_oe,
+  output  io_pins_qspi_ram_dq_1_o_ie,
+  input   io_pins_qspi_ram_dq_2_i_ival,
+  output  io_pins_qspi_ram_dq_2_o_oval,
+  output  io_pins_qspi_ram_dq_2_o_oe,
+  output  io_pins_qspi_ram_dq_2_o_ie,
+  input   io_pins_qspi_ram_dq_3_i_ival,
+  output  io_pins_qspi_ram_dq_3_o_oval,
+  output  io_pins_qspi_ram_dq_3_o_oe,
+  output  io_pins_qspi_ram_dq_3_o_ie,
+  output  io_pins_qspi_ram_cs_0_o_oval,
+  input   io_pins_uart_rxd_i_ival,
+  output  io_pins_uart_txd_o_oval,
+  input   io_pins_aon_erst_n_i_ival,
+  input   io_pins_aon_lfextclk_i_ival,
+  input   io_jtag_reset, // <no_sram>
+  output [5:0]  tag_array_ext_RW0_addr, // <no_sram>
+  output        tag_array_ext_RW0_en, // <no_sram>
+  output        tag_array_ext_RW0_clk, // <no_sram>
+  output        tag_array_ext_RW0_wmode, // <no_sram>
+  output [20:0] tag_array_ext_RW0_wdata, // <no_sram>
+  input  [20:0] tag_array_ext_RW0_rdata, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+  wire  sys_clock; // @[Platform.scala 58:19]
+  wire  sys_reset; // @[Platform.scala 58:19]
+  wire  sys_debug_clock; // @[Platform.scala 58:19]
+  wire  sys_debug_systemjtag_jtag_TCK; // @[Platform.scala 58:19]
+  wire  sys_debug_systemjtag_jtag_TMS; // @[Platform.scala 58:19]
+  wire  sys_debug_systemjtag_jtag_TDI; // @[Platform.scala 58:19]
+  wire  sys_debug_systemjtag_jtag_TDO_data; // @[Platform.scala 58:19]
+  wire  sys_debug_systemjtag_jtag_TDO_driven; // @[Platform.scala 58:19]
+  wire  sys_debug_systemjtag_reset; // @[Platform.scala 58:19]
+  wire  sys_uart_0_txd; // @[Platform.scala 58:19]
+  wire  sys_uart_0_rxd; // @[Platform.scala 58:19]
+  wire  sys_uart_1_txd; // @[Platform.scala 58:19]
+  wire  sys_uart_1_rxd; // @[Platform.scala 58:19]
+  wire  sys_uart_2_txd; // @[Platform.scala 58:19]
+  wire  sys_uart_2_rxd; // @[Platform.scala 58:19]
+  wire  sys_uart_3_txd; // @[Platform.scala 58:19]
+  wire  sys_uart_3_rxd; // @[Platform.scala 58:19]
+  wire  sys_uart_4_txd; // @[Platform.scala 58:19]
+  wire  sys_uart_4_rxd; // @[Platform.scala 58:19]
+  wire  sys_spi_0_sck; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_0_i; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_0_o; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_0_oe; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_1_i; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_1_o; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_1_oe; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_2_i; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_2_o; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_2_oe; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_3_i; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_3_o; // @[Platform.scala 58:19]
+  wire  sys_spi_0_dq_3_oe; // @[Platform.scala 58:19]
+  wire  sys_spi_0_cs_0; // @[Platform.scala 58:19]
+  wire  sys_spi_0_cs_1; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_0_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_0_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_0_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_0_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_1_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_1_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_1_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_1_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_2_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_2_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_2_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_2_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_3_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_3_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_3_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_3_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_4_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_4_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_4_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_4_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_5_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_5_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_5_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_5_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_6_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_6_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_6_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_7_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_7_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_7_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_8_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_8_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_8_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_9_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_9_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_9_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_10_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_10_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_10_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_11_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_11_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_11_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_12_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_12_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_12_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_12_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_13_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_13_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_13_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_13_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_14_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_14_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_14_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_14_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_15_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_15_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_15_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_15_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_16_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_16_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_16_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_16_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_17_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_17_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_17_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_17_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_18_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_18_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_18_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_18_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_19_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_19_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_19_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_19_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_20_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_20_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_20_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_20_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_21_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_21_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_21_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_21_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_22_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_22_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_22_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_22_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_23_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_23_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_23_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_23_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_24_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_24_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_24_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_24_o_ie; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_25_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_25_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_25_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_26_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_26_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_26_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_27_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_27_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_27_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_28_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_28_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_28_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_29_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_29_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_29_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_30_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_30_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_30_o_oe; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_31_i_ival; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_31_o_oval; // @[Platform.scala 58:19]
+  wire  sys_gpio_0_pins_31_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_0_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_1_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_2_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_2_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_2_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_2_o_ie; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_3_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_3_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_3_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_3_o_ie; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_4_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_4_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_4_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_4_o_ie; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_5_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_5_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_5_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_5_o_ie; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_12_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_12_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_13_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_13_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_14_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_14_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_15_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_15_o_oe; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_16_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_17_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_18_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_19_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_20_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_21_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_22_i_ival; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_23_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_0_24_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_12_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_13_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_14_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_15_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_16_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_17_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_18_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_19_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_20_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_21_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_22_o_oval; // @[Platform.scala 58:19]
+  wire  sys_iof_0_iof_1_23_o_oval; // @[Platform.scala 58:19]
+  wire  sys_pwm_0_gpio_0; // @[Platform.scala 58:19]
+  wire  sys_pwm_0_gpio_1; // @[Platform.scala 58:19]
+  wire  sys_pwm_0_gpio_2; // @[Platform.scala 58:19]
+  wire  sys_pwm_0_gpio_3; // @[Platform.scala 58:19]
+  wire  sys_pwm_1_gpio_0; // @[Platform.scala 58:19]
+  wire  sys_pwm_1_gpio_1; // @[Platform.scala 58:19]
+  wire  sys_pwm_1_gpio_2; // @[Platform.scala 58:19]
+  wire  sys_pwm_1_gpio_3; // @[Platform.scala 58:19]
+  wire  sys_pwm_2_gpio_0; // @[Platform.scala 58:19]
+  wire  sys_pwm_2_gpio_1; // @[Platform.scala 58:19]
+  wire  sys_pwm_2_gpio_2; // @[Platform.scala 58:19]
+  wire  sys_pwm_2_gpio_3; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_sck; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_0_i; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_0_o; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_0_oe; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_1_i; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_1_o; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_1_oe; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_2_i; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_2_o; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_2_oe; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_3_i; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_3_o; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_dq_3_oe; // @[Platform.scala 58:19]
+  wire  sys_qspi_0_cs_0; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_sck; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_0_i; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_0_o; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_0_oe; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_1_i; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_1_o; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_1_oe; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_2_i; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_2_o; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_2_oe; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_3_i; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_3_o; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_dq_3_oe; // @[Platform.scala 58:19]
+  wire  sys_qspi_ram_0_cs_0; // @[Platform.scala 58:19]
+  wire  sys_aon_pins_erst_n_i_ival; // @[Platform.scala 58:19]
+  wire  sys_aon_pins_lfextclk_i_ival; // @[Platform.scala 58:19]
+  wire  sys_aon_rsts_corerst; // @[Platform.scala 58:19]
+  wire  sys_i2c_0_scl_in; // @[Platform.scala 58:19]
+  wire  sys_i2c_0_scl_oe; // @[Platform.scala 58:19]
+  wire  sys_i2c_0_sda_in; // @[Platform.scala 58:19]
+  wire  sys_i2c_0_sda_oe; // @[Platform.scala 58:19]
+  wire  sys_i2c_1_scl_in; // @[Platform.scala 58:19]
+  wire  sys_i2c_1_scl_oe; // @[Platform.scala 58:19]
+  wire  sys_i2c_1_sda_in; // @[Platform.scala 58:19]
+  wire  sys_i2c_1_sda_oe; // @[Platform.scala 58:19]
+  wire  sys_reset_catcher_clock; // @[ResetCatchAndSync.scala 39:28]
+  wire  sys_reset_catcher_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  sys_reset_catcher_io_sync_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  sys_qspi_0_dq_0_i_spi_dq_0_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_0_i_spi_dq_0_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_0_i_spi_dq_0_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_1_i_spi_dq_1_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_1_i_spi_dq_1_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_1_i_spi_dq_1_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_2_i_spi_dq_2_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_2_i_spi_dq_2_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_2_i_spi_dq_2_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_3_i_spi_dq_3_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_3_i_spi_dq_3_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_0_dq_3_i_spi_dq_3_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  sys_uart_0_rxd_uart_rxd_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  sys_uart_0_rxd_uart_rxd_sync_reset; // @[ShiftReg.scala 45:23]
+  wire  sys_uart_0_rxd_uart_rxd_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  sys_uart_0_rxd_uart_rxd_sync_io_q; // @[ShiftReg.scala 45:23]
+  MarmotCaravelSystem sys ( // @[Platform.scala 58:19]
+    .clock(sys_clock),
+    .reset(sys_reset),
+    .debug_clock(sys_debug_clock),
+    .debug_systemjtag_jtag_TCK(sys_debug_systemjtag_jtag_TCK),
+    .debug_systemjtag_jtag_TMS(sys_debug_systemjtag_jtag_TMS),
+    .debug_systemjtag_jtag_TDI(sys_debug_systemjtag_jtag_TDI),
+    .debug_systemjtag_jtag_TDO_data(sys_debug_systemjtag_jtag_TDO_data),
+    .debug_systemjtag_jtag_TDO_driven(sys_debug_systemjtag_jtag_TDO_driven),
+    .debug_systemjtag_reset(sys_debug_systemjtag_reset),
+    .uart_0_txd(sys_uart_0_txd),
+    .uart_0_rxd(sys_uart_0_rxd),
+    .uart_1_txd(sys_uart_1_txd),
+    .uart_1_rxd(sys_uart_1_rxd),
+    .uart_2_txd(sys_uart_2_txd),
+    .uart_2_rxd(sys_uart_2_rxd),
+    .uart_3_txd(sys_uart_3_txd),
+    .uart_3_rxd(sys_uart_3_rxd),
+    .uart_4_txd(sys_uart_4_txd),
+    .uart_4_rxd(sys_uart_4_rxd),
+    .spi_0_sck(sys_spi_0_sck),
+    .spi_0_dq_0_i(sys_spi_0_dq_0_i),
+    .spi_0_dq_0_o(sys_spi_0_dq_0_o),
+    .spi_0_dq_0_oe(sys_spi_0_dq_0_oe),
+    .spi_0_dq_1_i(sys_spi_0_dq_1_i),
+    .spi_0_dq_1_o(sys_spi_0_dq_1_o),
+    .spi_0_dq_1_oe(sys_spi_0_dq_1_oe),
+    .spi_0_dq_2_i(sys_spi_0_dq_2_i),
+    .spi_0_dq_2_o(sys_spi_0_dq_2_o),
+    .spi_0_dq_2_oe(sys_spi_0_dq_2_oe),
+    .spi_0_dq_3_i(sys_spi_0_dq_3_i),
+    .spi_0_dq_3_o(sys_spi_0_dq_3_o),
+    .spi_0_dq_3_oe(sys_spi_0_dq_3_oe),
+    .spi_0_cs_0(sys_spi_0_cs_0),
+    .spi_0_cs_1(sys_spi_0_cs_1),
+    .gpio_0_pins_0_i_ival(sys_gpio_0_pins_0_i_ival),
+    .gpio_0_pins_0_o_oval(sys_gpio_0_pins_0_o_oval),
+    .gpio_0_pins_0_o_oe(sys_gpio_0_pins_0_o_oe),
+    .gpio_0_pins_0_o_ie(sys_gpio_0_pins_0_o_ie),
+    .gpio_0_pins_1_i_ival(sys_gpio_0_pins_1_i_ival),
+    .gpio_0_pins_1_o_oval(sys_gpio_0_pins_1_o_oval),
+    .gpio_0_pins_1_o_oe(sys_gpio_0_pins_1_o_oe),
+    .gpio_0_pins_1_o_ie(sys_gpio_0_pins_1_o_ie),
+    .gpio_0_pins_2_i_ival(sys_gpio_0_pins_2_i_ival),
+    .gpio_0_pins_2_o_oval(sys_gpio_0_pins_2_o_oval),
+    .gpio_0_pins_2_o_oe(sys_gpio_0_pins_2_o_oe),
+    .gpio_0_pins_2_o_ie(sys_gpio_0_pins_2_o_ie),
+    .gpio_0_pins_3_i_ival(sys_gpio_0_pins_3_i_ival),
+    .gpio_0_pins_3_o_oval(sys_gpio_0_pins_3_o_oval),
+    .gpio_0_pins_3_o_oe(sys_gpio_0_pins_3_o_oe),
+    .gpio_0_pins_3_o_ie(sys_gpio_0_pins_3_o_ie),
+    .gpio_0_pins_4_i_ival(sys_gpio_0_pins_4_i_ival),
+    .gpio_0_pins_4_o_oval(sys_gpio_0_pins_4_o_oval),
+    .gpio_0_pins_4_o_oe(sys_gpio_0_pins_4_o_oe),
+    .gpio_0_pins_4_o_ie(sys_gpio_0_pins_4_o_ie),
+    .gpio_0_pins_5_i_ival(sys_gpio_0_pins_5_i_ival),
+    .gpio_0_pins_5_o_oval(sys_gpio_0_pins_5_o_oval),
+    .gpio_0_pins_5_o_oe(sys_gpio_0_pins_5_o_oe),
+    .gpio_0_pins_5_o_ie(sys_gpio_0_pins_5_o_ie),
+    .gpio_0_pins_6_i_ival(sys_gpio_0_pins_6_i_ival),
+    .gpio_0_pins_6_o_oval(sys_gpio_0_pins_6_o_oval),
+    .gpio_0_pins_6_o_oe(sys_gpio_0_pins_6_o_oe),
+    .gpio_0_pins_7_i_ival(sys_gpio_0_pins_7_i_ival),
+    .gpio_0_pins_7_o_oval(sys_gpio_0_pins_7_o_oval),
+    .gpio_0_pins_7_o_oe(sys_gpio_0_pins_7_o_oe),
+    .gpio_0_pins_8_i_ival(sys_gpio_0_pins_8_i_ival),
+    .gpio_0_pins_8_o_oval(sys_gpio_0_pins_8_o_oval),
+    .gpio_0_pins_8_o_oe(sys_gpio_0_pins_8_o_oe),
+    .gpio_0_pins_9_i_ival(sys_gpio_0_pins_9_i_ival),
+    .gpio_0_pins_9_o_oval(sys_gpio_0_pins_9_o_oval),
+    .gpio_0_pins_9_o_oe(sys_gpio_0_pins_9_o_oe),
+    .gpio_0_pins_10_i_ival(sys_gpio_0_pins_10_i_ival),
+    .gpio_0_pins_10_o_oval(sys_gpio_0_pins_10_o_oval),
+    .gpio_0_pins_10_o_oe(sys_gpio_0_pins_10_o_oe),
+    .gpio_0_pins_11_i_ival(sys_gpio_0_pins_11_i_ival),
+    .gpio_0_pins_11_o_oval(sys_gpio_0_pins_11_o_oval),
+    .gpio_0_pins_11_o_oe(sys_gpio_0_pins_11_o_oe),
+    .gpio_0_pins_12_i_ival(sys_gpio_0_pins_12_i_ival),
+    .gpio_0_pins_12_o_oval(sys_gpio_0_pins_12_o_oval),
+    .gpio_0_pins_12_o_oe(sys_gpio_0_pins_12_o_oe),
+    .gpio_0_pins_12_o_ie(sys_gpio_0_pins_12_o_ie),
+    .gpio_0_pins_13_i_ival(sys_gpio_0_pins_13_i_ival),
+    .gpio_0_pins_13_o_oval(sys_gpio_0_pins_13_o_oval),
+    .gpio_0_pins_13_o_oe(sys_gpio_0_pins_13_o_oe),
+    .gpio_0_pins_13_o_ie(sys_gpio_0_pins_13_o_ie),
+    .gpio_0_pins_14_i_ival(sys_gpio_0_pins_14_i_ival),
+    .gpio_0_pins_14_o_oval(sys_gpio_0_pins_14_o_oval),
+    .gpio_0_pins_14_o_oe(sys_gpio_0_pins_14_o_oe),
+    .gpio_0_pins_14_o_ie(sys_gpio_0_pins_14_o_ie),
+    .gpio_0_pins_15_i_ival(sys_gpio_0_pins_15_i_ival),
+    .gpio_0_pins_15_o_oval(sys_gpio_0_pins_15_o_oval),
+    .gpio_0_pins_15_o_oe(sys_gpio_0_pins_15_o_oe),
+    .gpio_0_pins_15_o_ie(sys_gpio_0_pins_15_o_ie),
+    .gpio_0_pins_16_i_ival(sys_gpio_0_pins_16_i_ival),
+    .gpio_0_pins_16_o_oval(sys_gpio_0_pins_16_o_oval),
+    .gpio_0_pins_16_o_oe(sys_gpio_0_pins_16_o_oe),
+    .gpio_0_pins_16_o_ie(sys_gpio_0_pins_16_o_ie),
+    .gpio_0_pins_17_i_ival(sys_gpio_0_pins_17_i_ival),
+    .gpio_0_pins_17_o_oval(sys_gpio_0_pins_17_o_oval),
+    .gpio_0_pins_17_o_oe(sys_gpio_0_pins_17_o_oe),
+    .gpio_0_pins_17_o_ie(sys_gpio_0_pins_17_o_ie),
+    .gpio_0_pins_18_i_ival(sys_gpio_0_pins_18_i_ival),
+    .gpio_0_pins_18_o_oval(sys_gpio_0_pins_18_o_oval),
+    .gpio_0_pins_18_o_oe(sys_gpio_0_pins_18_o_oe),
+    .gpio_0_pins_18_o_ie(sys_gpio_0_pins_18_o_ie),
+    .gpio_0_pins_19_i_ival(sys_gpio_0_pins_19_i_ival),
+    .gpio_0_pins_19_o_oval(sys_gpio_0_pins_19_o_oval),
+    .gpio_0_pins_19_o_oe(sys_gpio_0_pins_19_o_oe),
+    .gpio_0_pins_19_o_ie(sys_gpio_0_pins_19_o_ie),
+    .gpio_0_pins_20_i_ival(sys_gpio_0_pins_20_i_ival),
+    .gpio_0_pins_20_o_oval(sys_gpio_0_pins_20_o_oval),
+    .gpio_0_pins_20_o_oe(sys_gpio_0_pins_20_o_oe),
+    .gpio_0_pins_20_o_ie(sys_gpio_0_pins_20_o_ie),
+    .gpio_0_pins_21_i_ival(sys_gpio_0_pins_21_i_ival),
+    .gpio_0_pins_21_o_oval(sys_gpio_0_pins_21_o_oval),
+    .gpio_0_pins_21_o_oe(sys_gpio_0_pins_21_o_oe),
+    .gpio_0_pins_21_o_ie(sys_gpio_0_pins_21_o_ie),
+    .gpio_0_pins_22_i_ival(sys_gpio_0_pins_22_i_ival),
+    .gpio_0_pins_22_o_oval(sys_gpio_0_pins_22_o_oval),
+    .gpio_0_pins_22_o_oe(sys_gpio_0_pins_22_o_oe),
+    .gpio_0_pins_22_o_ie(sys_gpio_0_pins_22_o_ie),
+    .gpio_0_pins_23_i_ival(sys_gpio_0_pins_23_i_ival),
+    .gpio_0_pins_23_o_oval(sys_gpio_0_pins_23_o_oval),
+    .gpio_0_pins_23_o_oe(sys_gpio_0_pins_23_o_oe),
+    .gpio_0_pins_23_o_ie(sys_gpio_0_pins_23_o_ie),
+    .gpio_0_pins_24_i_ival(sys_gpio_0_pins_24_i_ival),
+    .gpio_0_pins_24_o_oval(sys_gpio_0_pins_24_o_oval),
+    .gpio_0_pins_24_o_oe(sys_gpio_0_pins_24_o_oe),
+    .gpio_0_pins_24_o_ie(sys_gpio_0_pins_24_o_ie),
+    .gpio_0_pins_25_i_ival(sys_gpio_0_pins_25_i_ival),
+    .gpio_0_pins_25_o_oval(sys_gpio_0_pins_25_o_oval),
+    .gpio_0_pins_25_o_oe(sys_gpio_0_pins_25_o_oe),
+    .gpio_0_pins_26_i_ival(sys_gpio_0_pins_26_i_ival),
+    .gpio_0_pins_26_o_oval(sys_gpio_0_pins_26_o_oval),
+    .gpio_0_pins_26_o_oe(sys_gpio_0_pins_26_o_oe),
+    .gpio_0_pins_27_i_ival(sys_gpio_0_pins_27_i_ival),
+    .gpio_0_pins_27_o_oval(sys_gpio_0_pins_27_o_oval),
+    .gpio_0_pins_27_o_oe(sys_gpio_0_pins_27_o_oe),
+    .gpio_0_pins_28_i_ival(sys_gpio_0_pins_28_i_ival),
+    .gpio_0_pins_28_o_oval(sys_gpio_0_pins_28_o_oval),
+    .gpio_0_pins_28_o_oe(sys_gpio_0_pins_28_o_oe),
+    .gpio_0_pins_29_i_ival(sys_gpio_0_pins_29_i_ival),
+    .gpio_0_pins_29_o_oval(sys_gpio_0_pins_29_o_oval),
+    .gpio_0_pins_29_o_oe(sys_gpio_0_pins_29_o_oe),
+    .gpio_0_pins_30_i_ival(sys_gpio_0_pins_30_i_ival),
+    .gpio_0_pins_30_o_oval(sys_gpio_0_pins_30_o_oval),
+    .gpio_0_pins_30_o_oe(sys_gpio_0_pins_30_o_oe),
+    .gpio_0_pins_31_i_ival(sys_gpio_0_pins_31_i_ival),
+    .gpio_0_pins_31_o_oval(sys_gpio_0_pins_31_o_oval),
+    .gpio_0_pins_31_o_oe(sys_gpio_0_pins_31_o_oe),
+    .iof_0_iof_0_0_o_oval(sys_iof_0_iof_0_0_o_oval),
+    .iof_0_iof_0_1_o_oval(sys_iof_0_iof_0_1_o_oval),
+    .iof_0_iof_0_2_i_ival(sys_iof_0_iof_0_2_i_ival),
+    .iof_0_iof_0_2_o_oval(sys_iof_0_iof_0_2_o_oval),
+    .iof_0_iof_0_2_o_oe(sys_iof_0_iof_0_2_o_oe),
+    .iof_0_iof_0_2_o_ie(sys_iof_0_iof_0_2_o_ie),
+    .iof_0_iof_0_3_i_ival(sys_iof_0_iof_0_3_i_ival),
+    .iof_0_iof_0_3_o_oval(sys_iof_0_iof_0_3_o_oval),
+    .iof_0_iof_0_3_o_oe(sys_iof_0_iof_0_3_o_oe),
+    .iof_0_iof_0_3_o_ie(sys_iof_0_iof_0_3_o_ie),
+    .iof_0_iof_0_4_i_ival(sys_iof_0_iof_0_4_i_ival),
+    .iof_0_iof_0_4_o_oval(sys_iof_0_iof_0_4_o_oval),
+    .iof_0_iof_0_4_o_oe(sys_iof_0_iof_0_4_o_oe),
+    .iof_0_iof_0_4_o_ie(sys_iof_0_iof_0_4_o_ie),
+    .iof_0_iof_0_5_i_ival(sys_iof_0_iof_0_5_i_ival),
+    .iof_0_iof_0_5_o_oval(sys_iof_0_iof_0_5_o_oval),
+    .iof_0_iof_0_5_o_oe(sys_iof_0_iof_0_5_o_oe),
+    .iof_0_iof_0_5_o_ie(sys_iof_0_iof_0_5_o_ie),
+    .iof_0_iof_0_12_i_ival(sys_iof_0_iof_0_12_i_ival),
+    .iof_0_iof_0_12_o_oe(sys_iof_0_iof_0_12_o_oe),
+    .iof_0_iof_0_13_i_ival(sys_iof_0_iof_0_13_i_ival),
+    .iof_0_iof_0_13_o_oe(sys_iof_0_iof_0_13_o_oe),
+    .iof_0_iof_0_14_i_ival(sys_iof_0_iof_0_14_i_ival),
+    .iof_0_iof_0_14_o_oe(sys_iof_0_iof_0_14_o_oe),
+    .iof_0_iof_0_15_i_ival(sys_iof_0_iof_0_15_i_ival),
+    .iof_0_iof_0_15_o_oe(sys_iof_0_iof_0_15_o_oe),
+    .iof_0_iof_0_16_i_ival(sys_iof_0_iof_0_16_i_ival),
+    .iof_0_iof_0_17_o_oval(sys_iof_0_iof_0_17_o_oval),
+    .iof_0_iof_0_18_i_ival(sys_iof_0_iof_0_18_i_ival),
+    .iof_0_iof_0_19_o_oval(sys_iof_0_iof_0_19_o_oval),
+    .iof_0_iof_0_20_i_ival(sys_iof_0_iof_0_20_i_ival),
+    .iof_0_iof_0_21_o_oval(sys_iof_0_iof_0_21_o_oval),
+    .iof_0_iof_0_22_i_ival(sys_iof_0_iof_0_22_i_ival),
+    .iof_0_iof_0_23_o_oval(sys_iof_0_iof_0_23_o_oval),
+    .iof_0_iof_0_24_o_oval(sys_iof_0_iof_0_24_o_oval),
+    .iof_0_iof_1_12_o_oval(sys_iof_0_iof_1_12_o_oval),
+    .iof_0_iof_1_13_o_oval(sys_iof_0_iof_1_13_o_oval),
+    .iof_0_iof_1_14_o_oval(sys_iof_0_iof_1_14_o_oval),
+    .iof_0_iof_1_15_o_oval(sys_iof_0_iof_1_15_o_oval),
+    .iof_0_iof_1_16_o_oval(sys_iof_0_iof_1_16_o_oval),
+    .iof_0_iof_1_17_o_oval(sys_iof_0_iof_1_17_o_oval),
+    .iof_0_iof_1_18_o_oval(sys_iof_0_iof_1_18_o_oval),
+    .iof_0_iof_1_19_o_oval(sys_iof_0_iof_1_19_o_oval),
+    .iof_0_iof_1_20_o_oval(sys_iof_0_iof_1_20_o_oval),
+    .iof_0_iof_1_21_o_oval(sys_iof_0_iof_1_21_o_oval),
+    .iof_0_iof_1_22_o_oval(sys_iof_0_iof_1_22_o_oval),
+    .iof_0_iof_1_23_o_oval(sys_iof_0_iof_1_23_o_oval),
+    .pwm_0_gpio_0(sys_pwm_0_gpio_0),
+    .pwm_0_gpio_1(sys_pwm_0_gpio_1),
+    .pwm_0_gpio_2(sys_pwm_0_gpio_2),
+    .pwm_0_gpio_3(sys_pwm_0_gpio_3),
+    .pwm_1_gpio_0(sys_pwm_1_gpio_0),
+    .pwm_1_gpio_1(sys_pwm_1_gpio_1),
+    .pwm_1_gpio_2(sys_pwm_1_gpio_2),
+    .pwm_1_gpio_3(sys_pwm_1_gpio_3),
+    .pwm_2_gpio_0(sys_pwm_2_gpio_0),
+    .pwm_2_gpio_1(sys_pwm_2_gpio_1),
+    .pwm_2_gpio_2(sys_pwm_2_gpio_2),
+    .pwm_2_gpio_3(sys_pwm_2_gpio_3),
+    .qspi_0_sck(sys_qspi_0_sck),
+    .qspi_0_dq_0_i(sys_qspi_0_dq_0_i),
+    .qspi_0_dq_0_o(sys_qspi_0_dq_0_o),
+    .qspi_0_dq_0_oe(sys_qspi_0_dq_0_oe),
+    .qspi_0_dq_1_i(sys_qspi_0_dq_1_i),
+    .qspi_0_dq_1_o(sys_qspi_0_dq_1_o),
+    .qspi_0_dq_1_oe(sys_qspi_0_dq_1_oe),
+    .qspi_0_dq_2_i(sys_qspi_0_dq_2_i),
+    .qspi_0_dq_2_o(sys_qspi_0_dq_2_o),
+    .qspi_0_dq_2_oe(sys_qspi_0_dq_2_oe),
+    .qspi_0_dq_3_i(sys_qspi_0_dq_3_i),
+    .qspi_0_dq_3_o(sys_qspi_0_dq_3_o),
+    .qspi_0_dq_3_oe(sys_qspi_0_dq_3_oe),
+    .qspi_0_cs_0(sys_qspi_0_cs_0),
+    .qspi_ram_0_sck(sys_qspi_ram_0_sck),
+    .qspi_ram_0_dq_0_i(sys_qspi_ram_0_dq_0_i),
+    .qspi_ram_0_dq_0_o(sys_qspi_ram_0_dq_0_o),
+    .qspi_ram_0_dq_0_oe(sys_qspi_ram_0_dq_0_oe),
+    .qspi_ram_0_dq_1_i(sys_qspi_ram_0_dq_1_i),
+    .qspi_ram_0_dq_1_o(sys_qspi_ram_0_dq_1_o),
+    .qspi_ram_0_dq_1_oe(sys_qspi_ram_0_dq_1_oe),
+    .qspi_ram_0_dq_2_i(sys_qspi_ram_0_dq_2_i),
+    .qspi_ram_0_dq_2_o(sys_qspi_ram_0_dq_2_o),
+    .qspi_ram_0_dq_2_oe(sys_qspi_ram_0_dq_2_oe),
+    .qspi_ram_0_dq_3_i(sys_qspi_ram_0_dq_3_i),
+    .qspi_ram_0_dq_3_o(sys_qspi_ram_0_dq_3_o),
+    .qspi_ram_0_dq_3_oe(sys_qspi_ram_0_dq_3_oe),
+    .qspi_ram_0_cs_0(sys_qspi_ram_0_cs_0),
+    .aon_pins_erst_n_i_ival(sys_aon_pins_erst_n_i_ival),
+    .aon_pins_lfextclk_i_ival(sys_aon_pins_lfextclk_i_ival),
+    .aon_rsts_corerst(sys_aon_rsts_corerst),
+    .i2c_0_scl_in(sys_i2c_0_scl_in),
+    .i2c_0_scl_oe(sys_i2c_0_scl_oe),
+    .i2c_0_sda_in(sys_i2c_0_sda_in),
+    .i2c_0_sda_oe(sys_i2c_0_sda_oe),
+    .i2c_1_scl_in(sys_i2c_1_scl_in),
+    .i2c_1_scl_oe(sys_i2c_1_scl_oe),
+    .i2c_1_sda_in(sys_i2c_1_sda_in),
+    .i2c_1_sda_oe(sys_i2c_1_sda_oe), // <no_sram>
+    .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr), // <no_sram>
+    .tag_array_ext_RW0_en(tag_array_ext_RW0_en), // <no_sram>
+    .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk), // <no_sram>
+    .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode), // <no_sram>
+    .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata), // <no_sram>
+    .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask), // <no_sram>
+    .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+    .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+    .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+    .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+    .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+    .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+    .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask), // <no_sram>
+    .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+  );
+  ResetCatchAndSync_d20 sys_reset_catcher ( // @[ResetCatchAndSync.scala 39:28]
+    .clock(sys_reset_catcher_clock),
+    .reset(sys_reset_catcher_reset),
+    .io_sync_reset(sys_reset_catcher_io_sync_reset)
+  );
+  SynchronizerShiftReg_w1_d3 sys_qspi_0_dq_0_i_spi_dq_0_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_qspi_0_dq_0_i_spi_dq_0_sync_clock),
+    .io_d(sys_qspi_0_dq_0_i_spi_dq_0_sync_io_d),
+    .io_q(sys_qspi_0_dq_0_i_spi_dq_0_sync_io_q)
+  );
+  SynchronizerShiftReg_w1_d3 sys_qspi_0_dq_1_i_spi_dq_1_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_qspi_0_dq_1_i_spi_dq_1_sync_clock),
+    .io_d(sys_qspi_0_dq_1_i_spi_dq_1_sync_io_d),
+    .io_q(sys_qspi_0_dq_1_i_spi_dq_1_sync_io_q)
+  );
+  SynchronizerShiftReg_w1_d3 sys_qspi_0_dq_2_i_spi_dq_2_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_qspi_0_dq_2_i_spi_dq_2_sync_clock),
+    .io_d(sys_qspi_0_dq_2_i_spi_dq_2_sync_io_d),
+    .io_q(sys_qspi_0_dq_2_i_spi_dq_2_sync_io_q)
+  );
+  SynchronizerShiftReg_w1_d3 sys_qspi_0_dq_3_i_spi_dq_3_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_qspi_0_dq_3_i_spi_dq_3_sync_clock),
+    .io_d(sys_qspi_0_dq_3_i_spi_dq_3_sync_io_d),
+    .io_q(sys_qspi_0_dq_3_i_spi_dq_3_sync_io_q)
+  );
+  SynchronizerShiftReg_w1_d3 sys_qspi_ram_0_dq_0_i_spi_dq_0_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_clock),
+    .io_d(sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_io_d),
+    .io_q(sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_io_q)
+  );
+  SynchronizerShiftReg_w1_d3 sys_qspi_ram_0_dq_1_i_spi_dq_1_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_clock),
+    .io_d(sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_io_d),
+    .io_q(sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_io_q)
+  );
+  SynchronizerShiftReg_w1_d3 sys_qspi_ram_0_dq_2_i_spi_dq_2_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_clock),
+    .io_d(sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_io_d),
+    .io_q(sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_io_q)
+  );
+  SynchronizerShiftReg_w1_d3 sys_qspi_ram_0_dq_3_i_spi_dq_3_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_clock),
+    .io_d(sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_io_d),
+    .io_q(sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_io_q)
+  );
+  SyncResetSynchronizerShiftReg_w1_d3_i1 sys_uart_0_rxd_uart_rxd_sync ( // @[ShiftReg.scala 45:23]
+    .clock(sys_uart_0_rxd_uart_rxd_sync_clock),
+    .reset(sys_uart_0_rxd_uart_rxd_sync_reset),
+    .io_d(sys_uart_0_rxd_uart_rxd_sync_io_d),
+    .io_q(sys_uart_0_rxd_uart_rxd_sync_io_q)
+  );
+  assign io_pins_jtag_TDO_o_oval = sys_debug_systemjtag_jtag_TDO_data; // @[PinCtrl.scala 60:17]
+  assign io_pins_jtag_TDO_o_oe = sys_debug_systemjtag_jtag_TDO_driven; // @[JTAGPins.scala 35:19]
+  assign io_pins_gpio_pins_0_o_oval = sys_gpio_0_pins_0_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_0_o_oe = sys_gpio_0_pins_0_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_0_o_ie = sys_gpio_0_pins_0_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_1_o_oval = sys_gpio_0_pins_1_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_1_o_oe = sys_gpio_0_pins_1_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_1_o_ie = sys_gpio_0_pins_1_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_2_o_oval = sys_gpio_0_pins_2_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_2_o_oe = sys_gpio_0_pins_2_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_2_o_ie = sys_gpio_0_pins_2_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_3_o_oval = sys_gpio_0_pins_3_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_3_o_oe = sys_gpio_0_pins_3_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_3_o_ie = sys_gpio_0_pins_3_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_4_o_oval = sys_gpio_0_pins_4_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_4_o_oe = sys_gpio_0_pins_4_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_4_o_ie = sys_gpio_0_pins_4_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_5_o_oval = sys_gpio_0_pins_5_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_5_o_oe = sys_gpio_0_pins_5_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_5_o_ie = sys_gpio_0_pins_5_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_6_o_oval = sys_gpio_0_pins_6_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_6_o_oe = sys_gpio_0_pins_6_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_7_o_oval = sys_gpio_0_pins_7_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_7_o_oe = sys_gpio_0_pins_7_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_8_o_oval = sys_gpio_0_pins_8_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_8_o_oe = sys_gpio_0_pins_8_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_9_o_oval = sys_gpio_0_pins_9_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_9_o_oe = sys_gpio_0_pins_9_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_10_o_oval = sys_gpio_0_pins_10_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_10_o_oe = sys_gpio_0_pins_10_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_11_o_oval = sys_gpio_0_pins_11_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_11_o_oe = sys_gpio_0_pins_11_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_12_o_oval = sys_gpio_0_pins_12_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_12_o_oe = sys_gpio_0_pins_12_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_12_o_ie = sys_gpio_0_pins_12_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_13_o_oval = sys_gpio_0_pins_13_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_13_o_oe = sys_gpio_0_pins_13_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_13_o_ie = sys_gpio_0_pins_13_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_14_o_oval = sys_gpio_0_pins_14_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_14_o_oe = sys_gpio_0_pins_14_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_14_o_ie = sys_gpio_0_pins_14_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_15_o_oval = sys_gpio_0_pins_15_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_15_o_oe = sys_gpio_0_pins_15_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_15_o_ie = sys_gpio_0_pins_15_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_16_o_oval = sys_gpio_0_pins_16_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_16_o_oe = sys_gpio_0_pins_16_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_16_o_ie = sys_gpio_0_pins_16_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_17_o_oval = sys_gpio_0_pins_17_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_17_o_oe = sys_gpio_0_pins_17_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_17_o_ie = sys_gpio_0_pins_17_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_18_o_oval = sys_gpio_0_pins_18_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_18_o_oe = sys_gpio_0_pins_18_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_18_o_ie = sys_gpio_0_pins_18_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_19_o_oval = sys_gpio_0_pins_19_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_19_o_oe = sys_gpio_0_pins_19_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_19_o_ie = sys_gpio_0_pins_19_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_20_o_oval = sys_gpio_0_pins_20_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_20_o_oe = sys_gpio_0_pins_20_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_20_o_ie = sys_gpio_0_pins_20_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_21_o_oval = sys_gpio_0_pins_21_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_21_o_oe = sys_gpio_0_pins_21_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_21_o_ie = sys_gpio_0_pins_21_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_22_o_oval = sys_gpio_0_pins_22_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_22_o_oe = sys_gpio_0_pins_22_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_22_o_ie = sys_gpio_0_pins_22_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_23_o_oval = sys_gpio_0_pins_23_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_23_o_oe = sys_gpio_0_pins_23_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_23_o_ie = sys_gpio_0_pins_23_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_24_o_oval = sys_gpio_0_pins_24_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_24_o_oe = sys_gpio_0_pins_24_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_24_o_ie = sys_gpio_0_pins_24_o_ie; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_25_o_oval = sys_gpio_0_pins_25_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_25_o_oe = sys_gpio_0_pins_25_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_26_o_oval = sys_gpio_0_pins_26_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_26_o_oe = sys_gpio_0_pins_26_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_27_o_oval = sys_gpio_0_pins_27_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_27_o_oe = sys_gpio_0_pins_27_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_28_o_oval = sys_gpio_0_pins_28_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_28_o_oe = sys_gpio_0_pins_28_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_29_o_oval = sys_gpio_0_pins_29_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_29_o_oe = sys_gpio_0_pins_29_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_30_o_oval = sys_gpio_0_pins_30_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_30_o_oe = sys_gpio_0_pins_30_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_31_o_oval = sys_gpio_0_pins_31_o_oval; // @[GPIOPins.scala 38:11]
+  assign io_pins_gpio_pins_31_o_oe = sys_gpio_0_pins_31_o_oe; // @[GPIOPins.scala 38:11]
+  assign io_pins_qspi_sck_o_oval = sys_qspi_0_sck; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_dq_0_o_oval = sys_qspi_0_dq_0_o; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_dq_0_o_oe = sys_qspi_0_dq_0_oe; // @[SPIPins.scala 29:16]
+  assign io_pins_qspi_dq_0_o_ie = ~sys_qspi_0_dq_0_oe; // @[SPIPins.scala 30:19]
+  assign io_pins_qspi_dq_1_o_oval = sys_qspi_0_dq_1_o; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_dq_1_o_oe = sys_qspi_0_dq_1_oe; // @[SPIPins.scala 29:16]
+  assign io_pins_qspi_dq_1_o_ie = ~sys_qspi_0_dq_1_oe; // @[SPIPins.scala 30:19]
+  assign io_pins_qspi_dq_2_o_oval = sys_qspi_0_dq_2_o; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_dq_2_o_oe = sys_qspi_0_dq_2_oe; // @[SPIPins.scala 29:16]
+  assign io_pins_qspi_dq_2_o_ie = ~sys_qspi_0_dq_2_oe; // @[SPIPins.scala 30:19]
+  assign io_pins_qspi_dq_3_o_oval = sys_qspi_0_dq_3_o; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_dq_3_o_oe = sys_qspi_0_dq_3_oe; // @[SPIPins.scala 29:16]
+  assign io_pins_qspi_dq_3_o_ie = ~sys_qspi_0_dq_3_oe; // @[SPIPins.scala 30:19]
+  assign io_pins_qspi_cs_0_o_oval = sys_qspi_0_cs_0; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_ram_sck_o_oval = sys_qspi_ram_0_sck; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_ram_dq_0_o_oval = sys_qspi_ram_0_dq_0_o; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_ram_dq_0_o_oe = sys_qspi_ram_0_dq_0_oe; // @[SPIPins.scala 29:16]
+  assign io_pins_qspi_ram_dq_0_o_ie = ~sys_qspi_ram_0_dq_0_oe; // @[SPIPins.scala 30:19]
+  assign io_pins_qspi_ram_dq_1_o_oval = sys_qspi_ram_0_dq_1_o; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_ram_dq_1_o_oe = sys_qspi_ram_0_dq_1_oe; // @[SPIPins.scala 29:16]
+  assign io_pins_qspi_ram_dq_1_o_ie = ~sys_qspi_ram_0_dq_1_oe; // @[SPIPins.scala 30:19]
+  assign io_pins_qspi_ram_dq_2_o_oval = sys_qspi_ram_0_dq_2_o; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_ram_dq_2_o_oe = sys_qspi_ram_0_dq_2_oe; // @[SPIPins.scala 29:16]
+  assign io_pins_qspi_ram_dq_2_o_ie = ~sys_qspi_ram_0_dq_2_oe; // @[SPIPins.scala 30:19]
+  assign io_pins_qspi_ram_dq_3_o_oval = sys_qspi_ram_0_dq_3_o; // @[PinCtrl.scala 60:17]
+  assign io_pins_qspi_ram_dq_3_o_oe = sys_qspi_ram_0_dq_3_oe; // @[SPIPins.scala 29:16]
+  assign io_pins_qspi_ram_dq_3_o_ie = ~sys_qspi_ram_0_dq_3_oe; // @[SPIPins.scala 30:19]
+  assign io_pins_qspi_ram_cs_0_o_oval = sys_qspi_ram_0_cs_0; // @[PinCtrl.scala 60:17]
+  assign io_pins_uart_txd_o_oval = sys_uart_0_txd; // @[PinCtrl.scala 60:17]
+  assign sys_clock = clock;
+  assign sys_reset = sys_reset_catcher_io_sync_reset; // @[Platform.scala 64:13]
+  assign sys_debug_clock = sys_clock; // @[Platform.scala 189:23]
+  assign sys_debug_systemjtag_jtag_TCK = io_pins_jtag_TCK_i_ival; // @[JTAGPins.scala 29:55]
+  assign sys_debug_systemjtag_jtag_TMS = io_pins_jtag_TMS_i_ival; // @[JTAGPins.scala 30:15]
+  assign sys_debug_systemjtag_jtag_TDI = io_pins_jtag_TDI_i_ival; // @[JTAGPins.scala 31:15]
+  assign sys_debug_systemjtag_reset = io_jtag_reset; // @[Platform.scala 184:15]
+  assign sys_uart_0_rxd = sys_uart_0_rxd_uart_rxd_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_uart_1_rxd = sys_iof_0_iof_0_16_i_ival; // @[Platform.scala 84:54 IOF.scala 61:9]
+  assign sys_uart_2_rxd = sys_iof_0_iof_0_18_i_ival; // @[Platform.scala 84:54 IOF.scala 61:9]
+  assign sys_uart_3_rxd = sys_iof_0_iof_0_20_i_ival; // @[Platform.scala 84:54 IOF.scala 61:9]
+  assign sys_uart_4_rxd = sys_iof_0_iof_0_22_i_ival; // @[Platform.scala 84:54 IOF.scala 61:9]
+  assign sys_spi_0_dq_0_i = sys_iof_0_iof_0_2_i_ival; // @[Platform.scala 86:54 IOF.scala 61:9]
+  assign sys_spi_0_dq_1_i = sys_iof_0_iof_0_3_i_ival; // @[Platform.scala 86:54 IOF.scala 61:9]
+  assign sys_spi_0_dq_2_i = sys_iof_0_iof_0_4_i_ival; // @[Platform.scala 86:54 IOF.scala 61:9]
+  assign sys_spi_0_dq_3_i = sys_iof_0_iof_0_5_i_ival; // @[Platform.scala 86:54 IOF.scala 61:9]
+  assign sys_gpio_0_pins_0_i_ival = io_pins_gpio_pins_0_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_1_i_ival = io_pins_gpio_pins_1_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_2_i_ival = io_pins_gpio_pins_2_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_3_i_ival = io_pins_gpio_pins_3_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_4_i_ival = io_pins_gpio_pins_4_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_5_i_ival = io_pins_gpio_pins_5_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_6_i_ival = io_pins_gpio_pins_6_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_7_i_ival = io_pins_gpio_pins_7_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_8_i_ival = io_pins_gpio_pins_8_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_9_i_ival = io_pins_gpio_pins_9_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_10_i_ival = io_pins_gpio_pins_10_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_11_i_ival = io_pins_gpio_pins_11_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_12_i_ival = io_pins_gpio_pins_12_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_13_i_ival = io_pins_gpio_pins_13_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_14_i_ival = io_pins_gpio_pins_14_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_15_i_ival = io_pins_gpio_pins_15_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_16_i_ival = io_pins_gpio_pins_16_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_17_i_ival = io_pins_gpio_pins_17_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_18_i_ival = io_pins_gpio_pins_18_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_19_i_ival = io_pins_gpio_pins_19_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_20_i_ival = io_pins_gpio_pins_20_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_21_i_ival = io_pins_gpio_pins_21_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_22_i_ival = io_pins_gpio_pins_22_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_23_i_ival = io_pins_gpio_pins_23_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_24_i_ival = io_pins_gpio_pins_24_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_25_i_ival = io_pins_gpio_pins_25_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_26_i_ival = io_pins_gpio_pins_26_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_27_i_ival = io_pins_gpio_pins_27_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_28_i_ival = io_pins_gpio_pins_28_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_29_i_ival = io_pins_gpio_pins_29_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_30_i_ival = io_pins_gpio_pins_30_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_gpio_0_pins_31_i_ival = io_pins_gpio_pins_31_i_ival; // @[GPIOPins.scala 38:11]
+  assign sys_iof_0_iof_0_0_o_oval = sys_spi_0_cs_0; // @[PinCtrl.scala 60:17 Platform.scala 86:54]
+  assign sys_iof_0_iof_0_1_o_oval = sys_spi_0_sck; // @[PinCtrl.scala 60:17 Platform.scala 86:54]
+  assign sys_iof_0_iof_0_2_o_oval = sys_spi_0_dq_0_o; // @[PinCtrl.scala 60:17 Platform.scala 86:54]
+  assign sys_iof_0_iof_0_2_o_oe = sys_spi_0_dq_0_oe; // @[Platform.scala 86:54 SPIPins.scala 29:16]
+  assign sys_iof_0_iof_0_2_o_ie = ~sys_spi_0_dq_0_oe; // @[SPIPins.scala 30:19]
+  assign sys_iof_0_iof_0_3_o_oval = sys_spi_0_dq_1_o; // @[PinCtrl.scala 60:17 Platform.scala 86:54]
+  assign sys_iof_0_iof_0_3_o_oe = sys_spi_0_dq_1_oe; // @[Platform.scala 86:54 SPIPins.scala 29:16]
+  assign sys_iof_0_iof_0_3_o_ie = ~sys_spi_0_dq_1_oe; // @[SPIPins.scala 30:19]
+  assign sys_iof_0_iof_0_4_o_oval = sys_spi_0_dq_2_o; // @[PinCtrl.scala 60:17 Platform.scala 86:54]
+  assign sys_iof_0_iof_0_4_o_oe = sys_spi_0_dq_2_oe; // @[Platform.scala 86:54 SPIPins.scala 29:16]
+  assign sys_iof_0_iof_0_4_o_ie = ~sys_spi_0_dq_2_oe; // @[SPIPins.scala 30:19]
+  assign sys_iof_0_iof_0_5_o_oval = sys_spi_0_dq_3_o; // @[PinCtrl.scala 60:17 Platform.scala 86:54]
+  assign sys_iof_0_iof_0_5_o_oe = sys_spi_0_dq_3_oe; // @[Platform.scala 86:54 SPIPins.scala 29:16]
+  assign sys_iof_0_iof_0_5_o_ie = ~sys_spi_0_dq_3_oe; // @[SPIPins.scala 30:19]
+  assign sys_iof_0_iof_0_12_o_oe = sys_i2c_0_sda_oe; // @[I2CPins.scala 27:21 Platform.scala 87:54]
+  assign sys_iof_0_iof_0_13_o_oe = sys_i2c_0_scl_oe; // @[I2CPins.scala 22:21 Platform.scala 87:54]
+  assign sys_iof_0_iof_0_14_o_oe = sys_i2c_1_sda_oe; // @[I2CPins.scala 27:21 Platform.scala 87:54]
+  assign sys_iof_0_iof_0_15_o_oe = sys_i2c_1_scl_oe; // @[I2CPins.scala 22:21 Platform.scala 87:54]
+  assign sys_iof_0_iof_0_17_o_oval = sys_uart_1_txd; // @[PinCtrl.scala 60:17 Platform.scala 84:54]
+  assign sys_iof_0_iof_0_19_o_oval = sys_uart_2_txd; // @[PinCtrl.scala 60:17 Platform.scala 84:54]
+  assign sys_iof_0_iof_0_21_o_oval = sys_uart_3_txd; // @[PinCtrl.scala 60:17 Platform.scala 84:54]
+  assign sys_iof_0_iof_0_23_o_oval = sys_uart_4_txd; // @[PinCtrl.scala 60:17 Platform.scala 84:54]
+  assign sys_iof_0_iof_0_24_o_oval = sys_spi_0_cs_1; // @[PinCtrl.scala 60:17 Platform.scala 86:54]
+  assign sys_iof_0_iof_1_12_o_oval = sys_pwm_0_gpio_0; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_13_o_oval = sys_pwm_0_gpio_1; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_14_o_oval = sys_pwm_0_gpio_2; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_15_o_oval = sys_pwm_0_gpio_3; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_16_o_oval = sys_pwm_1_gpio_0; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_17_o_oval = sys_pwm_1_gpio_1; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_18_o_oval = sys_pwm_1_gpio_2; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_19_o_oval = sys_pwm_1_gpio_3; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_20_o_oval = sys_pwm_2_gpio_0; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_21_o_oval = sys_pwm_2_gpio_1; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_22_o_oval = sys_pwm_2_gpio_2; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_iof_0_iof_1_23_o_oval = sys_pwm_2_gpio_3; // @[PinCtrl.scala 60:17 Platform.scala 85:54]
+  assign sys_qspi_0_dq_0_i = sys_qspi_0_dq_0_i_spi_dq_0_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_qspi_0_dq_1_i = sys_qspi_0_dq_1_i_spi_dq_1_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_qspi_0_dq_2_i = sys_qspi_0_dq_2_i_spi_dq_2_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_qspi_0_dq_3_i = sys_qspi_0_dq_3_i_spi_dq_3_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_qspi_ram_0_dq_0_i = sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_qspi_ram_0_dq_1_i = sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_qspi_ram_0_dq_2_i = sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_qspi_ram_0_dq_3_i = sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign sys_aon_pins_erst_n_i_ival = io_pins_aon_erst_n_i_ival; // @[Platform.scala 194:15]
+  assign sys_aon_pins_lfextclk_i_ival = io_pins_aon_lfextclk_i_ival; // @[Platform.scala 194:15]
+  assign sys_i2c_0_scl_in = sys_iof_0_iof_0_13_i_ival; // @[Platform.scala 87:54 IOF.scala 61:9]
+  assign sys_i2c_0_sda_in = sys_iof_0_iof_0_12_i_ival; // @[Platform.scala 87:54 IOF.scala 61:9]
+  assign sys_i2c_1_scl_in = sys_iof_0_iof_0_15_i_ival; // @[Platform.scala 87:54 IOF.scala 61:9]
+  assign sys_i2c_1_sda_in = sys_iof_0_iof_0_14_i_ival; // @[Platform.scala 87:54 IOF.scala 61:9]
+  assign sys_reset_catcher_clock = clock;
+  assign sys_reset_catcher_reset = sys_aon_rsts_corerst;
+  assign sys_qspi_0_dq_0_i_spi_dq_0_sync_clock = sys_clock;
+  assign sys_qspi_0_dq_0_i_spi_dq_0_sync_io_d = io_pins_qspi_dq_0_i_ival; // @[ShiftReg.scala 47:16]
+  assign sys_qspi_0_dq_1_i_spi_dq_1_sync_clock = sys_clock;
+  assign sys_qspi_0_dq_1_i_spi_dq_1_sync_io_d = io_pins_qspi_dq_1_i_ival; // @[ShiftReg.scala 47:16]
+  assign sys_qspi_0_dq_2_i_spi_dq_2_sync_clock = sys_clock;
+  assign sys_qspi_0_dq_2_i_spi_dq_2_sync_io_d = io_pins_qspi_dq_2_i_ival; // @[ShiftReg.scala 47:16]
+  assign sys_qspi_0_dq_3_i_spi_dq_3_sync_clock = sys_clock;
+  assign sys_qspi_0_dq_3_i_spi_dq_3_sync_io_d = io_pins_qspi_dq_3_i_ival; // @[ShiftReg.scala 47:16]
+  assign sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_clock = sys_clock;
+  assign sys_qspi_ram_0_dq_0_i_spi_dq_0_sync_io_d = io_pins_qspi_ram_dq_0_i_ival; // @[ShiftReg.scala 47:16]
+  assign sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_clock = sys_clock;
+  assign sys_qspi_ram_0_dq_1_i_spi_dq_1_sync_io_d = io_pins_qspi_ram_dq_1_i_ival; // @[ShiftReg.scala 47:16]
+  assign sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_clock = sys_clock;
+  assign sys_qspi_ram_0_dq_2_i_spi_dq_2_sync_io_d = io_pins_qspi_ram_dq_2_i_ival; // @[ShiftReg.scala 47:16]
+  assign sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_clock = sys_clock;
+  assign sys_qspi_ram_0_dq_3_i_spi_dq_3_sync_io_d = io_pins_qspi_ram_dq_3_i_ival; // @[ShiftReg.scala 47:16]
+  assign sys_uart_0_rxd_uart_rxd_sync_clock = sys_clock;
+  assign sys_uart_0_rxd_uart_rxd_sync_reset = sys_reset; // @[compatibility.scala 290:56]
+  assign sys_uart_0_rxd_uart_rxd_sync_io_d = io_pins_uart_rxd_i_ival; // @[ShiftReg.scala 47:16]
+endmodule
+module MarmotCaravelChip(
+  input   clk,
+  input   rst_n,
+  input   io_in_0,
+  input   io_in_1,
+  input   io_in_2,
+  input   io_in_3,
+  input   io_in_4,
+  input   io_in_5,
+  input   io_in_6,
+  input   io_in_7,
+  input   io_in_8,
+  input   io_in_9,
+  input   io_in_10,
+  input   io_in_11,
+  input   io_in_12,
+  input   io_in_13,
+  input   io_in_14,
+  input   io_in_15,
+  input   io_in_16,
+  input   io_in_17,
+  input   io_in_18,
+  input   io_in_19,
+  input   io_in_20,
+  input   io_in_21,
+  input   io_in_22,
+  input   io_in_23,
+  input   io_in_24,
+  input   io_in_25,
+  input   io_in_26,
+  input   io_in_27,
+  input   io_in_28,
+  input   io_in_29,
+  input   io_in_30,
+  input   io_in_31,
+  input   io_in_32,
+  input   io_in_33,
+  input   io_in_34,
+  input   io_in_35,
+  input   io_in_36,
+  input   io_in_37,
+  output  io_out_0,
+  output  io_out_1,
+  output  io_out_2,
+  output  io_out_3,
+  output  io_out_4,
+  output  io_out_5,
+  output  io_out_6,
+  output  io_out_7,
+  output  io_out_8,
+  output  io_out_9,
+  output  io_out_10,
+  output  io_out_11,
+  output  io_out_12,
+  output  io_out_13,
+  output  io_out_14,
+  output  io_out_15,
+  output  io_out_16,
+  output  io_out_17,
+  output  io_out_18,
+  output  io_out_19,
+  output  io_out_20,
+  output  io_out_21,
+  output  io_out_22,
+  output  io_out_23,
+  output  io_out_24,
+  output  io_out_25,
+  output  io_out_26,
+  output  io_out_27,
+  output  io_out_28,
+  output  io_out_29,
+  output  io_out_30,
+  output  io_out_31,
+  output  io_out_32,
+  output  io_out_33,
+  output  io_out_34,
+  output  io_out_35,
+  output  io_out_36,
+  output  io_out_37,
+  output  io_oeb_0,
+  output  io_oeb_1,
+  output  io_oeb_2,
+  output  io_oeb_3,
+  output  io_oeb_4,
+  output  io_oeb_5,
+  output  io_oeb_6,
+  output  io_oeb_7,
+  output  io_oeb_8,
+  output  io_oeb_9,
+  output  io_oeb_10,
+  output  io_oeb_11,
+  output  io_oeb_12,
+  output  io_oeb_13,
+  output  io_oeb_14,
+  output  io_oeb_15,
+  output  io_oeb_16,
+  output  io_oeb_17,
+  output  io_oeb_18,
+  output  io_oeb_19,
+  output  io_oeb_20,
+  output  io_oeb_21,
+  output  io_oeb_22,
+  output  io_oeb_23,
+  output  io_oeb_24,
+  output  io_oeb_25,
+  output  io_oeb_26,
+  output  io_oeb_27,
+  output  io_oeb_28,
+  output  io_oeb_29,
+  output  io_oeb_30,
+  output  io_oeb_31,
+  output  io_oeb_32,
+  output  io_oeb_33,
+  output  io_oeb_34,
+  output  io_oeb_35,
+  output  io_oeb_36,
+  output  io_oeb_37,
+  output  gpio_out_0,
+  output  gpio_out_1,
+  output  gpio_out_2,
+  output  gpio_out_3,
+  output  gpio_out_4,
+  output  gpio_out_5,
+  output  gpio_out_6,
+  output  gpio_out_7,
+  output  gpio_out_8,
+  output  gpio_out_9,
+  output  gpio_out_10,
+  output  gpio_out_11,
+  output  gpio_out_12,
+  output  gpio_out_13,
+  output  gpio_out_14,
+  output  gpio_out_15,
+  output  gpio_out_16,
+  output  gpio_out_17,
+  output  gpio_out_18,
+  output  gpio_out_19,
+  output  gpio_out_20,
+  output  gpio_out_21,
+  output  gpio_out_22,
+  output  gpio_out_23,
+  output  gpio_out_24,
+  output  gpio_out_25,
+  output  gpio_out_26,
+  output  gpio_out_27,
+  output  gpio_out_28,
+  output  gpio_out_29,
+  output  gpio_out_30,
+  output  gpio_out_31,
+  input   gpio_in_0,
+  input   gpio_in_1,
+  input   gpio_in_2,
+  input   gpio_in_3,
+  input   gpio_in_4,
+  input   gpio_in_5,
+  input   gpio_in_6,
+  input   gpio_in_7,
+  input   gpio_in_8,
+  input   gpio_in_9,
+  input   gpio_in_10,
+  input   gpio_in_11,
+  input   gpio_in_12,
+  input   gpio_in_13,
+  input   gpio_in_14,
+  input   gpio_in_15,
+  input   gpio_in_16,
+  input   gpio_in_17,
+  input   gpio_in_18,
+  input   gpio_in_19,
+  input   gpio_in_20,
+  input   gpio_in_21,
+  input   gpio_in_22,
+  input   gpio_in_23,
+  input   gpio_in_24,
+  input   gpio_in_25,
+  input   gpio_in_26,
+  input   gpio_in_27,
+  input   gpio_in_28,
+  input   gpio_in_29,
+  input   gpio_in_30,
+  input   gpio_in_31, // <no_sram>
+  output [5:0]  tag_array_ext_RW0_addr, // <no_sram>
+  output        tag_array_ext_RW0_en, // <no_sram>
+  output        tag_array_ext_RW0_clk, // <no_sram>
+  output        tag_array_ext_RW0_wmode, // <no_sram>
+  output [20:0] tag_array_ext_RW0_wdata, // <no_sram>
+  input  [20:0] tag_array_ext_RW0_rdata, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  wire  dut_clock; // @[Chip.scala 41:21]
+  wire  dut_io_pins_jtag_TCK_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_jtag_TMS_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_jtag_TDI_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_jtag_TDO_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_jtag_TDO_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_0_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_0_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_0_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_0_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_1_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_1_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_1_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_1_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_2_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_2_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_2_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_2_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_3_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_3_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_3_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_3_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_4_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_4_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_4_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_4_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_5_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_5_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_5_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_5_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_6_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_6_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_6_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_7_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_7_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_7_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_8_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_8_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_8_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_9_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_9_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_9_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_10_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_10_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_10_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_11_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_11_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_11_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_12_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_12_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_12_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_12_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_13_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_13_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_13_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_13_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_14_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_14_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_14_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_14_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_15_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_15_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_15_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_15_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_16_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_16_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_16_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_16_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_17_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_17_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_17_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_17_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_18_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_18_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_18_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_18_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_19_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_19_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_19_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_19_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_20_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_20_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_20_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_20_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_21_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_21_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_21_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_21_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_22_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_22_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_22_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_22_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_23_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_23_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_23_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_23_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_24_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_24_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_24_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_24_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_25_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_25_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_25_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_26_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_26_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_26_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_27_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_27_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_27_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_28_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_28_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_28_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_29_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_29_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_29_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_30_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_30_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_30_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_31_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_31_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_gpio_pins_31_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_sck_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_0_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_0_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_0_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_0_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_1_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_1_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_1_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_1_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_2_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_2_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_2_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_2_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_3_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_3_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_3_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_dq_3_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_cs_0_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_sck_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_0_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_0_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_0_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_0_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_1_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_1_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_1_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_1_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_2_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_2_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_2_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_2_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_3_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_3_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_3_o_oe; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_dq_3_o_ie; // @[Chip.scala 41:21]
+  wire  dut_io_pins_qspi_ram_cs_0_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_uart_rxd_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_uart_txd_o_oval; // @[Chip.scala 41:21]
+  wire  dut_io_pins_aon_erst_n_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_pins_aon_lfextclk_i_ival; // @[Chip.scala 41:21]
+  wire  dut_io_jtag_reset; // @[Chip.scala 41:21]
+  wire  _T = ~rst_n; // @[Chip.scala 28:26]
+  reg  clockToggleReg; // @[Chip.scala 29:33]
+  reg [1:0] slowTick_value; // @[Counter.scala 62:40]
+  wire  slowTick_wrap_wrap = slowTick_value == 2'h3; // @[Counter.scala 74:24]
+  wire [1:0] _slowTick_wrap_value_T_1 = slowTick_value + 2'h1; // @[Counter.scala 78:24]
+  MarmotCaravelPlatform dut ( // @[Chip.scala 41:21]
+    .clock(dut_clock),
+    .io_pins_jtag_TCK_i_ival(dut_io_pins_jtag_TCK_i_ival),
+    .io_pins_jtag_TMS_i_ival(dut_io_pins_jtag_TMS_i_ival),
+    .io_pins_jtag_TDI_i_ival(dut_io_pins_jtag_TDI_i_ival),
+    .io_pins_jtag_TDO_o_oval(dut_io_pins_jtag_TDO_o_oval),
+    .io_pins_jtag_TDO_o_oe(dut_io_pins_jtag_TDO_o_oe),
+    .io_pins_gpio_pins_0_i_ival(dut_io_pins_gpio_pins_0_i_ival),
+    .io_pins_gpio_pins_0_o_oval(dut_io_pins_gpio_pins_0_o_oval),
+    .io_pins_gpio_pins_0_o_oe(dut_io_pins_gpio_pins_0_o_oe),
+    .io_pins_gpio_pins_0_o_ie(dut_io_pins_gpio_pins_0_o_ie),
+    .io_pins_gpio_pins_1_i_ival(dut_io_pins_gpio_pins_1_i_ival),
+    .io_pins_gpio_pins_1_o_oval(dut_io_pins_gpio_pins_1_o_oval),
+    .io_pins_gpio_pins_1_o_oe(dut_io_pins_gpio_pins_1_o_oe),
+    .io_pins_gpio_pins_1_o_ie(dut_io_pins_gpio_pins_1_o_ie),
+    .io_pins_gpio_pins_2_i_ival(dut_io_pins_gpio_pins_2_i_ival),
+    .io_pins_gpio_pins_2_o_oval(dut_io_pins_gpio_pins_2_o_oval),
+    .io_pins_gpio_pins_2_o_oe(dut_io_pins_gpio_pins_2_o_oe),
+    .io_pins_gpio_pins_2_o_ie(dut_io_pins_gpio_pins_2_o_ie),
+    .io_pins_gpio_pins_3_i_ival(dut_io_pins_gpio_pins_3_i_ival),
+    .io_pins_gpio_pins_3_o_oval(dut_io_pins_gpio_pins_3_o_oval),
+    .io_pins_gpio_pins_3_o_oe(dut_io_pins_gpio_pins_3_o_oe),
+    .io_pins_gpio_pins_3_o_ie(dut_io_pins_gpio_pins_3_o_ie),
+    .io_pins_gpio_pins_4_i_ival(dut_io_pins_gpio_pins_4_i_ival),
+    .io_pins_gpio_pins_4_o_oval(dut_io_pins_gpio_pins_4_o_oval),
+    .io_pins_gpio_pins_4_o_oe(dut_io_pins_gpio_pins_4_o_oe),
+    .io_pins_gpio_pins_4_o_ie(dut_io_pins_gpio_pins_4_o_ie),
+    .io_pins_gpio_pins_5_i_ival(dut_io_pins_gpio_pins_5_i_ival),
+    .io_pins_gpio_pins_5_o_oval(dut_io_pins_gpio_pins_5_o_oval),
+    .io_pins_gpio_pins_5_o_oe(dut_io_pins_gpio_pins_5_o_oe),
+    .io_pins_gpio_pins_5_o_ie(dut_io_pins_gpio_pins_5_o_ie),
+    .io_pins_gpio_pins_6_i_ival(dut_io_pins_gpio_pins_6_i_ival),
+    .io_pins_gpio_pins_6_o_oval(dut_io_pins_gpio_pins_6_o_oval),
+    .io_pins_gpio_pins_6_o_oe(dut_io_pins_gpio_pins_6_o_oe),
+    .io_pins_gpio_pins_7_i_ival(dut_io_pins_gpio_pins_7_i_ival),
+    .io_pins_gpio_pins_7_o_oval(dut_io_pins_gpio_pins_7_o_oval),
+    .io_pins_gpio_pins_7_o_oe(dut_io_pins_gpio_pins_7_o_oe),
+    .io_pins_gpio_pins_8_i_ival(dut_io_pins_gpio_pins_8_i_ival),
+    .io_pins_gpio_pins_8_o_oval(dut_io_pins_gpio_pins_8_o_oval),
+    .io_pins_gpio_pins_8_o_oe(dut_io_pins_gpio_pins_8_o_oe),
+    .io_pins_gpio_pins_9_i_ival(dut_io_pins_gpio_pins_9_i_ival),
+    .io_pins_gpio_pins_9_o_oval(dut_io_pins_gpio_pins_9_o_oval),
+    .io_pins_gpio_pins_9_o_oe(dut_io_pins_gpio_pins_9_o_oe),
+    .io_pins_gpio_pins_10_i_ival(dut_io_pins_gpio_pins_10_i_ival),
+    .io_pins_gpio_pins_10_o_oval(dut_io_pins_gpio_pins_10_o_oval),
+    .io_pins_gpio_pins_10_o_oe(dut_io_pins_gpio_pins_10_o_oe),
+    .io_pins_gpio_pins_11_i_ival(dut_io_pins_gpio_pins_11_i_ival),
+    .io_pins_gpio_pins_11_o_oval(dut_io_pins_gpio_pins_11_o_oval),
+    .io_pins_gpio_pins_11_o_oe(dut_io_pins_gpio_pins_11_o_oe),
+    .io_pins_gpio_pins_12_i_ival(dut_io_pins_gpio_pins_12_i_ival),
+    .io_pins_gpio_pins_12_o_oval(dut_io_pins_gpio_pins_12_o_oval),
+    .io_pins_gpio_pins_12_o_oe(dut_io_pins_gpio_pins_12_o_oe),
+    .io_pins_gpio_pins_12_o_ie(dut_io_pins_gpio_pins_12_o_ie),
+    .io_pins_gpio_pins_13_i_ival(dut_io_pins_gpio_pins_13_i_ival),
+    .io_pins_gpio_pins_13_o_oval(dut_io_pins_gpio_pins_13_o_oval),
+    .io_pins_gpio_pins_13_o_oe(dut_io_pins_gpio_pins_13_o_oe),
+    .io_pins_gpio_pins_13_o_ie(dut_io_pins_gpio_pins_13_o_ie),
+    .io_pins_gpio_pins_14_i_ival(dut_io_pins_gpio_pins_14_i_ival),
+    .io_pins_gpio_pins_14_o_oval(dut_io_pins_gpio_pins_14_o_oval),
+    .io_pins_gpio_pins_14_o_oe(dut_io_pins_gpio_pins_14_o_oe),
+    .io_pins_gpio_pins_14_o_ie(dut_io_pins_gpio_pins_14_o_ie),
+    .io_pins_gpio_pins_15_i_ival(dut_io_pins_gpio_pins_15_i_ival),
+    .io_pins_gpio_pins_15_o_oval(dut_io_pins_gpio_pins_15_o_oval),
+    .io_pins_gpio_pins_15_o_oe(dut_io_pins_gpio_pins_15_o_oe),
+    .io_pins_gpio_pins_15_o_ie(dut_io_pins_gpio_pins_15_o_ie),
+    .io_pins_gpio_pins_16_i_ival(dut_io_pins_gpio_pins_16_i_ival),
+    .io_pins_gpio_pins_16_o_oval(dut_io_pins_gpio_pins_16_o_oval),
+    .io_pins_gpio_pins_16_o_oe(dut_io_pins_gpio_pins_16_o_oe),
+    .io_pins_gpio_pins_16_o_ie(dut_io_pins_gpio_pins_16_o_ie),
+    .io_pins_gpio_pins_17_i_ival(dut_io_pins_gpio_pins_17_i_ival),
+    .io_pins_gpio_pins_17_o_oval(dut_io_pins_gpio_pins_17_o_oval),
+    .io_pins_gpio_pins_17_o_oe(dut_io_pins_gpio_pins_17_o_oe),
+    .io_pins_gpio_pins_17_o_ie(dut_io_pins_gpio_pins_17_o_ie),
+    .io_pins_gpio_pins_18_i_ival(dut_io_pins_gpio_pins_18_i_ival),
+    .io_pins_gpio_pins_18_o_oval(dut_io_pins_gpio_pins_18_o_oval),
+    .io_pins_gpio_pins_18_o_oe(dut_io_pins_gpio_pins_18_o_oe),
+    .io_pins_gpio_pins_18_o_ie(dut_io_pins_gpio_pins_18_o_ie),
+    .io_pins_gpio_pins_19_i_ival(dut_io_pins_gpio_pins_19_i_ival),
+    .io_pins_gpio_pins_19_o_oval(dut_io_pins_gpio_pins_19_o_oval),
+    .io_pins_gpio_pins_19_o_oe(dut_io_pins_gpio_pins_19_o_oe),
+    .io_pins_gpio_pins_19_o_ie(dut_io_pins_gpio_pins_19_o_ie),
+    .io_pins_gpio_pins_20_i_ival(dut_io_pins_gpio_pins_20_i_ival),
+    .io_pins_gpio_pins_20_o_oval(dut_io_pins_gpio_pins_20_o_oval),
+    .io_pins_gpio_pins_20_o_oe(dut_io_pins_gpio_pins_20_o_oe),
+    .io_pins_gpio_pins_20_o_ie(dut_io_pins_gpio_pins_20_o_ie),
+    .io_pins_gpio_pins_21_i_ival(dut_io_pins_gpio_pins_21_i_ival),
+    .io_pins_gpio_pins_21_o_oval(dut_io_pins_gpio_pins_21_o_oval),
+    .io_pins_gpio_pins_21_o_oe(dut_io_pins_gpio_pins_21_o_oe),
+    .io_pins_gpio_pins_21_o_ie(dut_io_pins_gpio_pins_21_o_ie),
+    .io_pins_gpio_pins_22_i_ival(dut_io_pins_gpio_pins_22_i_ival),
+    .io_pins_gpio_pins_22_o_oval(dut_io_pins_gpio_pins_22_o_oval),
+    .io_pins_gpio_pins_22_o_oe(dut_io_pins_gpio_pins_22_o_oe),
+    .io_pins_gpio_pins_22_o_ie(dut_io_pins_gpio_pins_22_o_ie),
+    .io_pins_gpio_pins_23_i_ival(dut_io_pins_gpio_pins_23_i_ival),
+    .io_pins_gpio_pins_23_o_oval(dut_io_pins_gpio_pins_23_o_oval),
+    .io_pins_gpio_pins_23_o_oe(dut_io_pins_gpio_pins_23_o_oe),
+    .io_pins_gpio_pins_23_o_ie(dut_io_pins_gpio_pins_23_o_ie),
+    .io_pins_gpio_pins_24_i_ival(dut_io_pins_gpio_pins_24_i_ival),
+    .io_pins_gpio_pins_24_o_oval(dut_io_pins_gpio_pins_24_o_oval),
+    .io_pins_gpio_pins_24_o_oe(dut_io_pins_gpio_pins_24_o_oe),
+    .io_pins_gpio_pins_24_o_ie(dut_io_pins_gpio_pins_24_o_ie),
+    .io_pins_gpio_pins_25_i_ival(dut_io_pins_gpio_pins_25_i_ival),
+    .io_pins_gpio_pins_25_o_oval(dut_io_pins_gpio_pins_25_o_oval),
+    .io_pins_gpio_pins_25_o_oe(dut_io_pins_gpio_pins_25_o_oe),
+    .io_pins_gpio_pins_26_i_ival(dut_io_pins_gpio_pins_26_i_ival),
+    .io_pins_gpio_pins_26_o_oval(dut_io_pins_gpio_pins_26_o_oval),
+    .io_pins_gpio_pins_26_o_oe(dut_io_pins_gpio_pins_26_o_oe),
+    .io_pins_gpio_pins_27_i_ival(dut_io_pins_gpio_pins_27_i_ival),
+    .io_pins_gpio_pins_27_o_oval(dut_io_pins_gpio_pins_27_o_oval),
+    .io_pins_gpio_pins_27_o_oe(dut_io_pins_gpio_pins_27_o_oe),
+    .io_pins_gpio_pins_28_i_ival(dut_io_pins_gpio_pins_28_i_ival),
+    .io_pins_gpio_pins_28_o_oval(dut_io_pins_gpio_pins_28_o_oval),
+    .io_pins_gpio_pins_28_o_oe(dut_io_pins_gpio_pins_28_o_oe),
+    .io_pins_gpio_pins_29_i_ival(dut_io_pins_gpio_pins_29_i_ival),
+    .io_pins_gpio_pins_29_o_oval(dut_io_pins_gpio_pins_29_o_oval),
+    .io_pins_gpio_pins_29_o_oe(dut_io_pins_gpio_pins_29_o_oe),
+    .io_pins_gpio_pins_30_i_ival(dut_io_pins_gpio_pins_30_i_ival),
+    .io_pins_gpio_pins_30_o_oval(dut_io_pins_gpio_pins_30_o_oval),
+    .io_pins_gpio_pins_30_o_oe(dut_io_pins_gpio_pins_30_o_oe),
+    .io_pins_gpio_pins_31_i_ival(dut_io_pins_gpio_pins_31_i_ival),
+    .io_pins_gpio_pins_31_o_oval(dut_io_pins_gpio_pins_31_o_oval),
+    .io_pins_gpio_pins_31_o_oe(dut_io_pins_gpio_pins_31_o_oe),
+    .io_pins_qspi_sck_o_oval(dut_io_pins_qspi_sck_o_oval),
+    .io_pins_qspi_dq_0_i_ival(dut_io_pins_qspi_dq_0_i_ival),
+    .io_pins_qspi_dq_0_o_oval(dut_io_pins_qspi_dq_0_o_oval),
+    .io_pins_qspi_dq_0_o_oe(dut_io_pins_qspi_dq_0_o_oe),
+    .io_pins_qspi_dq_0_o_ie(dut_io_pins_qspi_dq_0_o_ie),
+    .io_pins_qspi_dq_1_i_ival(dut_io_pins_qspi_dq_1_i_ival),
+    .io_pins_qspi_dq_1_o_oval(dut_io_pins_qspi_dq_1_o_oval),
+    .io_pins_qspi_dq_1_o_oe(dut_io_pins_qspi_dq_1_o_oe),
+    .io_pins_qspi_dq_1_o_ie(dut_io_pins_qspi_dq_1_o_ie),
+    .io_pins_qspi_dq_2_i_ival(dut_io_pins_qspi_dq_2_i_ival),
+    .io_pins_qspi_dq_2_o_oval(dut_io_pins_qspi_dq_2_o_oval),
+    .io_pins_qspi_dq_2_o_oe(dut_io_pins_qspi_dq_2_o_oe),
+    .io_pins_qspi_dq_2_o_ie(dut_io_pins_qspi_dq_2_o_ie),
+    .io_pins_qspi_dq_3_i_ival(dut_io_pins_qspi_dq_3_i_ival),
+    .io_pins_qspi_dq_3_o_oval(dut_io_pins_qspi_dq_3_o_oval),
+    .io_pins_qspi_dq_3_o_oe(dut_io_pins_qspi_dq_3_o_oe),
+    .io_pins_qspi_dq_3_o_ie(dut_io_pins_qspi_dq_3_o_ie),
+    .io_pins_qspi_cs_0_o_oval(dut_io_pins_qspi_cs_0_o_oval),
+    .io_pins_qspi_ram_sck_o_oval(dut_io_pins_qspi_ram_sck_o_oval),
+    .io_pins_qspi_ram_dq_0_i_ival(dut_io_pins_qspi_ram_dq_0_i_ival),
+    .io_pins_qspi_ram_dq_0_o_oval(dut_io_pins_qspi_ram_dq_0_o_oval),
+    .io_pins_qspi_ram_dq_0_o_oe(dut_io_pins_qspi_ram_dq_0_o_oe),
+    .io_pins_qspi_ram_dq_0_o_ie(dut_io_pins_qspi_ram_dq_0_o_ie),
+    .io_pins_qspi_ram_dq_1_i_ival(dut_io_pins_qspi_ram_dq_1_i_ival),
+    .io_pins_qspi_ram_dq_1_o_oval(dut_io_pins_qspi_ram_dq_1_o_oval),
+    .io_pins_qspi_ram_dq_1_o_oe(dut_io_pins_qspi_ram_dq_1_o_oe),
+    .io_pins_qspi_ram_dq_1_o_ie(dut_io_pins_qspi_ram_dq_1_o_ie),
+    .io_pins_qspi_ram_dq_2_i_ival(dut_io_pins_qspi_ram_dq_2_i_ival),
+    .io_pins_qspi_ram_dq_2_o_oval(dut_io_pins_qspi_ram_dq_2_o_oval),
+    .io_pins_qspi_ram_dq_2_o_oe(dut_io_pins_qspi_ram_dq_2_o_oe),
+    .io_pins_qspi_ram_dq_2_o_ie(dut_io_pins_qspi_ram_dq_2_o_ie),
+    .io_pins_qspi_ram_dq_3_i_ival(dut_io_pins_qspi_ram_dq_3_i_ival),
+    .io_pins_qspi_ram_dq_3_o_oval(dut_io_pins_qspi_ram_dq_3_o_oval),
+    .io_pins_qspi_ram_dq_3_o_oe(dut_io_pins_qspi_ram_dq_3_o_oe),
+    .io_pins_qspi_ram_dq_3_o_ie(dut_io_pins_qspi_ram_dq_3_o_ie),
+    .io_pins_qspi_ram_cs_0_o_oval(dut_io_pins_qspi_ram_cs_0_o_oval),
+    .io_pins_uart_rxd_i_ival(dut_io_pins_uart_rxd_i_ival),
+    .io_pins_uart_txd_o_oval(dut_io_pins_uart_txd_o_oval),
+    .io_pins_aon_erst_n_i_ival(dut_io_pins_aon_erst_n_i_ival),
+    .io_pins_aon_lfextclk_i_ival(dut_io_pins_aon_lfextclk_i_ival),
+    .io_jtag_reset(dut_io_jtag_reset), // <no_sram>
+    .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr), // <no_sram>
+    .tag_array_ext_RW0_en(tag_array_ext_RW0_en), // <no_sram>
+    .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk), // <no_sram>
+    .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode), // <no_sram>
+    .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata), // <no_sram>
+    .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask), // <no_sram>
+    .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+    .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+    .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+    .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+    .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+    .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+    .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask), // <no_sram>
+    .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+    .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+    .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+    .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+  );
+  assign io_out_0 = 1'h0; // @[Chip.scala 48:15]
+  assign io_out_1 = dut_io_pins_jtag_TDO_o_oval; // @[Chip.scala 52:15]
+  assign io_out_2 = 1'h0; // @[Chip.scala 56:15]
+  assign io_out_3 = 1'h0; // @[Chip.scala 61:15]
+  assign io_out_4 = 1'h0; // @[Chip.scala 66:15]
+  assign io_out_5 = 1'h0; // @[Chip.scala 82:15]
+  assign io_out_6 = dut_io_pins_uart_txd_o_oval; // @[Chip.scala 87:15]
+  assign io_out_7 = dut_io_pins_gpio_pins_24_o_oval; // @[Chip.scala 183:16]
+  assign io_out_8 = dut_io_pins_qspi_cs_0_o_oval; // @[Chip.scala 95:16]
+  assign io_out_9 = dut_io_pins_qspi_sck_o_oval; // @[Chip.scala 99:16]
+  assign io_out_10 = dut_io_pins_qspi_dq_0_o_oval; // @[Chip.scala 103:16]
+  assign io_out_11 = dut_io_pins_qspi_dq_1_o_oval; // @[Chip.scala 108:16]
+  assign io_out_12 = dut_io_pins_qspi_dq_2_o_oval; // @[Chip.scala 113:16]
+  assign io_out_13 = dut_io_pins_qspi_dq_3_o_oval; // @[Chip.scala 118:16]
+  assign io_out_14 = dut_io_pins_gpio_pins_0_o_oval; // @[Chip.scala 165:23]
+  assign io_out_15 = dut_io_pins_gpio_pins_1_o_oval; // @[Chip.scala 165:23]
+  assign io_out_16 = dut_io_pins_gpio_pins_2_o_oval; // @[Chip.scala 165:23]
+  assign io_out_17 = dut_io_pins_gpio_pins_3_o_oval; // @[Chip.scala 165:23]
+  assign io_out_18 = dut_io_pins_gpio_pins_4_o_oval; // @[Chip.scala 165:23]
+  assign io_out_19 = dut_io_pins_gpio_pins_5_o_oval; // @[Chip.scala 165:23]
+  assign io_out_20 = dut_io_pins_qspi_ram_cs_0_o_oval; // @[Chip.scala 127:17]
+  assign io_out_21 = dut_io_pins_qspi_ram_sck_o_oval; // @[Chip.scala 131:17]
+  assign io_out_22 = dut_io_pins_qspi_ram_dq_0_o_oval; // @[Chip.scala 135:16]
+  assign io_out_23 = dut_io_pins_qspi_ram_dq_1_o_oval; // @[Chip.scala 140:16]
+  assign io_out_24 = dut_io_pins_qspi_ram_dq_2_o_oval; // @[Chip.scala 145:16]
+  assign io_out_25 = dut_io_pins_qspi_ram_dq_3_o_oval; // @[Chip.scala 150:16]
+  assign io_out_26 = dut_io_pins_gpio_pins_12_o_oval; // @[Chip.scala 177:23]
+  assign io_out_27 = dut_io_pins_gpio_pins_13_o_oval; // @[Chip.scala 177:23]
+  assign io_out_28 = dut_io_pins_gpio_pins_14_o_oval; // @[Chip.scala 177:23]
+  assign io_out_29 = dut_io_pins_gpio_pins_15_o_oval; // @[Chip.scala 177:23]
+  assign io_out_30 = dut_io_pins_gpio_pins_16_o_oval; // @[Chip.scala 177:23]
+  assign io_out_31 = dut_io_pins_gpio_pins_17_o_oval; // @[Chip.scala 177:23]
+  assign io_out_32 = dut_io_pins_gpio_pins_18_o_oval; // @[Chip.scala 177:23]
+  assign io_out_33 = dut_io_pins_gpio_pins_19_o_oval; // @[Chip.scala 177:23]
+  assign io_out_34 = dut_io_pins_gpio_pins_20_o_oval; // @[Chip.scala 177:23]
+  assign io_out_35 = dut_io_pins_gpio_pins_21_o_oval; // @[Chip.scala 177:23]
+  assign io_out_36 = dut_io_pins_gpio_pins_22_o_oval; // @[Chip.scala 177:23]
+  assign io_out_37 = dut_io_pins_gpio_pins_23_o_oval; // @[Chip.scala 177:23]
+  assign io_oeb_0 = 1'h1; // @[Chip.scala 49:15]
+  assign io_oeb_1 = ~dut_io_pins_jtag_TDO_o_oe; // @[Chip.scala 53:18]
+  assign io_oeb_2 = 1'h1; // @[Chip.scala 57:15]
+  assign io_oeb_3 = 1'h1; // @[Chip.scala 62:15]
+  assign io_oeb_4 = 1'h1; // @[Chip.scala 67:15]
+  assign io_oeb_5 = 1'h1; // @[Chip.scala 83:15]
+  assign io_oeb_6 = 1'h0; // @[Chip.scala 88:18]
+  assign io_oeb_7 = ~dut_io_pins_gpio_pins_24_o_oe; // @[Chip.scala 184:19]
+  assign io_oeb_8 = 1'h0; // @[Chip.scala 96:19]
+  assign io_oeb_9 = 1'h0; // @[Chip.scala 100:19]
+  assign io_oeb_10 = ~dut_io_pins_qspi_dq_0_o_oe; // @[Chip.scala 104:19]
+  assign io_oeb_11 = ~dut_io_pins_qspi_dq_1_o_oe; // @[Chip.scala 109:19]
+  assign io_oeb_12 = ~dut_io_pins_qspi_dq_2_o_oe; // @[Chip.scala 114:19]
+  assign io_oeb_13 = ~dut_io_pins_qspi_dq_3_o_oe; // @[Chip.scala 119:19]
+  assign io_oeb_14 = ~dut_io_pins_gpio_pins_0_o_oe; // @[Chip.scala 166:26]
+  assign io_oeb_15 = ~dut_io_pins_gpio_pins_1_o_oe; // @[Chip.scala 166:26]
+  assign io_oeb_16 = ~dut_io_pins_gpio_pins_2_o_oe; // @[Chip.scala 166:26]
+  assign io_oeb_17 = ~dut_io_pins_gpio_pins_3_o_oe; // @[Chip.scala 166:26]
+  assign io_oeb_18 = ~dut_io_pins_gpio_pins_4_o_oe; // @[Chip.scala 166:26]
+  assign io_oeb_19 = ~dut_io_pins_gpio_pins_5_o_oe; // @[Chip.scala 166:26]
+  assign io_oeb_20 = 1'h0; // @[Chip.scala 128:20]
+  assign io_oeb_21 = 1'h0; // @[Chip.scala 132:20]
+  assign io_oeb_22 = ~dut_io_pins_qspi_ram_dq_0_o_oe; // @[Chip.scala 136:19]
+  assign io_oeb_23 = ~dut_io_pins_qspi_ram_dq_1_o_oe; // @[Chip.scala 141:19]
+  assign io_oeb_24 = ~dut_io_pins_qspi_ram_dq_2_o_oe; // @[Chip.scala 146:19]
+  assign io_oeb_25 = ~dut_io_pins_qspi_ram_dq_3_o_oe; // @[Chip.scala 151:19]
+  assign io_oeb_26 = ~dut_io_pins_gpio_pins_12_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_27 = ~dut_io_pins_gpio_pins_13_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_28 = ~dut_io_pins_gpio_pins_14_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_29 = ~dut_io_pins_gpio_pins_15_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_30 = ~dut_io_pins_gpio_pins_16_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_31 = ~dut_io_pins_gpio_pins_17_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_32 = ~dut_io_pins_gpio_pins_18_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_33 = ~dut_io_pins_gpio_pins_19_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_34 = ~dut_io_pins_gpio_pins_20_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_35 = ~dut_io_pins_gpio_pins_21_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_36 = ~dut_io_pins_gpio_pins_22_o_oe; // @[Chip.scala 178:26]
+  assign io_oeb_37 = ~dut_io_pins_gpio_pins_23_o_oe; // @[Chip.scala 178:26]
+  assign gpio_out_0 = dut_io_pins_gpio_pins_0_o_oe & dut_io_pins_gpio_pins_0_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_1 = dut_io_pins_gpio_pins_1_o_oe & dut_io_pins_gpio_pins_1_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_2 = dut_io_pins_gpio_pins_2_o_oe & dut_io_pins_gpio_pins_2_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_3 = dut_io_pins_gpio_pins_3_o_oe & dut_io_pins_gpio_pins_3_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_4 = dut_io_pins_gpio_pins_4_o_oe & dut_io_pins_gpio_pins_4_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_5 = dut_io_pins_gpio_pins_5_o_oe & dut_io_pins_gpio_pins_5_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_6 = dut_io_pins_gpio_pins_6_o_oe & dut_io_pins_gpio_pins_6_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_7 = dut_io_pins_gpio_pins_7_o_oe & dut_io_pins_gpio_pins_7_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_8 = dut_io_pins_gpio_pins_8_o_oe & dut_io_pins_gpio_pins_8_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_9 = dut_io_pins_gpio_pins_9_o_oe & dut_io_pins_gpio_pins_9_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_10 = dut_io_pins_gpio_pins_10_o_oe & dut_io_pins_gpio_pins_10_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_11 = dut_io_pins_gpio_pins_11_o_oe & dut_io_pins_gpio_pins_11_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_12 = dut_io_pins_gpio_pins_12_o_oe & dut_io_pins_gpio_pins_12_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_13 = dut_io_pins_gpio_pins_13_o_oe & dut_io_pins_gpio_pins_13_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_14 = dut_io_pins_gpio_pins_14_o_oe & dut_io_pins_gpio_pins_14_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_15 = dut_io_pins_gpio_pins_15_o_oe & dut_io_pins_gpio_pins_15_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_16 = dut_io_pins_gpio_pins_16_o_oe & dut_io_pins_gpio_pins_16_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_17 = dut_io_pins_gpio_pins_17_o_oe & dut_io_pins_gpio_pins_17_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_18 = dut_io_pins_gpio_pins_18_o_oe & dut_io_pins_gpio_pins_18_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_19 = dut_io_pins_gpio_pins_19_o_oe & dut_io_pins_gpio_pins_19_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_20 = dut_io_pins_gpio_pins_20_o_oe & dut_io_pins_gpio_pins_20_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_21 = dut_io_pins_gpio_pins_21_o_oe & dut_io_pins_gpio_pins_21_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_22 = dut_io_pins_gpio_pins_22_o_oe & dut_io_pins_gpio_pins_22_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_23 = dut_io_pins_gpio_pins_23_o_oe & dut_io_pins_gpio_pins_23_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_24 = dut_io_pins_gpio_pins_24_o_oe & dut_io_pins_gpio_pins_24_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_25 = dut_io_pins_gpio_pins_25_o_oe & dut_io_pins_gpio_pins_25_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_26 = dut_io_pins_gpio_pins_26_o_oe & dut_io_pins_gpio_pins_26_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_27 = dut_io_pins_gpio_pins_27_o_oe & dut_io_pins_gpio_pins_27_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_28 = dut_io_pins_gpio_pins_28_o_oe & dut_io_pins_gpio_pins_28_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_29 = dut_io_pins_gpio_pins_29_o_oe & dut_io_pins_gpio_pins_29_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_30 = dut_io_pins_gpio_pins_30_o_oe & dut_io_pins_gpio_pins_30_o_oval; // @[Chip.scala 160:56]
+  assign gpio_out_31 = dut_io_pins_gpio_pins_31_o_oe & dut_io_pins_gpio_pins_31_o_oval; // @[Chip.scala 160:56]
+  assign dut_clock = clk;
+  assign dut_io_pins_jtag_TCK_i_ival = io_in_4; // @[Chip.scala 68:45]
+  assign dut_io_pins_jtag_TMS_i_ival = io_in_3; // @[Chip.scala 63:45]
+  assign dut_io_pins_jtag_TDI_i_ival = io_in_2; // @[Chip.scala 58:45]
+  assign dut_io_pins_gpio_pins_0_i_ival = io_in_14 & dut_io_pins_gpio_pins_0_o_ie; // @[Chip.scala 167:58]
+  assign dut_io_pins_gpio_pins_1_i_ival = io_in_15 & dut_io_pins_gpio_pins_1_o_ie; // @[Chip.scala 167:58]
+  assign dut_io_pins_gpio_pins_2_i_ival = io_in_16 & dut_io_pins_gpio_pins_2_o_ie; // @[Chip.scala 167:58]
+  assign dut_io_pins_gpio_pins_3_i_ival = io_in_17 & dut_io_pins_gpio_pins_3_o_ie; // @[Chip.scala 167:58]
+  assign dut_io_pins_gpio_pins_4_i_ival = io_in_18 & dut_io_pins_gpio_pins_4_o_ie; // @[Chip.scala 167:58]
+  assign dut_io_pins_gpio_pins_5_i_ival = io_in_19 & dut_io_pins_gpio_pins_5_o_ie; // @[Chip.scala 167:58]
+  assign dut_io_pins_gpio_pins_6_i_ival = gpio_in_6; // @[Chip.scala 172:41]
+  assign dut_io_pins_gpio_pins_7_i_ival = gpio_in_7; // @[Chip.scala 172:41]
+  assign dut_io_pins_gpio_pins_8_i_ival = gpio_in_8; // @[Chip.scala 172:41]
+  assign dut_io_pins_gpio_pins_9_i_ival = gpio_in_9; // @[Chip.scala 172:41]
+  assign dut_io_pins_gpio_pins_10_i_ival = gpio_in_10; // @[Chip.scala 172:41]
+  assign dut_io_pins_gpio_pins_11_i_ival = gpio_in_11; // @[Chip.scala 172:41]
+  assign dut_io_pins_gpio_pins_12_i_ival = io_in_26 & dut_io_pins_gpio_pins_12_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_13_i_ival = io_in_27 & dut_io_pins_gpio_pins_13_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_14_i_ival = io_in_28 & dut_io_pins_gpio_pins_14_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_15_i_ival = io_in_29 & dut_io_pins_gpio_pins_15_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_16_i_ival = io_in_30 & dut_io_pins_gpio_pins_16_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_17_i_ival = io_in_31 & dut_io_pins_gpio_pins_17_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_18_i_ival = io_in_32 & dut_io_pins_gpio_pins_18_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_19_i_ival = io_in_33 & dut_io_pins_gpio_pins_19_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_20_i_ival = io_in_34 & dut_io_pins_gpio_pins_20_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_21_i_ival = io_in_35 & dut_io_pins_gpio_pins_21_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_22_i_ival = io_in_36 & dut_io_pins_gpio_pins_22_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_23_i_ival = io_in_37 & dut_io_pins_gpio_pins_23_o_ie; // @[Chip.scala 179:58]
+  assign dut_io_pins_gpio_pins_24_i_ival = io_in_7 & dut_io_pins_gpio_pins_24_o_ie; // @[Chip.scala 185:50]
+  assign dut_io_pins_gpio_pins_25_i_ival = gpio_in_25; // @[Chip.scala 189:41]
+  assign dut_io_pins_gpio_pins_26_i_ival = gpio_in_26; // @[Chip.scala 189:41]
+  assign dut_io_pins_gpio_pins_27_i_ival = gpio_in_27; // @[Chip.scala 189:41]
+  assign dut_io_pins_gpio_pins_28_i_ival = gpio_in_28; // @[Chip.scala 189:41]
+  assign dut_io_pins_gpio_pins_29_i_ival = gpio_in_29; // @[Chip.scala 189:41]
+  assign dut_io_pins_gpio_pins_30_i_ival = gpio_in_30; // @[Chip.scala 189:41]
+  assign dut_io_pins_gpio_pins_31_i_ival = gpio_in_31; // @[Chip.scala 189:41]
+  assign dut_io_pins_qspi_dq_0_i_ival = io_in_10 & dut_io_pins_qspi_dq_0_o_ie; // @[Chip.scala 105:48]
+  assign dut_io_pins_qspi_dq_1_i_ival = io_in_11 & dut_io_pins_qspi_dq_1_o_ie; // @[Chip.scala 110:48]
+  assign dut_io_pins_qspi_dq_2_i_ival = io_in_12 & dut_io_pins_qspi_dq_2_o_ie; // @[Chip.scala 115:48]
+  assign dut_io_pins_qspi_dq_3_i_ival = io_in_13 & dut_io_pins_qspi_dq_3_o_ie; // @[Chip.scala 120:48]
+  assign dut_io_pins_qspi_ram_dq_0_i_ival = io_in_22 & dut_io_pins_qspi_ram_dq_0_o_ie; // @[Chip.scala 137:52]
+  assign dut_io_pins_qspi_ram_dq_1_i_ival = io_in_23 & dut_io_pins_qspi_ram_dq_1_o_ie; // @[Chip.scala 142:52]
+  assign dut_io_pins_qspi_ram_dq_2_i_ival = io_in_24 & dut_io_pins_qspi_ram_dq_2_o_ie; // @[Chip.scala 147:52]
+  assign dut_io_pins_qspi_ram_dq_3_i_ival = io_in_25 & dut_io_pins_qspi_ram_dq_3_o_ie; // @[Chip.scala 152:52]
+  assign dut_io_pins_uart_rxd_i_ival = io_in_5; // @[Chip.scala 84:45]
+  assign dut_io_pins_aon_erst_n_i_ival = rst_n; // @[Chip.scala 196:41]
+  assign dut_io_pins_aon_lfextclk_i_ival = clockToggleReg; // @[Chip.scala 25:24 33:16]
+  assign dut_io_jtag_reset = ~rst_n; // @[Chip.scala 71:26]
+  always @(posedge clk) begin
+    if (_T) begin // @[Chip.scala 29:33]
+      clockToggleReg <= 1'h0; // @[Chip.scala 29:33]
+    end else if (slowTick_wrap_wrap) begin // @[Chip.scala 32:21]
+      clockToggleReg <= ~clockToggleReg; // @[Chip.scala 32:37]
+    end
+    if (_T) begin // @[Counter.scala 62:40]
+      slowTick_value <= 2'h0; // @[Counter.scala 62:40]
+    end else begin
+      slowTick_value <= _slowTick_wrap_value_T_1;
+    end
+  end
+// Register and memory initialization
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+  integer initvar;
+`endif
+`ifndef SYNTHESIS
+`ifdef FIRRTL_BEFORE_INITIAL
+`FIRRTL_BEFORE_INITIAL
+`endif
+initial begin
+  `ifdef RANDOMIZE
+    `ifdef INIT_RANDOM
+      `INIT_RANDOM
+    `endif
+    `ifndef VERILATOR
+      `ifdef RANDOMIZE_DELAY
+        #`RANDOMIZE_DELAY begin end
+      `else
+        #0.002 begin end
+      `endif
+    `endif
+`ifdef RANDOMIZE_REG_INIT
+  _RAND_0 = {1{`RANDOM}};
+  clockToggleReg = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  slowTick_value = _RAND_1[1:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module data_arrays_0(
+  input  [9:0] RW0_addr,
+  input        RW0_en,
+  input        RW0_clk,
+  input        RW0_wmode,
+  input  [7:0] RW0_wdata_0,
+  input  [7:0] RW0_wdata_1,
+  input  [7:0] RW0_wdata_2,
+  input  [7:0] RW0_wdata_3,
+  output [7:0] RW0_rdata_0,
+  output [7:0] RW0_rdata_1,
+  output [7:0] RW0_rdata_2,
+  output [7:0] RW0_rdata_3,
+  input        RW0_wmask_0,
+  input        RW0_wmask_1,
+  input        RW0_wmask_2,
+  input        RW0_wmask_3, // <no_sram>
+  output [9:0]  data_arrays_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_ext_RW0_wmode, // <no_sram>
+  output [31:0] data_arrays_0_ext_RW0_wdata, // <no_sram>
+  input  [31:0] data_arrays_0_ext_RW0_rdata, // <no_sram>
+  output [3:0]  data_arrays_0_ext_RW0_wmask // <no_sram>
+);
+//  wire [9:0] data_arrays_0_ext_RW0_addr; // <no_sram>
+//  wire  data_arrays_0_ext_RW0_en; // <no_sram>
+//  wire  data_arrays_0_ext_RW0_clk; // <no_sram>
+//  wire  data_arrays_0_ext_RW0_wmode; // <no_sram>
+//  wire [31:0] data_arrays_0_ext_RW0_wdata; // <no_sram>
+//  wire [31:0] data_arrays_0_ext_RW0_rdata; // <no_sram>
+//  wire [3:0] data_arrays_0_ext_RW0_wmask; // <no_sram>
+  wire [15:0] _GEN_0 = {RW0_wdata_3,RW0_wdata_2};
+  wire [15:0] _GEN_1 = {RW0_wdata_1,RW0_wdata_0};
+  wire [1:0] _GEN_2 = {RW0_wmask_3,RW0_wmask_2};
+  wire [1:0] _GEN_3 = {RW0_wmask_1,RW0_wmask_0};
+//  data_arrays_0_ext data_arrays_0_ext ( // <no_sram>
+//    .RW0_addr(data_arrays_0_ext_RW0_addr), // <no_sram>
+//    .RW0_en(data_arrays_0_ext_RW0_en), // <no_sram>
+//    .RW0_clk(data_arrays_0_ext_RW0_clk), // <no_sram>
+//    .RW0_wmode(data_arrays_0_ext_RW0_wmode), // <no_sram>
+//    .RW0_wdata(data_arrays_0_ext_RW0_wdata), // <no_sram>
+//    .RW0_rdata(data_arrays_0_ext_RW0_rdata), // <no_sram>
+//    .RW0_wmask(data_arrays_0_ext_RW0_wmask) // <no_sram>
+//  ); // <no_sram>
+  assign data_arrays_0_ext_RW0_clk = RW0_clk;
+  assign data_arrays_0_ext_RW0_en = RW0_en;
+  assign data_arrays_0_ext_RW0_addr = RW0_addr;
+  assign RW0_rdata_0 = data_arrays_0_ext_RW0_rdata[7:0];
+  assign RW0_rdata_1 = data_arrays_0_ext_RW0_rdata[15:8];
+  assign RW0_rdata_2 = data_arrays_0_ext_RW0_rdata[23:16];
+  assign RW0_rdata_3 = data_arrays_0_ext_RW0_rdata[31:24];
+  assign data_arrays_0_ext_RW0_wmode = RW0_wmode;
+  assign data_arrays_0_ext_RW0_wdata = {_GEN_0,_GEN_1};
+  assign data_arrays_0_ext_RW0_wmask = {_GEN_2,_GEN_3};
+endmodule
+module tag_array(
+  input  [5:0]  RW0_addr,
+  input         RW0_en,
+  input         RW0_clk,
+  input         RW0_wmode,
+  input  [20:0] RW0_wdata_0,
+  output [20:0] RW0_rdata_0, // <no_sram>
+  output [5:0]  tag_array_ext_RW0_addr, // <no_sram>
+  output        tag_array_ext_RW0_en, // <no_sram>
+  output        tag_array_ext_RW0_clk, // <no_sram>
+  output        tag_array_ext_RW0_wmode, // <no_sram>
+  output [20:0] tag_array_ext_RW0_wdata, // <no_sram>
+  input  [20:0] tag_array_ext_RW0_rdata // <no_sram>
+);
+//  wire [5:0] tag_array_ext_RW0_addr; // <no_sram>
+//  wire  tag_array_ext_RW0_en; // <no_sram>
+//  wire  tag_array_ext_RW0_clk; // <no_sram>
+//  wire  tag_array_ext_RW0_wmode; // <no_sram>
+//  wire [20:0] tag_array_ext_RW0_wdata; // <no_sram>
+//  wire [20:0] tag_array_ext_RW0_rdata; // <no_sram>
+//  tag_array_ext tag_array_ext ( // <no_sram>
+//    .RW0_addr(tag_array_ext_RW0_addr), // <no_sram>
+//    .RW0_en(tag_array_ext_RW0_en), // <no_sram>
+//    .RW0_clk(tag_array_ext_RW0_clk), // <no_sram>
+//    .RW0_wmode(tag_array_ext_RW0_wmode), // <no_sram>
+//    .RW0_wdata(tag_array_ext_RW0_wdata), // <no_sram>
+//    .RW0_rdata(tag_array_ext_RW0_rdata) // <no_sram>
+//  ); // <no_sram>
+  assign tag_array_ext_RW0_clk = RW0_clk;
+  assign tag_array_ext_RW0_en = RW0_en;
+  assign tag_array_ext_RW0_addr = RW0_addr;
+  assign RW0_rdata_0 = tag_array_ext_RW0_rdata;
+  assign tag_array_ext_RW0_wmode = RW0_wmode;
+  assign tag_array_ext_RW0_wdata = RW0_wdata_0;
+endmodule
+module tag_array_0(
+  input  [6:0]  RW0_addr,
+  input         RW0_en,
+  input         RW0_clk,
+  input         RW0_wmode,
+  input  [18:0] RW0_wdata_0,
+  input  [18:0] RW0_wdata_1,
+  output [18:0] RW0_rdata_0,
+  output [18:0] RW0_rdata_1,
+  input         RW0_wmask_0,
+  input         RW0_wmask_1, // <no_sram>
+  output [6:0]  tag_array_0_ext_RW0_addr, // <no_sram>
+  output        tag_array_0_ext_RW0_en, // <no_sram>
+  output        tag_array_0_ext_RW0_clk, // <no_sram>
+  output        tag_array_0_ext_RW0_wmode, // <no_sram>
+  output [37:0] tag_array_0_ext_RW0_wdata, // <no_sram>
+  input  [37:0] tag_array_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  tag_array_0_ext_RW0_wmask // <no_sram>
+);
+//  wire [6:0] tag_array_0_ext_RW0_addr; // <no_sram>
+//  wire  tag_array_0_ext_RW0_en; // <no_sram>
+//  wire  tag_array_0_ext_RW0_clk; // <no_sram>
+//  wire  tag_array_0_ext_RW0_wmode; // <no_sram>
+//  wire [37:0] tag_array_0_ext_RW0_wdata; // <no_sram>
+//  wire [37:0] tag_array_0_ext_RW0_rdata; // <no_sram>
+//  wire [1:0] tag_array_0_ext_RW0_wmask; // <no_sram>
+//  tag_array_0_ext tag_array_0_ext ( // <no_sram>
+//    .RW0_addr(tag_array_0_ext_RW0_addr), // <no_sram>
+//    .RW0_en(tag_array_0_ext_RW0_en), // <no_sram>
+//    .RW0_clk(tag_array_0_ext_RW0_clk), // <no_sram>
+//    .RW0_wmode(tag_array_0_ext_RW0_wmode), // <no_sram>
+//    .RW0_wdata(tag_array_0_ext_RW0_wdata), // <no_sram>
+//    .RW0_rdata(tag_array_0_ext_RW0_rdata), // <no_sram>
+//    .RW0_wmask(tag_array_0_ext_RW0_wmask) // <no_sram>
+//  ); // <no_sram>
+  assign tag_array_0_ext_RW0_clk = RW0_clk;
+  assign tag_array_0_ext_RW0_en = RW0_en;
+  assign tag_array_0_ext_RW0_addr = RW0_addr;
+  assign RW0_rdata_0 = tag_array_0_ext_RW0_rdata[18:0];
+  assign RW0_rdata_1 = tag_array_0_ext_RW0_rdata[37:19];
+  assign tag_array_0_ext_RW0_wmode = RW0_wmode;
+  assign tag_array_0_ext_RW0_wdata = {RW0_wdata_1,RW0_wdata_0};
+  assign tag_array_0_ext_RW0_wmask = {RW0_wmask_1,RW0_wmask_0};
+endmodule
+module data_arrays_0_0(
+  input  [10:0] RW0_addr,
+  input         RW0_en,
+  input         RW0_clk,
+  input         RW0_wmode,
+  input  [31:0] RW0_wdata_0,
+  input  [31:0] RW0_wdata_1,
+  output [31:0] RW0_rdata_0,
+  output [31:0] RW0_rdata_1,
+  input         RW0_wmask_0,
+  input         RW0_wmask_1, // <no_sram>
+  output [10:0] data_arrays_0_0_ext_RW0_addr, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_en, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_clk, // <no_sram>
+  output        data_arrays_0_0_ext_RW0_wmode, // <no_sram>
+  output [63:0] data_arrays_0_0_ext_RW0_wdata, // <no_sram>
+  input  [63:0] data_arrays_0_0_ext_RW0_rdata, // <no_sram>
+  output [1:0]  data_arrays_0_0_ext_RW0_wmask // <no_sram>
+);
+//  wire [10:0] data_arrays_0_0_ext_RW0_addr; // <no_sram>
+//  wire  data_arrays_0_0_ext_RW0_en; // <no_sram>
+//  wire  data_arrays_0_0_ext_RW0_clk; // <no_sram>
+//  wire  data_arrays_0_0_ext_RW0_wmode; // <no_sram>
+//  wire [63:0] data_arrays_0_0_ext_RW0_wdata; // <no_sram>
+//  wire [63:0] data_arrays_0_0_ext_RW0_rdata; // <no_sram>
+//  wire [1:0] data_arrays_0_0_ext_RW0_wmask; // <no_sram>
+//  data_arrays_0_0_ext data_arrays_0_0_ext ( // <no_sram>
+//    .RW0_addr(data_arrays_0_0_ext_RW0_addr), // <no_sram>
+//    .RW0_en(data_arrays_0_0_ext_RW0_en), // <no_sram>
+//    .RW0_clk(data_arrays_0_0_ext_RW0_clk), // <no_sram>
+//    .RW0_wmode(data_arrays_0_0_ext_RW0_wmode), // <no_sram>
+//    .RW0_wdata(data_arrays_0_0_ext_RW0_wdata), // <no_sram>
+//    .RW0_rdata(data_arrays_0_0_ext_RW0_rdata), // <no_sram>
+//    .RW0_wmask(data_arrays_0_0_ext_RW0_wmask) // <no_sram>
+//  ); // <no_sram>
+  assign data_arrays_0_0_ext_RW0_clk = RW0_clk;
+  assign data_arrays_0_0_ext_RW0_en = RW0_en;
+  assign data_arrays_0_0_ext_RW0_addr = RW0_addr;
+  assign RW0_rdata_0 = data_arrays_0_0_ext_RW0_rdata[31:0];
+  assign RW0_rdata_1 = data_arrays_0_0_ext_RW0_rdata[63:32];
+  assign data_arrays_0_0_ext_RW0_wmode = RW0_wmode;
+  assign data_arrays_0_0_ext_RW0_wdata = {RW0_wdata_1,RW0_wdata_0};
+  assign data_arrays_0_0_ext_RW0_wmask = {RW0_wmask_1,RW0_wmask_0};
+endmodule
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index d40c9cb..5705dd9 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -81,6 +81,68 @@
 /*--------------------------------------*/
 /* User project is instantiated  here   */
 /*--------------------------------------*/
+`ifdef RAM_ON_TOP
+    wire        tag_array_ext_ram_clk;
+    wire        tag_array_ext_ram_csb0;
+    wire        tag_array_ext_ram_web0;
+    wire [3:0]  tag_array_ext_ram_wmask0;
+    wire [7:0]  tag_array_ext_ram_addr0;
+    wire [31:0] tag_array_ext_ram_din0;
+    wire [31:0] tag_array_ext_ram_dout0;
+    wire        tag_array_ext_ram_csb1;
+    wire [7:0]  tag_array_ext_ram_addr1;
+
+    wire [1:0]  data_arrays_0_ext_ram_clk;
+    wire [1:0]  data_arrays_0_ext_ram_csb0;
+    wire [1:0]  data_arrays_0_ext_ram_web0;
+    wire [3:0]  data_arrays_0_ext_ram_wmask00;
+    wire [3:0]  data_arrays_0_ext_ram_wmask01;
+    wire [8:0]  data_arrays_0_ext_ram_addr00;
+    wire [8:0]  data_arrays_0_ext_ram_addr01;
+    wire [31:0] data_arrays_0_ext_ram_din00;
+    wire [31:0] data_arrays_0_ext_ram_din01;
+    wire [31:0] data_arrays_0_ext_ram_dout00;
+    wire [31:0] data_arrays_0_ext_ram_dout01;
+    wire [1:0]  data_arrays_0_ext_ram_csb1;
+    wire [8:0]  data_arrays_0_ext_ram_addr10;
+    wire [8:0]  data_arrays_0_ext_ram_addr11;
+
+    wire        tag_array_0_ext_ram_clk;
+    wire        tag_array_0_ext_ram_csb0;
+    wire        tag_array_0_ext_ram_web0;
+    wire [7:0]  tag_array_0_ext_ram_wmask0;
+    wire [7:0]  tag_array_0_ext_ram_addr0;
+    wire [63:0] tag_array_0_ext_ram_din0;
+    wire [63:0] tag_array_0_ext_ram_dout0;
+    wire        tag_array_0_ext_ram_csb1;
+    wire [7:0]  tag_array_0_ext_ram_addr1;
+
+    wire [3:0]  data_arrays_0_0_ext_ram_clk;
+    wire [3:0]  data_arrays_0_0_ext_ram_csb0;
+    wire [3:0]  data_arrays_0_0_ext_ram_web0;
+    wire [7:0]  data_arrays_0_0_ext_ram_wmask00;
+    wire [7:0]  data_arrays_0_0_ext_ram_wmask01;
+    wire [7:0]  data_arrays_0_0_ext_ram_wmask02;
+    wire [7:0]  data_arrays_0_0_ext_ram_wmask03;
+    wire [8:0]  data_arrays_0_0_ext_ram_addr00;
+    wire [8:0]  data_arrays_0_0_ext_ram_addr01;
+    wire [8:0]  data_arrays_0_0_ext_ram_addr02;
+    wire [8:0]  data_arrays_0_0_ext_ram_addr03;
+    wire [63:0] data_arrays_0_0_ext_ram_din00;
+    wire [63:0] data_arrays_0_0_ext_ram_din01;
+    wire [63:0] data_arrays_0_0_ext_ram_din02;
+    wire [63:0] data_arrays_0_0_ext_ram_din03;
+    wire [63:0] data_arrays_0_0_ext_ram_dout00;
+    wire [63:0] data_arrays_0_0_ext_ram_dout01;
+    wire [63:0] data_arrays_0_0_ext_ram_dout02;
+    wire [63:0] data_arrays_0_0_ext_ram_dout03;
+    wire [3:0]  data_arrays_0_0_ext_ram_csb1;
+    wire [8:0]  data_arrays_0_0_ext_ram_addr10;
+    wire [8:0]  data_arrays_0_0_ext_ram_addr11;
+    wire [8:0]  data_arrays_0_0_ext_ram_addr12;
+    wire [8:0]  data_arrays_0_0_ext_ram_addr13;
+`endif  // RAM_ON_TOP
+
 Marmot Marmot (
 `ifdef USE_POWER_PINS
     .vdda1(vdda1),  // User area 1 3.3V supply
@@ -118,8 +180,341 @@
     .user_clock2(user_clock2),
     // IRQ
     .user_irq(user_irq)
+`ifdef RAM_ON_TOP
+    // RAM signals
+  , .tag_array_ext_ram_clk(tag_array_ext_ram_clk),
+    .tag_array_ext_ram_csb0(tag_array_ext_ram_csb0),
+    .tag_array_ext_ram_web0(tag_array_ext_ram_web0),
+    .tag_array_ext_ram_wmask0(tag_array_ext_ram_wmask0),
+    .tag_array_ext_ram_addr0(tag_array_ext_ram_addr0),
+    .tag_array_ext_ram_din0(tag_array_ext_ram_din0),
+    .tag_array_ext_ram_dout0(tag_array_ext_ram_dout0),
+    .tag_array_ext_ram_csb1(tag_array_ext_ram_csb1),
+    .tag_array_ext_ram_addr1(tag_array_ext_ram_addr1),
+    .data_arrays_0_ext_ram_clk(data_arrays_0_ext_ram_clk),
+    .data_arrays_0_ext_ram_csb0(data_arrays_0_ext_ram_csb0),
+    .data_arrays_0_ext_ram_web0(data_arrays_0_ext_ram_web0),
+    .data_arrays_0_ext_ram_wmask00(data_arrays_0_ext_ram_wmask00),
+    .data_arrays_0_ext_ram_wmask01(data_arrays_0_ext_ram_wmask01),
+    .data_arrays_0_ext_ram_addr00(data_arrays_0_ext_ram_addr00),
+    .data_arrays_0_ext_ram_addr01(data_arrays_0_ext_ram_addr01),
+    .data_arrays_0_ext_ram_din00(data_arrays_0_ext_ram_din00),
+    .data_arrays_0_ext_ram_din01(data_arrays_0_ext_ram_din01),
+    .data_arrays_0_ext_ram_dout00(data_arrays_0_ext_ram_dout00),
+    .data_arrays_0_ext_ram_dout01(data_arrays_0_ext_ram_dout01),
+    .data_arrays_0_ext_ram_csb1(data_arrays_0_ext_ram_csb1),
+    .data_arrays_0_ext_ram_addr10(data_arrays_0_ext_ram_addr10),
+    .data_arrays_0_ext_ram_addr11(data_arrays_0_ext_ram_addr11),
+    .tag_array_0_ext_ram_clk(tag_array_0_ext_ram_clk),
+    .tag_array_0_ext_ram_csb0(tag_array_0_ext_ram_csb0),
+    .tag_array_0_ext_ram_web0(tag_array_0_ext_ram_web0),
+    .tag_array_0_ext_ram_wmask0(tag_array_0_ext_ram_wmask0),
+    .tag_array_0_ext_ram_addr0(tag_array_0_ext_ram_addr0),
+    .tag_array_0_ext_ram_din0(tag_array_0_ext_ram_din0),
+    .tag_array_0_ext_ram_dout0(tag_array_0_ext_ram_dout0),
+    .tag_array_0_ext_ram_csb1(tag_array_0_ext_ram_csb1),
+    .tag_array_0_ext_ram_addr1(tag_array_0_ext_ram_addr1),
+    .data_arrays_0_0_ext_ram_clk(data_arrays_0_0_ext_ram_clk),
+    .data_arrays_0_0_ext_ram_csb0(data_arrays_0_0_ext_ram_csb0),
+    .data_arrays_0_0_ext_ram_web0(data_arrays_0_0_ext_ram_web0),
+    .data_arrays_0_0_ext_ram_wmask00(data_arrays_0_0_ext_ram_wmask00),
+    .data_arrays_0_0_ext_ram_wmask01(data_arrays_0_0_ext_ram_wmask01),
+    .data_arrays_0_0_ext_ram_wmask02(data_arrays_0_0_ext_ram_wmask02),
+    .data_arrays_0_0_ext_ram_wmask03(data_arrays_0_0_ext_ram_wmask03),
+    .data_arrays_0_0_ext_ram_addr00(data_arrays_0_0_ext_ram_addr00),
+    .data_arrays_0_0_ext_ram_addr01(data_arrays_0_0_ext_ram_addr01),
+    .data_arrays_0_0_ext_ram_addr02(data_arrays_0_0_ext_ram_addr02),
+    .data_arrays_0_0_ext_ram_addr03(data_arrays_0_0_ext_ram_addr03),
+    .data_arrays_0_0_ext_ram_din00(data_arrays_0_0_ext_ram_din00),
+    .data_arrays_0_0_ext_ram_din01(data_arrays_0_0_ext_ram_din01),
+    .data_arrays_0_0_ext_ram_din02(data_arrays_0_0_ext_ram_din02),
+    .data_arrays_0_0_ext_ram_din03(data_arrays_0_0_ext_ram_din03),
+    .data_arrays_0_0_ext_ram_dout00(data_arrays_0_0_ext_ram_dout00),
+    .data_arrays_0_0_ext_ram_dout01(data_arrays_0_0_ext_ram_dout01),
+    .data_arrays_0_0_ext_ram_dout02(data_arrays_0_0_ext_ram_dout02),
+    .data_arrays_0_0_ext_ram_dout03(data_arrays_0_0_ext_ram_dout03),
+    .data_arrays_0_0_ext_ram_csb1(data_arrays_0_0_ext_ram_csb1),
+    .data_arrays_0_0_ext_ram_addr10(data_arrays_0_0_ext_ram_addr10),
+    .data_arrays_0_0_ext_ram_addr11(data_arrays_0_0_ext_ram_addr11),
+    .data_arrays_0_0_ext_ram_addr12(data_arrays_0_0_ext_ram_addr12),
+    .data_arrays_0_0_ext_ram_addr13(data_arrays_0_0_ext_ram_addr13)
+`endif  // RAM_ON_TOP
 );
 
+`ifdef RAM_ON_TOP
+  `ifndef VERBOSE
+    `define VERBOSE 0
+  `endif
+
+  //-----------------------------------------------------------------------
+  // D-Cache data
+  sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_ext_ram0 (
+`ifdef USE_POWER_PINS
+    .vccd1  (vccd1),
+    .vssd1  (vssd1),
+`endif
+    .clk0   (data_arrays_0_ext_ram_clk[0]),
+    .csb0   (data_arrays_0_ext_ram_csb0[0]),
+    .web0   (data_arrays_0_ext_ram_web0[0]),
+    .wmask0 (data_arrays_0_ext_ram_wmask00),
+    .addr0  (data_arrays_0_ext_ram_addr00),
+    .din0   (data_arrays_0_ext_ram_din00),
+    .dout0  (data_arrays_0_ext_ram_dout00),
+    .clk1   (data_arrays_0_ext_ram_clk[0]),
+    .csb1   (data_arrays_0_ext_ram_csb1[0]),
+    .addr1  (data_arrays_0_ext_ram_addr10),
+    /* verilator lint_off PINCONNECTEMPTY */
+    .dout1  ()
+    /* verilator lint_on PINCONNECTEMPTY */
+  );  
+
+  sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_ext_ram1 (
+`ifdef USE_POWER_PINS
+    .vccd1  (vccd1),
+    .vssd1  (vssd1),
+`endif
+    .clk0   (data_arrays_0_ext_ram_clk[1]),
+    .csb0   (data_arrays_0_ext_ram_csb0[1]),
+    .web0   (data_arrays_0_ext_ram_web0[1]),
+    .wmask0 (data_arrays_0_ext_ram_wmask01),
+    .addr0  (data_arrays_0_ext_ram_addr01),
+    .din0   (data_arrays_0_ext_ram_din01),
+    .dout0  (data_arrays_0_ext_ram_dout01),
+    .clk1   (data_arrays_0_ext_ram_clk[1]),
+    .csb1   (data_arrays_0_ext_ram_csb1[1]),
+    .addr1  (data_arrays_0_ext_ram_addr11),
+    /* verilator lint_off PINCONNECTEMPTY */
+    .dout1  ()
+    /* verilator lint_on PINCONNECTEMPTY */
+  );  
+
+  //-----------------------------------------------------------------------
+  // D-Cache tag
+  sky130_sram_1kbyte_1rw1r_32x256_8 #(.VERBOSE(`VERBOSE)) tag_array_ext_ram (
+`ifdef USE_POWER_PINS
+    .vccd1  (vccd1),
+    .vssd1  (vssd1),
+`endif
+    .clk0   (tag_array_ext_ram_clk),
+    .csb0   (tag_array_ext_ram_csb0),
+    .web0   (tag_array_ext_ram_web0),
+    .wmask0 (tag_array_ext_ram_wmask0),
+    .addr0  (tag_array_ext_ram_addr0),
+    .din0   (tag_array_ext_ram_din0),
+    .dout0  (tag_array_ext_ram_dout0),
+    .clk1   (tag_array_ext_ram_clk),
+    .csb1   (tag_array_ext_ram_csb1),
+    .addr1  (tag_array_ext_ram_addr1),
+    /* verilator lint_off PINCONNECTEMPTY */
+    .dout1  ()
+    /* verilator lint_on PINCONNECTEMPTY */
+  );  
+
+  //-----------------------------------------------------------------------
+  // I-Cache tag
+  sky130_sram_1kbyte_1rw1r_32x256_8 #(.VERBOSE(`VERBOSE)) tag_array_0_ext_raml (
+`ifdef USE_POWER_PINS
+    .vccd1  (vccd1),
+    .vssd1  (vssd1),
+`endif
+    .clk0   (tag_array_0_ext_ram_clk),
+    .csb0   (tag_array_0_ext_ram_csb0),
+    .web0   (tag_array_0_ext_ram_web0),
+    .wmask0 (tag_array_0_ext_ram_wmask0[3:0]),
+    .addr0  (tag_array_0_ext_ram_addr0),
+    .din0   (tag_array_0_ext_ram_din0[31:0]),
+    .dout0  (tag_array_0_ext_ram_dout0[31:0]),
+    .clk1   (tag_array_0_ext_ram_clk),
+    .csb1   (tag_array_0_ext_ram_csb1),
+    .addr1  (tag_array_0_ext_ram_addr1),
+    /* verilator lint_off PINCONNECTEMPTY */
+    .dout1  ()
+    /* verilator lint_on PINCONNECTEMPTY */
+  );  
+
+  sky130_sram_1kbyte_1rw1r_32x256_8 #(.VERBOSE(`VERBOSE)) tag_array_0_ext_ramh (
+`ifdef USE_POWER_PINS
+    .vccd1  (vccd1),
+    .vssd1  (vssd1),
+`endif
+    .clk0   (tag_array_0_ext_ram_clk),
+    .csb0   (tag_array_0_ext_ram_csb0),
+    .web0   (tag_array_0_ext_ram_web0),
+    .wmask0 (tag_array_0_ext_ram_wmask0[7:4]),
+    .addr0  (tag_array_0_ext_ram_addr0),
+    .din0   (tag_array_0_ext_ram_din0[63:32]),
+    .dout0  (tag_array_0_ext_ram_dout0[63:32]),
+    .clk1   (tag_array_0_ext_ram_clk),
+    .csb1   (tag_array_0_ext_ram_csb1),
+    .addr1  (tag_array_0_ext_ram_addr1),
+    /* verilator lint_off PINCONNECTEMPTY */
+    .dout1  ()
+    /* verilator lint_on PINCONNECTEMPTY */
+  );  
+
+  //-----------------------------------------------------------------------
+  // I-Cache data
+    sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram0l (
+  `ifdef USE_POWER_PINS
+      .vccd1  (vccd1),
+      .vssd1  (vssd1),
+  `endif
+      .clk0   (data_arrays_0_0_ext_ram_clk[0]),
+      .csb0   (data_arrays_0_0_ext_ram_csb0[0]),
+      .web0   (data_arrays_0_0_ext_ram_web0[0]),
+      .wmask0 (data_arrays_0_0_ext_ram_wmask00[3:0]),
+      .addr0  (data_arrays_0_0_ext_ram_addr00),
+      .din0   (data_arrays_0_0_ext_ram_din00[31:0]),
+      .dout0  (data_arrays_0_0_ext_ram_dout00[31:0]),
+      .clk1   (data_arrays_0_0_ext_ram_clk[0]),
+      .csb1   (data_arrays_0_0_ext_ram_csb1[0]),
+      .addr1  (data_arrays_0_0_ext_ram_addr10),
+      /* verilator lint_off PINCONNECTEMPTY */
+      .dout1  ()
+      /* verilator lint_on PINCONNECTEMPTY */
+    );  
+
+    sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram0h (
+  `ifdef USE_POWER_PINS
+      .vccd1  (vccd1),
+      .vssd1  (vssd1),
+  `endif
+      .clk0   (data_arrays_0_0_ext_ram_clk[0]),
+      .csb0   (data_arrays_0_0_ext_ram_csb0[0]),
+      .web0   (data_arrays_0_0_ext_ram_web0[0]),
+      .wmask0 (data_arrays_0_0_ext_ram_wmask00[7:4]),
+      .addr0  (data_arrays_0_0_ext_ram_addr00),
+      .din0   (data_arrays_0_0_ext_ram_din00[63:32]),
+      .dout0  (data_arrays_0_0_ext_ram_dout00[63:32]),
+      .clk1   (data_arrays_0_0_ext_ram_clk[0]),
+      .csb1   (data_arrays_0_0_ext_ram_csb1[0]),
+      .addr1  (data_arrays_0_0_ext_ram_addr10),
+      /* verilator lint_off PINCONNECTEMPTY */
+      .dout1  ()
+      /* verilator lint_on PINCONNECTEMPTY */
+    );  
+
+    sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram1l (
+  `ifdef USE_POWER_PINS
+      .vccd1  (vccd1),
+      .vssd1  (vssd1),
+  `endif
+      .clk0   (data_arrays_0_0_ext_ram_clk[1]),
+      .csb0   (data_arrays_0_0_ext_ram_csb0[1]),
+      .web0   (data_arrays_0_0_ext_ram_web0[1]),
+      .wmask0 (data_arrays_0_0_ext_ram_wmask01[3:0]),
+      .addr0  (data_arrays_0_0_ext_ram_addr01),
+      .din0   (data_arrays_0_0_ext_ram_din01[31:0]),
+      .dout0  (data_arrays_0_0_ext_ram_dout01[31:0]),
+      .clk1   (data_arrays_0_0_ext_ram_clk[1]),
+      .csb1   (data_arrays_0_0_ext_ram_csb1[1]),
+      .addr1  (data_arrays_0_0_ext_ram_addr11),
+      /* verilator lint_off PINCONNECTEMPTY */
+      .dout1  ()
+      /* verilator lint_on PINCONNECTEMPTY */
+    );  
+
+    sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram1h (
+  `ifdef USE_POWER_PINS
+      .vccd1  (vccd1),
+      .vssd1  (vssd1),
+  `endif
+      .clk0   (data_arrays_0_0_ext_ram_clk[1]),
+      .csb0   (data_arrays_0_0_ext_ram_csb0[1]),
+      .web0   (data_arrays_0_0_ext_ram_web0[1]),
+      .wmask0 (data_arrays_0_0_ext_ram_wmask01[7:4]),
+      .addr0  (data_arrays_0_0_ext_ram_addr01),
+      .din0   (data_arrays_0_0_ext_ram_din01[63:32]),
+      .dout0  (data_arrays_0_0_ext_ram_dout01[63:32]),
+      .clk1   (data_arrays_0_0_ext_ram_clk[1]),
+      .csb1   (data_arrays_0_0_ext_ram_csb1[1]),
+      .addr1  (data_arrays_0_0_ext_ram_addr11),
+      /* verilator lint_off PINCONNECTEMPTY */
+      .dout1  ()
+      /* verilator lint_on PINCONNECTEMPTY */
+    );  
+
+    sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram2l (
+  `ifdef USE_POWER_PINS
+      .vccd1  (vccd1),
+      .vssd1  (vssd1),
+  `endif
+      .clk0   (data_arrays_0_0_ext_ram_clk[2]),
+      .csb0   (data_arrays_0_0_ext_ram_csb0[2]),
+      .web0   (data_arrays_0_0_ext_ram_web0[2]),
+      .wmask0 (data_arrays_0_0_ext_ram_wmask02[3:0]),
+      .addr0  (data_arrays_0_0_ext_ram_addr02),
+      .din0   (data_arrays_0_0_ext_ram_din02[31:0]),
+      .dout0  (data_arrays_0_0_ext_ram_dout02[31:0]),
+      .clk1   (data_arrays_0_0_ext_ram_clk[2]),
+      .csb1   (data_arrays_0_0_ext_ram_csb1[2]),
+      .addr1  (data_arrays_0_0_ext_ram_addr12),
+      /* verilator lint_off PINCONNECTEMPTY */
+      .dout1  ()
+      /* verilator lint_on PINCONNECTEMPTY */
+    );  
+
+    sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram2h (
+  `ifdef USE_POWER_PINS
+      .vccd1  (vccd1),
+      .vssd1  (vssd1),
+  `endif
+      .clk0   (data_arrays_0_0_ext_ram_clk[2]),
+      .csb0   (data_arrays_0_0_ext_ram_csb0[2]),
+      .web0   (data_arrays_0_0_ext_ram_web0[2]),
+      .wmask0 (data_arrays_0_0_ext_ram_wmask02[7:4]),
+      .addr0  (data_arrays_0_0_ext_ram_addr02),
+      .din0   (data_arrays_0_0_ext_ram_din02[63:32]),
+      .dout0  (data_arrays_0_0_ext_ram_dout02[63:32]),
+      .clk1   (data_arrays_0_0_ext_ram_clk[2]),
+      .csb1   (data_arrays_0_0_ext_ram_csb1[2]),
+      .addr1  (data_arrays_0_0_ext_ram_addr12),
+      /* verilator lint_off PINCONNECTEMPTY */
+      .dout1  ()
+      /* verilator lint_on PINCONNECTEMPTY */
+    );  
+
+    sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram3l (
+  `ifdef USE_POWER_PINS
+      .vccd1  (vccd1),
+      .vssd1  (vssd1),
+  `endif
+      .clk0   (data_arrays_0_0_ext_ram_clk[3]),
+      .csb0   (data_arrays_0_0_ext_ram_csb0[3]),
+      .web0   (data_arrays_0_0_ext_ram_web0[3]),
+      .wmask0 (data_arrays_0_0_ext_ram_wmask03[3:0]),
+      .addr0  (data_arrays_0_0_ext_ram_addr03),
+      .din0   (data_arrays_0_0_ext_ram_din03[31:0]),
+      .dout0  (data_arrays_0_0_ext_ram_dout03[31:0]),
+      .clk1   (data_arrays_0_0_ext_ram_clk[3]),
+      .csb1   (data_arrays_0_0_ext_ram_csb1[3]),
+      .addr1  (data_arrays_0_0_ext_ram_addr13),
+      /* verilator lint_off PINCONNECTEMPTY */
+      .dout1  ()
+      /* verilator lint_on PINCONNECTEMPTY */
+    );  
+
+    sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram3h (
+  `ifdef USE_POWER_PINS
+      .vccd1  (vccd1),
+      .vssd1  (vssd1),
+  `endif
+      .clk0   (data_arrays_0_0_ext_ram_clk[3]),
+      .csb0   (data_arrays_0_0_ext_ram_csb0[3]),
+      .web0   (data_arrays_0_0_ext_ram_web0[3]),
+      .wmask0 (data_arrays_0_0_ext_ram_wmask03[7:4]),
+      .addr0  (data_arrays_0_0_ext_ram_addr03),
+      .din0   (data_arrays_0_0_ext_ram_din03[63:32]),
+      .dout0  (data_arrays_0_0_ext_ram_dout03[63:32]),
+      .clk1   (data_arrays_0_0_ext_ram_clk[3]),
+      .csb1   (data_arrays_0_0_ext_ram_csb1[3]),
+      .addr1  (data_arrays_0_0_ext_ram_addr13),
+      /* verilator lint_off PINCONNECTEMPTY */
+      .dout1  ()
+      /* verilator lint_on PINCONNECTEMPTY */
+    );  
+`endif  // data_arrays_0_0_ext_ram_ON_TOP
+
 endmodule // user_project_wrapper
 
 `default_nettype wire
